Zabbix为数据库升级主键

问题:Zabbix升级7.0后,前端页面系统信息内显示“数据库历史数据表使用主键:否”

MySQL停机升级主键

1. 先检查下MySQL配置,使用语句
SELECT @@secure_file_priv;

如果执行结果是NULL或者固定的路径,需要修改MySQL配置

修改my.cnf,在[mysqld]配置部分新增
secure_file_priv = ""

重启MySQL生效,修改成功后再次执行语句,正确的结果为空

2. 导入Zabbix源码包database/mysql/option-patches/history_upgrade_prepare.sql,这个脚本会重命名旧表并创建新表

3. 停止Zabbix Server服务

4. 将旧表数据迁移到新表

SET @@max_execution_time=0;
INSERT IGNORE INTO history SELECT * FROM history_old;
INSERT IGNORE INTO history_uint SELECT * FROM history_uint_old;
INSERT IGNORE INTO history_str SELECT * FROM history_str_old;
INSERT IGNORE INTO history_log SELECT * FROM history_log_old;
INSERT IGNORE INTO history_text SELECT * FROM history_text_old;

5. 迁移完成后删除旧表

DROP TABLE history_old;
DROP TABLE history_uint_old;
DROP TABLE history_str_old;
DROP TABLE history_log_old;
DROP TABLE history_text_old;

来源:https://www.zabbix.com/documentation/current/zh/manual/appendix/install/db_primary_keys