2 Naprawa zestawu znaków i porównywania napisów bazy danych Zabbix
MySQL/MariaDB
Historycznie MySQL i jego pochodne używały „utf8” jako aliasu dla utf8mb3 — własnej 3-bajtowej implementacji standardu UTF8 w MySQL, który jest 4-bajtowy. Począwszy od MySQL 8.0.28 i MariaDB 10.6.1, zestaw znaków „utf8mb3” jest przestarzały i w pewnym momencie jego obsługa zostanie usunięta, podczas gdy „utf8” stanie się odniesieniem do „utf8mb4”. Od Zabbix 6.0 obsługiwany jest „utf8mb4”. Aby uniknąć problemów w przyszłości, zdecydowanie zaleca się używanie „utf8mb4”. Kolejną zaletą przejścia na „utf8mb4” jest obsługa dodatkowych znaków Unicode.
Ponieważ wersje wcześniejsze niż Zabbix 6.0 nie obsługują utf8mb4, przed wykonaniem konwersji do utf8mb4 należy najpierw zaktualizować serwer Zabbix i schemat bazy danych do wersji 6.0.x lub nowszej.
1. Sprawdź zestaw znaków i porównywanie bazy danych.
Na przykład:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin2 | latin2 _general_ci |
+--------------------------+----------------------+
Lub:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_bin |
+--------------------------+----------------------+
Jak widać, zestaw znaków nie jest tutaj ustawiony na „utf8mb4”, a porównywanie nie jest ustawione na „utf8mb4_bin”, więc należy to poprawić.
2. Zatrzymaj Zabbix.
3. Utwórz kopię zapasową bazy danych!
4. Popraw zestaw znaków i porównywanie na poziomie bazy danych:
alter database <your DB name> character set utf8mb4 collate utf8mb4_bin;
Poprawione wartości:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_bin |
+--------------------------+----------------------+
5. Załaduj skrypt w celu poprawienia zestawu znaków i porównywania na poziomie tabel i kolumn:
mysql <your DB name> < utf8mb4_convert.sql
6. Wykonaj skrypt:
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;
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ą poprawionej bazy danych.
8. Uruchom Zabbix.