Исторически, MySQL и произодные от неё использовали 'utf8' как синоним для utf8mb3 - собственная 3-байтовая реализация командой разработчиков MySQL стандарта UTF8, который является 4-байтовым. Начиная с версии MySQL 8.0.28 и MariaDB 10.6.1, набор символов 'utf8mb3' является устаревшим и в какой-то момент его поддержка будет прекращена, в то время как 'utf8' станет ссылкой на 'utf8mb4'. Начиная с версии Zabbix 6.0, поддерживается 'utf8mb4'. Во избежание проблем в будущем, строго рекомендуется использовать 'utf8mb4'. Другим преимуществом переключения на 'utf8mb4' является поддержка дополнительных символов Юникода.
Поскольку версии 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. Исправьте набор символов и сопоставление на уровне базы данных:
Исправленные значения:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_bin |
+--------------------------+----------------------+
5. Загрузите скрипт, чтобы исправить набор символов и сопоставление на уровне таблицы и столбца:
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.