2 Исправление набора символов и сопоставления для базы данных Zabbix

MySQL/MariaDB

Исторически MySQL и производные от него СУБД использовали 'utf8' как псевдоним для utf8mb3 — собственной 3-байтовой реализации стандартного UTF8 в MySQL, который является 4-байтовым. Начиная с MySQL 8.0.28 и MariaDB 10.6.1, набор символов 'utf8mb3' считается устаревшим, и в какой-то момент его поддержка будет прекращена, тогда как 'utf8' станет ссылкой на 'utf8mb4'. Начиная с Zabbix 6.0, поддерживается 'utf8mb4'. Во избежание проблем в будущем настоятельно рекомендуется использовать 'utf8mb4'. Еще одним преимуществом перехода на 'utf8mb4' является поддержка дополнительных символов Unicode.

Поскольку версии до Zabbix 6.0 не поддерживают utf8mb4, перед выполнением преобразования в utf8mb4 сначала обязательно обновите сервер Zabbix и схему БД до версии 6.0.x или новее.

1. Проверьте набор символов и сопоставление базы данных.

Например:

mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin2                   | latin2 _general_ci   |
+--------------------------+----------------------+

Или:

mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8                     | utf8_bin             |
+--------------------------+----------------------+

Как видно, здесь набор символов не 'utf8mb4', а сопоставление не 'utf8mb4_bin', поэтому их необходимо исправить.

2. Остановите Zabbix.

3. Создайте резервную копию базы данных!

4. Исправьте набор символов и сопоставление на уровне базы данных:

alter database <your DB name> character set utf8mb4 collate utf8mb4_bin;

Исправленные значения:

mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4                  | utf8mb4_bin          |
+--------------------------+----------------------+ 

5. Загрузите скрипт для исправления набора символов и сопоставления на уровне таблиц и столбцов:

mysql <your DB name> < utf8mb4_convert.sql

6. Выполните скрипт:

               SET @ZABBIX_DATABASE = '<your DB name>';
If MariaDB →  set innodb_strict_mode = OFF;        
               CALL zbx_convert_utf8();
If MariaDB →  set innodb_strict_mode = ON;   
               drop procedure zbx_convert_utf8;

Обратите внимание, что 'utf8mb4', как ожидается, будет занимать немного больше места на диске.

7. Если ошибок нет, вы можете создать резервную копию базы данных с исправленной базой данных.

8. Запустите Zabbix.