2 Réparation du jeu de caractères et de la collation de la base de données Zabbix
MySQL/MariaDB
Historiquement, MySQL et ses dérivés utilisaient 'utf8' comme alias de utf8mb3 - l'implémentation 3 octets de la norme UTF8 propre à MySQL, qui est sur 4 octets. À partir de MySQL 8.0.28 et MariaDB 10.6.1, le jeu de caractères 'utf8mb3' est obsolète et, à terme, sa prise en charge sera supprimée, tandis que 'utf8' deviendra une référence à 'utf8mb4'. Depuis Zabbix 6.0, 'utf8mb4' est pris en charge. Pour éviter de futurs problèmes, il est fortement recommandé d'utiliser 'utf8mb4'. Un autre avantage du passage à 'utf8mb4' est la prise en charge des caractères Unicode supplémentaires.
Comme les versions antérieures à Zabbix 6.0 ne connaissent pas utf8mb4, assurez-vous de d'abord mettre à niveau le serveur Zabbix et le schéma de base de données vers la version 6.0.x ou ultérieure avant d'exécuter la conversion utf8mb4.
1. Vérifiez le jeu de caractères et la collation de la base de données.
Par exemple :
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin2 | latin2 _general_ci |
+--------------------------+----------------------+
Ou :
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_bin |
+--------------------------+----------------------+
Comme on le voit, le jeu de caractères ici n'est pas 'utf8mb4' et la collation n'est pas 'utf8mb4_bin', il faut donc les corriger.
2. Arrêtez Zabbix.
3. Créez une copie de sauvegarde de la base de données !
4. Corrigez le jeu de caractères et la collation au niveau de la base de données :
alter database <your DB name> character set utf8mb4 collate utf8mb4_bin;
Valeurs corrigées :
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_bin |
+--------------------------+----------------------+
5. Chargez le script pour corriger le jeu de caractères et la collation au niveau des tables et des colonnes :
mysql <your DB name> < utf8mb4_convert.sql
6. Exécutez le script :
SET @ZABBIX_DATABASE = '<your DB name>';
Si MariaDB → set innodb_strict_mode = OFF;
CALL zbx_convert_utf8();
Si MariaDB → set innodb_strict_mode = ON;
drop procedure zbx_convert_utf8;
Veuillez noter que 'utf8mb4' devrait consommer légèrement plus d'espace disque.
7. Si aucune erreur ne s'est produite, vous pouvez créer une copie de sauvegarde de la base de données avec la base de données corrigée.
8. Démarrez Zabbix.