2 修复Zabbix数据库字符集与排序规则
MySQL/MariaDB 数据库
1. 检查数据库字符集(character)和排序规则(collation)。
例如:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_general_ci |
+--------------------------+----------------------+
如我们所见,此处数据库的字符集不是’utf8’,排序规则不是’utf8_bin’,因此我们需要对其进行修复。
2. 停止Zabbix服务。
3. 请务必创建一个数据库备份!
4. 在数据库模式下,修改字符集和排序规则:
alter database <您的Zabbix数据库名称> character set utf8 collate utf8_bin;
验证修改结果:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_bin |
+--------------------------+----------------------+
5. 下载脚本 在数据库表和列模式下去修改字符集和排序规格:
mysql <您的Zabbix数据库名称> < utf8_convert.sql
6. 执行脚本:
SET @ZABBIX_DATABASE = '<您的Zabbix数据库名称>';
If MariaDB -> set innodb_strict_mode = OFF;
CALL zbx_convert_utf8();
If MariaDB -> set innodb_strict_mode = ON;
drop procedure zbx_convert_utf8;
请注意该操作,数据字符集编码将直接在硬盘上更改。例如,将 Æ, Ñ, Ö 之类的字符从’latin1’ 转换成’utf8’事,他们字节大小,将从1字节变成2字节。因此,在更改数据库的字符集操作,可能需要比之前更多的空间。
7. 如果没有错误,您可以创建一个新的更改过字符集的数据库备份副本,以备不测。 8. 启动Zabbix 服务。