Zabbix升级 - 数据库升级失败

时间:2017-11-14 15:38:26

标签: mysql sql zabbix

编辑:我应该在ServerFault上创建这篇文章,错误的标签,抱歉。

我正在尝试升级我的Zabbix服务器(MySQL DB)。 当前版本是2.4.8,我想将其更新为3.4.4

安装进展顺利。当我启动zabbix-server进程时,数据库开始升级,然后停止并显示以下错误消息:

[Z3005] query failed: [1034] Incorrect key file for table 'alerts'; try to repair it [alter table alerts add p_eventid bigint unsigned]

所以,我停止了zabbix-server,做了“alter table alerts add p_eventid bigint unsigned”,重启了zabbix-server,现在收到了这条错误信息:

[Z3005] query failed: [1060] Duplicate column name 'p_eventid' [alter table alerts add p_eventid bigint unsigned]

这对我来说有点麻烦,因为错误信息不同,但建议的解决方案仍然是相同的,并且已经完成。

我做了一些研究,发现this ZBX bug report可能有用,但我不知道如何应用变通方法,因为我不是SQL的专家。据我所知,警报表中有一个缺失的索引(alerts_7)。在谷歌搜索之后,我尝试使用以下命令创建它:

create INDEX on alerts (p_eventid) USING BTREE;

仍有错误(第二个)。

任何人都有这种情况,并找到了如何解决它?

3 个答案:

答案 0 :(得分:1)

[Z3005] query failed: [1060] Duplicate column name 'p_eventid' [alter table alerts add p_eventid bigint unsigned]表示升级脚本正在尝试向alerts表添加列,但当前存在具有该名称的列! (可能来自先前失败的升级尝试)

您需要首先缓解导致其失败的所有其他问题,然后使用

删除该列

alter table alerts drop p_eventid;

并再次尝试运行zabbix_server以重试数据库升级。

答案 1 :(得分:0)

方括号中的部分不是建议,而是尝试的命令。现在它失败了,因为列已经存在。

在这种情况下,删除该列并再次启动Zabbix服务器可能就足够了。确保在开始升级之前进行数据库备份。

答案 2 :(得分:0)

最后还有一些时间来解决这个问题,问题是tmp目录太小而无法进行升级操作。更改my.cnf中的tmp路径并重新启动升级后,一切都按预期工作!