2 Reparar el conjunto de caracteres y la intercalación de la base de datos de Zabbix
MySQL/MariaDB
Históricamente, MySQL y sus derivados usaban 'utf8' como un alias de utf8mb3, la implementación propia de MySQL de UTF8 estándar de 3 bytes, que es de 4 bytes. A partir de MySQL 8.0.28 y MariaDB 10.6.1, el conjunto de caracteres 'utf8mb3' está obsoleto y, en algún momento, su compatibilidad se eliminará, mientras que 'utf8' pasará a ser una referencia a 'utf8mb4'. Desde Zabbix 6.0, se admite 'utf8mb4'. Para evitar problemas futuros, se recomienda encarecidamente usar 'utf8mb4'. Otra ventaja de cambiar a 'utf8mb4' es la compatibilidad con caracteres Unicode suplementarios.
Como las versiones anteriores a Zabbix 6.0 no conocen utf8mb4, asegúrese de actualizar primero el server de Zabbix y el esquema de la base de datos a 6.0.x o posterior antes de ejecutar la conversión a utf8mb4.
1. Compruebe el conjunto de caracteres y la intercalació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', así que debemos corregirlos.
2. Detenga Zabbix.
3. ¡Cree una copia de seguridad de la base de datos!
4. Corrija el conjunto de caracteres y la intercalación a nivel de base de datos:
alter database <your DB name> character set utf8mb4 collate utf8mb4_bin;
Valores corregidos:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_bin |
+--------------------------+----------------------+
5. Cargue el script para corregir el conjunto de caracteres y la intercalación a nivel de tabla y columna:
mysql <your DB name> < utf8mb4_convert.sql
6. Ejecute el 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;
Tenga en cuenta que se espera que 'utf8mb4' consuma ligeramente más espacio en disco.
7. Si no hay errores, quizá desee crear una copia de seguridad de la base de datos con la base de datos corregida.
8. Inicie Zabbix.