2 Reparar el juego de caracteres y collation de la base de datos Zabbix

MySQL/MariaDB

Históricamente, MySQL y sus derivados usaban 'utf8' como alias para utf8mb3, la implementación propia de MySQL de 3 bytes del estándar UTF8, que es de 4 bytes. A partir de MySQL 8.0.28 y MariaDB 10.6.1, el juego de caracteres 'utf8mb3' está en desuso y en algún momento su soporte dejará de ser compatible, mientras que 'utf8' desaparecerá para convertirse en una referencia a 'utf8mb4'. Desde Zabbix 6.0, se admite 'utf8mb4'. Para evitar problemas futuros, se recomienda encarecidamente utilizar 'utf8mb4'. Otra ventaja de cambiar a 'utf8mb4' es la compatibilidad con caracteres complementarios de Unicode.

Como las versiones anteriores a Zabbix 6.0 no reconocen utf8mb4, asegúrese de actualizar primero el servidor Zabbix y el esquema de base de datos a 6.0.x antes de ejecutar la conversión a utf8mb4.

1. Verifique el juego de caracteres y la clasificación de la base de datos.

Por ejemplo:

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 |
       +--------------------+---------------------- +

Como vemos, el conjunto de caracteres aquí no es 'utf8mb4' y la intercalación no es 'utf8mb4_bin', por lo que debemos corregirlos.

2. Deténga Zabbix.

3. ¡Cree una copia de seguridad de la base de datos!

4. Corrija el juego de caracteres y la intercalación a nivel de la base de datos:

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

Valores fijos:

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

5. Cargue el script para corregir el juego de caracteres y la clasificación a nivel de tabla y columna:

mysql <nombre de su base de datos> < utf8mb4_convert.sql

6. Ejecute el script:

SET @ZABBIX_DATABASE = '<nombre de su base de datos>';
       Si MariaDB → set innodb_strict_mode = OFF;
       CALL zbx_convert_utf8();
       Si MariaDB → set innodb_strict_mode = ON;
       drop procedure zbx_convert_utf8;

Tenga en cuenta que se espera que 'utf8mb4' consuma un poco más de espacio en disco.

7. Si no hay errores, es posible que desee crear una copia de seguridad de la base de datos con la base de datos corregida.

8. Inicie Zabbix.