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 standardowego UTF8, które jest 4-bajtowe. 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, a 'utf8' stanie się odwołaniem do 'utf8mb4'. Od Zabbix 6.0 obsługiwane jest 'utf8mb4'. Aby uniknąć przyszłych problemów, zdecydowanie zaleca się używanie 'utf8mb4'. Dodatkową 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 utf8mb4 upewnij się, że najpierw zaktualizowano serwer Zabbix i schemat bazy danych do wersji 6.0.x lub nowszej.

1. Sprawdź zestaw znaków i sortowanie 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 sortowanie nie jest 'utf8mb4_bin', więc należy to poprawić.

2. Zatrzymaj Zabbix.

3. Utwórz kopię zapasową bazy danych!

4. Popraw zestaw znaków i sortowanie 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 , aby poprawić zestaw znaków i sortowanie 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' powinno zajmować nieco więcej miejsca na dysku.

7. Jeśli nie wystąpiły błędy - możesz utworzyć kopię zapasową bazy danych z poprawioną bazą.

8. Uruchom Zabbix.