2 Преправка скупа карактера и поређења у Zabbix бази података

MySQL/MariaDB

Историјски гледано, MySQL и деривати су користили 'utf8' као псеудоним за utf8mb3 - MySQL сопствену 3-бајтну имплементацију стандардног UTF8, који је 4-бајтни. Почевши од MySQL 8.0.28 и MariaDB 10.6.1, 'utf8mb3' је застарео и у неком тренутку ће подршка за њега бити укинута, док ће 'utf8' постати референца на 'utf8mb4'. Од Zabbix-а 6.0, 'utf8mb4' је подржан. Да би се избегли будући проблеми, топло се препоручује да користите 'utf8mb4'. Још једна предност преласка на 'utf8mb4' је подршка за допунске Unicode карактере.

Пошто верзије пре Zabbix-а 6.0 не подржавају utf8mb4, обавезно прво надоградите Zabbix сервер и DB шему на 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. Учитајте скрипт да поправите скуп карактера и поређања на нивоу табеле и колоне:

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.