2 Riparazione del set di caratteri e delle regole di confronto del database Zabbix
MySQL/MariaDB
Storicamente, MySQL e i suoi derivati utilizzavano 'utf8' come alias di utf8mb3 - l'implementazione a 3 byte di MySQL dello standard UTF8, che è 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'. A partire da Zabbix 6.0, 'utf8mb4' è supportato. Per evitare problemi futuri, è fortemente consigliato usare 'utf8mb4'. Un altro vantaggio del passaggio a 'utf8mb4' è il supporto dei caratteri Unicode supplementari.
Poiché le versioni precedenti a Zabbix 6.0 non conoscono utf8mb4, assicurarsi di aggiornare prima il server Zabbix e lo schema 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.
Ad 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 vede, il set di caratteri qui 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 'utf8mb4' dovrebbe richiedere leggermente più spazio su disco.
7. Se non ci sono errori, potrebbe essere opportuno creare una copia di backup del database con il database corretto.
8. Avviare Zabbix.