Zabbix 升级 - 数据库升级失败

Zabbix Upgrade - Database upgrade failed

编辑:我应该在 ServerFault 上创建这个 post,错误的选项卡,抱歉。

我今天正在尝试升级我的 Zabbix 服务器 (MySQL 数据库)。 当前版本是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 方面的专家。据我所知,警报 table (alerts_7) 中缺少索引。在谷歌搜索了一下之后,我尝试使用以下命令创建它:

create INDEX on alerts (p_eventid) USING BTREE;

仍然出错(第二个)。

有人遇到过这种情况,并知道如何解决吗?

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

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

终于有时间解决这个问题了,问题是tmp目录对于升级操作来说太小了。在 my.cnf 中更改 tmp 路径并重新启动升级后,一切都按预期进行!

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

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

删除该列

alter table alerts drop p_eventid;

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