解决Zabbix数据库中表的字符集或排序规则不受支持的问题

warning: 这篇文章距离上次修改已过285天,其中的内容可能已经有所变动。

前言:
在使用最新版zabbix(6.2)通过docker镜像来部署,结果页面告警“Zabbix数据库中表的字符集或排序规则不受支持*后面一堆数据表及字段”;

解决方案:
1:调整数据库字符集和排列规则
参考Zabbix官方文档Zabbix用户手册中第二章第二节内容:修复Zabbix数据库字符集与排序规则

https://www.zabbix.com/documentation/5.0/zh/manual/appendix/install/db_charset_coll 作参考;

首先停止Zabbix服务,在对数据库进行备份后,查询当前所使用的字符集和排序规则,执行sql指令:

1371745-20220225112836645-465646129.png1371745-20220225112836645-465646129.png

1371745-20220225112836645-465646129.png1371745-20220225112836645-465646129.png

SELECT @@character_set_database, @@collation_database;

根据返回结果得知,默认字符集为utf8mb4,排序规则utf8mb4_0900_ai_ci,当前字符集符合要求,但是排序规则需要变更。

调整数据库字符集(character)和排序规则(collation),执行sql指令:

alter database ‘zabbix’ character set utf8mb4 collate utf8mb4_bin;
请注意: 如涉及变更字符集,可能会导致数据库内容问题,需要将此库进行全量备份并进行离线调整,此部分内容未包含在本文之中
再次执行“查询当前所使用的字符集和排序规则”指令,返回结果已符合要求。
2:调整表排列规则
启动Zabbix服务,各项功能运行正常,警告并为消除。停止Zabbix服务。
1371745-20220225112836645-465646129.png1371745-20220225112836645-465646129.png

1371745-20221216093950844-635836411.png1371745-20221216093950844-635836411.png

执行sql指令,匹配zabbix库中排列规则为utf8mb4_0900_ai_ci的表并输出语句

SELECT CONCAT("ALTER TABLE ", TABLE_NAME," CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;") AS ExecuteTheString FROM information_schema.`COLUMNS` WHERE table_schema ="zabbix" AND COLLATION_NAME ="utf8mb4_0900_ai_ci";

1371745-20220225112836645-465646129.png1371745-20220225112836645-465646129.png

输出语句类似于如下所示的若干(如上图);
将所有输出的语句复制并执行(如下图),即可完成对所有不符合要求表的排列规则调整。

1371745-20220225112836645-465646129.png1371745-20220225112836645-465646129.png

启动Zabbix服务,告警消失。

添加新评论

icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif