Table of Contents

#2 Tekenset en sortering van Zabbix-database herstellen

MySQL/MariaDB

Historisch gezien gebruikten MySQL en derivaten 'utf8' als een alias voor utf8mb3 - MySQL's eigen 3-byte implementatie van de standaard UTF8, die 4-byte is. Vanaf MySQL 8.0.28 en MariaDB 10.6.1 is de tekenset 'utf8mb3' verouderd en op een gegeven moment zal de ondersteuning worden weggelaten terwijl 'utf8' een verwijzing naar 'utf8mb4' zal worden. Sinds Zabbix 6.0 wordt 'utf8mb4' ondersteund. Om toekomstige problemen te voorkomen, is het ten zeerste aanbevolen om 'utf8mb4' te gebruiken. Een ander voordeel van het overschakelen naar 'utf8mb4' is de ondersteuning van aanvullende Unicode karakters.

Aangezien versies vóór Zabbix 6.0 niet op de hoogte zijn van utf8mb4, moet u eerst upgraden Zabbix-server en DB-schema naar 6.0.x voordat utf8mb4-conversie wordt uitgevoerd.

1. Controleer de karakterset en sortering van de database.

Bijvoorbeeld:

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

Of:

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

Zoals we zien, is de tekenset hier niet 'utf8mb4' en is collatie niet 'utf8mb4_bin', dus we moeten ze repareren.

2. Stop Zabbix.

3. Maak een reservekopie van de database!

4. Herstel de tekenset en sortering op databaseniveau:

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

Vaste waarden:

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

5. Laad de script om tekenset en sortering op tabel- en kolomniveau te corrigeren:

mysql <uw DB-naam> < utf8mb4_convert.sql

6. Voer het script uit: 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;

Houd er rekening mee dat 'utf8mb4' naar verwachting iets meer schijfruimte in beslag zal nemen.

7. Als er geen fouten zijn, wilt u misschien een databaseback-up maken met de vaste database.

8. Start Zabbix.