2 Reparatur des Zeichensatzes und der Sortierung der Zabbix-Datenbank
MySQL/MariaDB
Historisch gesehen verwendeten MySQL und seine Derivate 'utf8' als Alias für utf8mb3 - MySQLs eigene 3-Byte-Implementierung des Standards UTF8, der 4-Byte ist. Ab MySQL 8.0.28 und MariaDB 10.6.1 ist der Zeichensatz 'utf8mb3' veraltet, und zu einem bestimmten Zeitpunkt wird seine Unterstützung entfernt, während 'utf8' zu einem Verweis 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 kein utf8mb4 kennen, stellen Sie bitte sicher, dass Sie zuerst den Zabbix-Server und das DB-Schema auf 6.0.x oder höher aktualisieren, bevor Sie die utf8mb4-Konvertierung ausführen.
1. Prüfen Sie den Zeichensatz und die Sortierung 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 Sortierung ist nicht 'utf8mb4_bin', also müssen wir sie korrigieren.
2. Stoppen Sie Zabbix.
3. Erstellen Sie eine Sicherungskopie der Datenbank!
4. Korrigieren Sie den Zeichensatz und die Sortierung 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 Sortierung 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 der Festplatte benötigt.
7. Wenn keine Fehler aufgetreten sind, können Sie eine Sicherungskopie der Datenbank mit der korrigierten Datenbank erstellen.
8. Starten Sie Zabbix.