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 implementāciju, kas patiesībā 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 pārtraukts, savukārt 'utf8' kļūs par atsauci uz 'utf8mb4'. Kopš Zabbix 6.0 tiek atbalstīts 'utf8mb4'. Lai izvairītos no problēmām nākotnē, ir ļoti ieteicams izmantot 'utf8mb4'. Vēl viena pārejas uz 'utf8mb4' priekšrocība ir papildu Unicode rakstzīmju atbalsts.

Tā kā versijas pirms Zabbix 6.0 neatpazīst utf8mb4, pirms utf8mb4 konvertēšanas izpildes vispirms noteikti jauniniet Zabbix serveris un DB shēmu uz 6.0.x vai jaunāku versiju.

1. Pārbaudiet datubāzes rakstzīmju kopu un kolāciju.

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 kolācija nav 'utf8mb4_bin', tāpēc tās ir jāizlabo.

2. Apturiet Zabbix.

3. Izveidojiet datubāzes rezerves kopiju!

4. Izlabojiet rakstzīmju kopu un kolāciju datubāzes līmenī:

alter database <your DB name> character set utf8mb4 collate utf8mb4_bin;

Izlabotā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 izlabotu rakstzīmju kopu un kolāciju 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 patērēt nedaudz vairāk diska vietas.

7. Ja nav kļūdu — iespējams, vēlēsieties izveidot datubāzes rezerves kopiju ar izlaboto datubāzi.

8. Palaidiet Zabbix.