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 pour utf8mb3 - la propre implémentation de 3 octets de MySQL de l'UTF8 standard, qui est de 4 octets. À partir de MySQL 8.0.28 et MariaDB 10.6.1, le jeu de caractères 'utf8mb3' est obsolète et à un moment donné, son support sera abandonné 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 de caractères Unicode supplémentaires.

Comme les versions antérieures à Zabbix 6.0 ne connaissent pas utf8mb4, assurez-vous d'abord de mettre à niveau le serveur Zabbix et le schéma de base de données vers 6.0.x avant d'exécuter la conversion 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 le voyons, le jeu de caractères ici n'est pas 'utf8mb4' et la collation 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 de la table et de la colonne :

mysql <your DB name> < utf8mb4_convert.sql

6. Exécutez le script :

               SET @ZABBIX_DATABASE = '<nom de votre base de données>';
       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 un peu 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 avec la base de données corrigée.

8. Démarrez Zabbix.