[comment]: # translation:outdated

[comment]: # ({609a8e9d-609a8e9d})
# 2. Восстановление набора символов и сопоставления базы данных Zabbix

[comment]: # ({/609a8e9d-609a8e9d})

[comment]: # ({fd2a288b-25eef83a})
#### MySQL/MariaDB

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

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

**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.** Загрузите
[скрипт](../../../../assets/en/manual/appendix/install/utf8mb4_convert.sql), чтобы исправить набор символов и сопоставление на уровне таблицы и столбца:

    mysql <your DB name> < utf8mb4_convert.sql

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

                   SET @ZABBIX_DATABASE = '<имя вашей базы данных>';
    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.

[comment]: # ({/fd2a288b-25eef83a})
