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

MySQL/MariaDB

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

Например:

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 <your DB name> character set utf8 collate utf8_bin;

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

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

5. Загрузите скрипт, чтобы исправить набор символов и сопоставление на уровне таблицы и столбца:

mysql <your DB name> < utf8_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;

Обратите внимание, что кодировка данных на диске будет изменена. Например, при преобразовании таких символов, как Æ, Ñ, Ö из latin1 в utf8, они перейдут с 1 байта на 2 байта. Таким образом, для исправленной базы данных может потребоваться больше места, чем раньше.

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

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