2 Riparazione del set di caratteri e delle regole di confronto del database Zabbix
MySQL/MariaDB
Storicamente, MySQL e i suoi derivati hanno usato 'utf8' come alias di utf8mb3, l'implementazione a 3 byte di MySQL dello standard UTF8, che invece è a 4 byte. A partire da MySQL 8.0.28 e MariaDB 10.6.1, il set di caratteri 'utf8mb3' è deprecato e a un certo punto il suo supporto verrà rimosso, mentre 'utf8' diventerà un riferimento a 'utf8mb4'. Da Zabbix 6.0, 'utf8mb4' è supportato. Per evitare problemi futuri, è fortemente consigliato usare 'utf8mb4'. Un altro vantaggio del passaggio a 'utf8mb4' è il supporto ai caratteri Unicode supplementari.
Poiché le versioni precedenti a Zabbix 6.0 non riconoscono utf8mb4, assicurarsi prima di aggiornare Zabbix server e lo schema del DB alla versione 6.0.x o successiva prima di eseguire la conversione a utf8mb4.
1. Verificare il set di caratteri e la collation del database.
Per esempio:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin2 | latin2 _general_ci |
+--------------------------+----------------------+
Oppure:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_bin |
+--------------------------+----------------------+
Come si può vedere, qui il set di caratteri non è 'utf8mb4' e la collation non è 'utf8mb4_bin', quindi è necessario correggerli.
2. Arrestare Zabbix.
3. Creare una copia di backup del database!
4. Correggere il set di caratteri e la collation a livello di database:
alter database <your DB name> character set utf8mb4 collate utf8mb4_bin;
Valori corretti:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_bin |
+--------------------------+----------------------+
5. Caricare lo script per correggere il set di caratteri e la collation a livello di tabella e colonna:
mysql <your DB name> < utf8mb4_convert.sql
6. Eseguire lo script:
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;
Si noti che è previsto che 'utf8mb4' consumi leggermente più spazio su disco.
7. Se non ci sono errori, si consiglia di creare una copia di backup del database corretto.
8. Avviare Zabbix.