Table of Contents

#2 Tekenset en sortering van Zabbix-database herstellen

MySQL/MariaDB

Historisch gezien gebruikte MySQL en zijn afgeleiden '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 het 'utf8mb3' tekenreeks karakterset verouderd en op een gegeven moment zal de ondersteuning hiervan worden stopgezet terwijl 'utf8' een verwijzing zal worden naar 'utf8mb4'. Sinds Zabbix 6.0 wordt 'utf8mb4' ondersteund. Om toekomstige problemen te voorkomen, wordt het ten zeerste aanbevolen om 'utf8mb4' te gebruiken. Een ander voordeel van overschakelen naar 'utf8mb4' is de ondersteuning van aanvullende Unicode-karakters.

Aangezien versies voor Zabbix 6.0 niet op de hoogte zijn van utf8mb4, zorg ervoor dat u eerst de Zabbix-server en DB-schema upgrade naar 6.0.x of later voordat u de utf8mb4-conversie uitvoert.

1. Controleer de tekenreekskarakterset en collatie van de database.

Bijvoorbeeld:

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

Of:

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

Zoals we zien, is de tekenreekskarakterset hier geen 'utf8mb4' en de collatie is niet 'utf8mb4_bin', dus we moeten ze aanpassen.

2. Stop Zabbix.

3. Maak een back-up kopie van de database!

4. Pas de tekenreekskarakterset en collatie op databaseniveau aan:

alter database <uw DB naam> character set utf8mb4 collate utf8mb4_bin;

Aangepaste waarden:

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

5. Laad het script om de tekenreekskarakterset en collatie op tabel- en kolomniveau aan te passen:

mysql <uw DB naam> < utf8mb4_convert.sql

6. Voer het script uit:

               SET @ZABBIX_DATABASE = '<uw DB naam>';
       Als MariaDB →  set innodb_strict_mode = OFF;        
                      CALL zbx_convert_utf8();
       Als MariaDB →  set innodb_strict_mode = ON;   
                      drop procedure zbx_convert_utf8;

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

7. Als er geen fouten zijn - wilt u mogelijk een back-up kopie van de database maken met de aangepaste database.

8. Start Zabbix.