2 Reparant el joc de caràcters i la col·lació de la base de dades de Zabbix

MySQL/MariaDB

Històricament, MySQL i els seus derivats 'utf8' com a àlias de utf8mb3 - la pròpia implementació de 3 octets de MySQL de l'UTF8 estàndard, que és de 4 octets. A partir de MySQL 8.0.28 i MariaDB 10.6.1, el joc de caràcters 'utf8mb3' és obsolet i en un moment donat, el seu suport es deixarà de banda mentre que 'utf8' esdevindrà la referència a 'utf8mb4'. Des de Zabbix 6.0, es suporta 'utf8mb4'. Per evitar problemes futurs, es recomana emprar 'utf8mb4'. Un altre avantatge de passar a 'utf8mb4' és el suport dels caràcters Unicode suplementaris.

Com les versions anteriors a Zabbix 6.0 no s'entenen amb utf8mb4, assegureu-vos d'actualitzar primer el servidor Zabbix i l'esquema de la base de dades a la versió 6.0.x abans d'executar la conversió a utf8mb4.

1. Verifiqueu el joc de caràcters i la classificació de la base de dades.

Per exemple:

mysql> SELECT @@character_set_database, @@collation_database;
       +--------------------------+----------------------+
       | @@character_set_database | @@collation_database |
       +--------------------------+----------------------+
       | latin2                   | latin2 _general_ci   |
       +--------------------------+----------------------+

O:

mysql> SELECT @@character_set_database, @@collation_database;
       +--------------------------+----------------------+
       | @@character_set_database | @@collation_database |
       +--------------------------+----------------------+
       | utf8                     | utf8_bin             |
       +--------------------------+----------------------+

Tal com ho veiem, el joc de caràcters aquí no és pas 'utf8mb4' i la classificació no és pas 'utf8mb4_bin'; per tant ho hem de corregir.

2. Aturem Zabbix.

3. Creem una còpia de seguretat de la base de dades!

4. Corregim el joc de caràcters i la classificació a nivell de la base de dades:

alter database <your DB name> character set utf8mb4 collate utf8mb4_bin;

Valors corregits:

mysql> SELECT @@character_set_database, @@collation_database;
       +--------------------------+----------------------+
       | @@character_set_database | @@collation_database |
       +--------------------------+----------------------+
       | utf8mb4                  | utf8mb4_bin          |
       +--------------------------+----------------------+ 

5. Carreguem l'script per tal de corregir el joc de caràcters i la classificació a nivell de la taula i de la columna:

mysql <your DB name> < utf8mb4_convert.sql

6. Executem l'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;

Fixeu-vos que 'utf8mb4' ha de consumir una mica més d'espai de disc.

7. Si no hi ha pas errors, podem crear una còpia de seguretat de la base de dades amb la base de dades corregida.

8. Engeguem Zabbix.