2 Reparatur des Zeichensatzes und der Sortierung der Zabbix-Datenbank

MySQL/MariaDB

In der Vergangenheit verwendeten MySQL und Derivate 'utf8' als Alias für utf8mb3 - MySQLs eigene 3-Byte-Implementierung des standardmäßigen UTF8, das 4 Byte verwendet. Ab MySQL 8.0.28 und MariaDB 10.6.1 ist der Zeichensatz 'utf8mb3' veraltet, und seine Unterstützung wird irgendwann eingestellt, während 'utf8' zu einer Referenz auf 'utf8mb4' wird. Seit Zabbix 6.0 wird 'utf8mb4' unterstützt. Um zukünftige Probleme zu vermeiden, wird dringend empfohlen, 'utf8mb4' zu verwenden. Ein weiterer Vorteil der Umstellung auf 'utf8mb4' ist die Unterstützung zusätzlicher Unicode- Zeichen.

Da Versionen vor Zabbix 6.0 utf8mb4 nicht erkennen, stellen Sie sicher, dass Sie zuerst den Zabbix Server und das DB-Schema auf 6.0.x oder höher aktualisieren, bevor Sie die Konvertierung zu utf8mb4 ausführen.

1. Prüfen Sie den Zeichensatz und die Kollation der Datenbank.

Zum Beispiel:

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

Oder:

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

Wie wir sehen, ist der Zeichensatz hier nicht 'utf8mb4' und die Kollation ist nicht 'utf8mb4_bin', daher müssen wir dies korrigieren.

2. Stoppen Sie Zabbix.

3. Erstellen Sie eine Sicherungskopie der Datenbank!

4. Korrigieren Sie Zeichensatz und Kollation auf Datenbankebene:

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

Korrigierte Werte:

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

5. Laden Sie das Skript, um Zeichensatz und Kollation auf Tabellen- und Spaltenebene zu korrigieren:

mysql <your DB name> < utf8mb4_convert.sql

6. Führen Sie das Skript aus:

               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;

Bitte beachten Sie, dass 'utf8mb4' voraussichtlich etwas mehr Speicherplatz auf dem Datenträger benötigt.

7. Wenn keine Fehler auftreten, sollten Sie eventuell eine Sicherungskopie der korrigierten Datenbank erstellen.

8. Starten Sie Zabbix.