2 修复Zabbix数据库字符集与排序规则

MySQL/MariaDB 数据库

1. 检查数据库字符集(character)和排序规则(collation)。

例如:

  1. mysql> SELECT @@character_set_database, @@collation_database;
  2. +--------------------------+----------------------+
  3. | @@character_set_database | @@collation_database |
  4. +--------------------------+----------------------+
  5. | utf8mb4 | utf8mb4_general_ci |
  6. +--------------------------+----------------------+

如我们所见,此处数据库的字符集不是’utf8’,排序规则不是’utf8_bin’,因此我们需要对其进行修复。

2. 停止Zabbix服务。

3. 请务必创建一个数据库备份!

4. 在数据库模式下,修改字符集和排序规则:

  1. alter database <您的Zabbix数据库名称> character set utf8 collate utf8_bin;

验证修改结果:

  1. mysql> SELECT @@character_set_database, @@collation_database;
  2. +--------------------------+----------------------+
  3. | @@character_set_database | @@collation_database |
  4. +--------------------------+----------------------+
  5. | utf8 | utf8_bin |
  6. +--------------------------+----------------------+

5. 下载脚本 在数据库表和列模式下去修改字符集和排序规格:

  1. mysql <您的Zabbix数据库名称> < utf8_convert.sql

6. 执行脚本:

  1. SET @ZABBIX_DATABASE = '<您的Zabbix数据库名称>';
  2. If MariaDB -> set innodb_strict_mode = OFF;
  3. CALL zbx_convert_utf8();
  4. If MariaDB -> set innodb_strict_mode = ON;
  5. drop procedure zbx_convert_utf8;

请注意该操作,数据字符集编码将直接在硬盘上更改。例如,将 Æ, Ñ, Ö 之类的字符从’latin1’ 转换成’utf8’事,他们字节大小,将从1字节变成2字节。因此,在更改数据库的字符集操作,可能需要比之前更多的空间。

7. 如果没有错误,您可以创建一个新的更改过字符集的数据库备份副本,以备不测。 8. 启动Zabbix 服务。