Każdy, kto instalował serwer Zabbix, spotkał się z problemem kodowania w interfejsie Web GUI, gdzie cały tekst w języku rosyjskim wyświetlany jest jako znaki zapytania. Problem tkwi w standardowych kodowaniach tabel bazy danych, które zmienimy, aby go rozwiązać.
Należy przekonwertować kodowanie tabel i danych w nich z latin1 na UTF-8.
Pierwszym krokiem jest zatrzymanie usługi zabbix-server:
|
1
2
3
4
5
|
/etc/init.d/zabbix-server stop
lub
systemctl stop zabbix-server
lub
service zabbix-server stop
|
Następnie należy wykonać kopię zapasową bazy danych.
|
1
|
mysqldump -u root -p --ignore-table=zabbix.history --ignore-table=zabbix.history_uint --ignore-table=zabbix.images --default-character-set=latin1 -c --insert-ignore --skip-set-charset -r z1.sql zabbix
|
Widać, że wykluczyliśmy z kopii zapasowej 3 tabele, ponieważ nie zawierają one żadnych wierszy, a podczas importu zmodyfikowanej kopii zapasowej serwer MySQL padał na tabeli images.
T te trzy tabele umieszczamy w osobnej kopii zapasowej, której nie będziemy modyfikować
|
1
|
mysqldump -u root -p --default-character-set=latin1 -c --insert-ignore --skip-set-charset -r z4.sql zabbix history history_uint images
|
Zdecydowanie zalecam zachowanie oryginalnych kopii zapasowych, aby mieć możliwość wycofania zmian.
Zmieniamy kodowanie wszystkich rekordów w pliku zrzutu z1.sql
|
1
|
iconv -f ISO8859-1 -t UTF-8 z1.sql > z2.sql
|
Zastępujemy wszystkie wystąpienia odwołań do kodowania w pliku zrzutu z2.sql
|
1
|
cat z2.sql |sed -e 's/ CHARSET=latin1/ CHARSET=utf8/g' > z3.sql
|
Przekształcamy bazę danych, aby wyczyścić ją ze wszystkich tabel i utworzyć ją w odpowiedniej kodowaniu
|
1
|
mysql -u root -p --execute="DROP DATABASE zabbix; CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_general_ci;"
|
Wczytujemy zrzut z4.sql do bazy danych
|
1
|
mysql -u root --max_allowed_packet=16M -p --default-character-set=utf8 zabbix < z4.sql
|
Wczytujemy zrzut bazy danych z3.sql
|
1
|
mysql -u root --max_allowed_packet=16M -p --default-character-set=utf8 zabbix < z3.sql
|
I uruchamiamy ponownie serwer Zabbix
|
1
2
3
4
5
|
/etc/init.d/zabbix-server start
lub
systemctl start zabbix-server
lub
service zabbix-server start
|
Sprawdzamy poprawność działania interfejsu WEB serwera Zabbix. W przypadku problemów cofamy się do kopii zapasowych z1.sql i z4.sql.
