使用Helm部署Cetic/Zabbix时数据库版本不匹配问题求助
问题描述
按照指定Helm仓库的3.1.1版本部署说明,在Kubernetes中通过Helm部署Zabbix,执行以下命令后无法访问Zabbix网页,弹出数据库版本不匹配错误:
helm repo add cetic https://cetic.github.io/helm-charts helm repo update helm show values cetic/zabbix > /Users/xiaojueguan/code/AMD/workplace/docs/infra/zabbix/zabbix_values.yaml helm upgrade --install zabbix cetic/zabbix \ --dependency-update \ --create-namespace \ -f /Users/xiaojueguan/code/AMD/workplace/docs/infra/zabbix/zabbix_values.yaml -n monitoring --debug kubectl get pods -n monitoring

错误提示:你的数据库版本:6030000。要求版本:6000000。
已尝试操作
- 登录PostgreSQL服务器,尝试修改
dbversion表的mandatory字段为6030000,但操作失败,执行的命令如下:
k get secrets zabbixdb-pguser-zabbix --template={{.data.password}} | base64 -D psql -h 10.244.0.151 -U zabbix use zabbix update dbversion set mandatory=6030000 flush privileges
注:上述命令存在PostgreSQL语法错误,切换数据库应使用
\c zabbix,且PostgreSQL无flush privileges命令。
- 将PostgreSQL版本从14.4更换为13.8,问题仍未解决。
补充说明
从Zabbix代码逻辑可知,数据库版本取自dbversion表,前端要求的版本由ZABBIX_DB_VERSION常量定义(值为6020000)。因无法修改代码,计划从数据库端解决问题,考虑两个方向:
- 修改
dbversion表的对应字段 - 使用与当前Zabbix版本适配的PostgreSQL版本
相关代码逻辑:
/** * 检查连接的数据库版本是否与前端版本匹配。 * * @return bool */ public function checkDbVersion() { if (!$this->checkDbVersionTable()) { return false; } $version = DBfetch(DBselect('SELECT dv.mandatory FROM dbversion dv')); if ($version['mandatory'] != ZABBIX_DB_VERSION) { $this->setError(_s('Zabbix数据库版本不符合当前要求。你的数据库版本:%1$s。要求版本:%2$s。请联系系统管理员。', $version['mandatory'], ZABBIX_DB_VERSION )); return false; } return true; }
常量定义:
define('ZABBIX_DB_VERSION', 6020000);
内容的提问来源于stack exchange,提问作者xiaojueguan
相关产品推荐
相关产品推荐

