沫延说
沫延说

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

前言

为了业务可靠性,在阿里云搭建了一套Zabbix,使用阿里云RDS(MySql 8.0)作为数据库,根据Zabbix官方文档,使用utf8mb4作为字符集,但创建库时并未要求选择排序规则集,故引发“警告”级告警“数据库中表的字符集或排序规则不受支持”

 

解决方案

第一步:调整数据库字符集和排列规则

首先登录指定库,本文以zabbix作为示例库名,如使用RDS产品可使用DMS进行登录,

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

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

SELECT @@character_set_database, @@collation_database;

返回结果参考如下所示:

+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4                  | utf8mb4_0900_ai_ci   |
+--------------------------+----------------------+

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

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

alter database ‘zabbix’ character set utf8mb4 collate utf8mb4_bin;

请注意
如涉及变更字符集,可能会导致数据库内容问题,需要将此库进行全量备份并进行离线调整,此部分内容未包含在本文之中

再次执行“查询当前所使用的字符集和排序规则”指令,返回结果已符合要求。

 

第二步:调整表排列规则

启动Zabbix服务,各项功能运行正常,警告并为消除。停止Zabbix服务。

执行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";

输出语句类似于如下所示的若干:

ALTER TABLE widget_field CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

 

将所有输出的语句复制并执行,即可完成对所有不符合要求表的排列规则调整。

启动Zabbix服务,告警消失。

 

 

没有标签
首页      运维      Zabbix      解决Zabbix数据库中表的字符集或排序规则不受支持的问题

Morton.L

文章作者

发表评论

textsms
account_circle
email

沫延说

解决Zabbix数据库中表的字符集或排序规则不受支持的问题
前言 为了业务可靠性,在阿里云搭建了一套Zabbix,使用阿里云RDS(MySql 8.0)作为数据库,根据Zabbix官方文档,使用utf8mb4作为字符集,但创建库时并未要求选择排序规则集,故引发“警告…
扫描二维码继续阅读
2022-08-01