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 par MySQL du standard UTF8, qui est en réalité sur 4 octets. À partir de MySQL 8.0.28 et MariaDB 10.6.1, le jeu de caractères « utf8mb3 » est déprécié et, à terme, sa prise en charge sera abandonnée, tandis que « utf8 » deviendra une référence à « utf8mb4 ». Depuis Zabbix 6.0, « utf8mb4 » est pris en charge. Afin d’éviter des problèmes à l’avenir, 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 prennent pas en charge utf8mb4, assurez-vous d’abord de 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 vers utf8mb4.
1. Vérifiez le jeu de caractères et le classement 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 nous pouvons le voir, le jeu de caractères ici n’est pas « utf8mb4 » et le classement n’est pas « utf8mb4_bin », nous devons 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 le classement 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 le classement 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>';
If MariaDB → set innodb_strict_mode = OFF;
CALL zbx_convert_utf8();
If 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. S’il n’y a pas d’erreurs, vous pouvez créer une copie de sauvegarde de la base de données corrigée.
8. Démarrez Zabbix.