2 Zabbix datubāzes rakstzīmju kopas un kolācijas labošana
MySQL/MariaDB
Vēsturiski MySQL un tā atvasinājumi izmantoja 'utf8' kā utf8mb3 aizstājvārdu - MySQL paša 3 baitu standarta UTF8 ieviešanu, kas ir 4 baitu. Sākot ar MySQL 8.0.28 un MariaDB 10.6.1, rakstzīmju kopa 'utf8mb3' ir novecojusi, un kādā brīdī tās atbalsts tiks noņemts, savukārt 'utf8' kļūs par atsauci uz 'utf8mb4'. Kopš Zabbix 6.0 tiek atbalstīts 'utf8mb4'. Lai izvairītos no turpmākām problēmām, ir ļoti ieteicams izmantot 'utf8mb4'. Vēl viena pārejas uz 'utf8mb4' priekšrocība ir papildu Unicode rakstzīmju atbalsts.
Tā kā Zabbix versijas pirms 6.0 neatbalsta utf8mb4, pirms utf8mb4 konvertēšanas noteikti vispirms atjauniniet Zabbix serveris un DB shēmu uz 6.0.x vai jaunāku versiju.
1. Pārbaudiet datubāzes rakstzīmju kopu un salīdzināšanas kārtulu.
Piemēram:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin2 | latin2 _general_ci |
+--------------------------+----------------------+
Vai:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_bin |
+--------------------------+----------------------+
Kā redzams, rakstzīmju kopa šeit nav 'utf8mb4' un salīdzināšanas kārtula nav 'utf8mb4_bin', tāpēc tās ir jālabo.
2. Apturiet Zabbix.
3. Izveidojiet datubāzes rezerves kopiju!
4. Labo rakstzīmju kopu un salīdzināšanas kārtulu datubāzes līmenī:
alter database <your DB name> character set utf8mb4 collate utf8mb4_bin;
Labotās vērtības:
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_bin |
+--------------------------+----------------------+
5. Ielādējiet skriptu, lai labotu rakstzīmju kopu un salīdzināšanas kārtulu tabulu un kolonnu līmenī:
mysql <your DB name> < utf8mb4_convert.sql
6. Izpildiet skriptu:
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;
Lūdzu, ņemiet vērā, ka 'utf8mb4' var aizņemt nedaudz vairāk diska vietas.
7. Ja nav kļūdu - varat izveidot datubāzes rezerves kopiju ar izlaboto datubāzi.
8. Startējiet Zabbix.