Historycznie MySQL i jego pochodne używały 'utf8' jako aliasu dla utf8mb3 - 3-bajtowej implementacji standardu UTF8 stworzonej przez MySQL, która jest 4-bajtowa. Począwszy od MySQL 8.0.28 i MariaDB 10.6.1, zestaw znaków 'utf8mb3' jest przestarzały i w pewnym momencie jego wsparcie zostanie wycofane, podczas gdy 'utf8' stanie się odniesieniem do 'utf8mb4'. Od Zabbix 6.0, 'utf8mb4' jest wspierane. Aby uniknąć przyszłych problemów, zaleca się używanie 'utf8mb4'. Inną zaletą przejścia na 'utf8mb4' jest wsparcie dla dodatkowych znaków Unicode.
Ponieważ wersje przed Zabbix 6.0 nie obsługują utf8mb4, upewnij się, że najpierw zaktualizujesz serwer Zabbix i schemat bazy danych do 6.0.x przed wykonaniem konwersji do utf8mb4.
1. Sprawdź zestaw znaków i porządek sortowania bazy danych.
Na przykład:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin2 | latin2_general_ci |
+--------------------------+----------------------+
Albo:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_bin |
+--------------------------+----------------------+
Jak widać, zestaw znaków to nie'utf8mb4' i porządek sortowania to nie 'utf8mb4_bin', więc musimy to naprawić.
2. Zatrzymaj Zabbix.
3. Stwórz kopię zapasową bazy danych!
4. Napraw zestaw znaków i porządek sortowania na poziomie bazy danych:
Naprawione wartości:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_bin |
+--------------------------+----------------------+
5. Załaduj skrypt aby naprawić zestaw znaków i porządek sortowania na poziomie tabel i kolumn:
6. Wykonaj skrypt:
SET @ZABBIX_DATABASE = '<twoja nazwa bazy danych>';
If MariaDB → set innodb_strict_mode = OFF;
CALL zbx_convert_utf8();
If MariaDB → set innodb_strict_mode = ON;
drop procedure zbx_convert_utf8;
Należy pamiętać, że 'utf8mb4' może zużywać nieco więcej miejsca na dysku.
7. Jeśli nie wystąpiły błędy - możesz utworzyć kopię zapasową bazy danych z naprawioną bazą.
8. Uruchom Zabbix.