segunda-feira, 28 de fevereiro de 2022

[Sobre o Zabbix] database could be upgraded to use primary keys in history tables

 


Após realizarem o upgrade para o Zabbix 6 você nota a seguinte mensagem no log:


Conforme anunciado pela Zabbix SIA com o Zabbix 6: "Primary keys are now used for all tables, including history tables, in new installations.". Entretanto para instalações existentes não há upgrade de chave primária automático se fazendo necessário realizar o upgrade manualmente em tabelas de histórico.

Irei ensinar a como realizar o upgrade para quem usa mysql/mariadb conforme documentação.

Eu utilizo a versão 10.5.15 do MariaDB logo irei utilizar o procedimento do MySQL 5.7+/8.0+.

1 - Pare o Zabbix Server;
2 - Executar history_pk_prepare.sql : mysql -uUSER -pPASSWORD NOMEDOBANCOZABBIX < /usr/share/doc/zabbix-sql-scripts/mysql/history_pk_prepare.sql
3 - Após executar o segundo passo será necessário conectar no banco via mysqlsh. Após instalar agora basta rodar o comando a seguir para se conectar no banco: mysqlsh -uUSER -S /var/lib/mysql/mysql.sock -DNOMEDOBANCOZABBIX
 

4 - Após se conectar se faz necessário rodar os seguintes comandos mais abaixo:
Obs.: CSVPATH="/var/lib/mysql-files"; ==> Informar aonde está o caminho do banco de dados do Zabbix.

CSVPATH="/var/lib/mysql/zabbix";
util.exportTable("history_old", CSVPATH + "/history.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history.csv", {"dialect": "csv", "table": "history" });
util.exportTable("history_uint_old", CSVPATH + "/history_uint.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_uint.csv", {"dialect": "csv", "table": "history_uint" });
util.exportTable("history_str_old", CSVPATH + "/history_str.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_str.csv", {"dialect": "csv", "table": "history_str" });
util.exportTable("history_log_old", CSVPATH + "/history_log.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_log.csv", {"dialect": "csv", "table": "history_log" });
util.exportTable("history_text_old", CSVPATH + "/history_text.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_text.csv", {"dialect": "csv", "table": "history_text" });


5 - Inicie o Zabbix Server e verifique se os dados recentes e principalmente os dados históricos foram importados corretamente. Eu peguei qualquer item do Zabbix Server por exemplo e coloquei para visualizar o histórico de 3 meses atrás e me retornou perfeitamente:


6 - Após confirmar que está tudo funcionando vamos deletar as tabelas antigas:

DROP TABLE history_old;
DROP TABLE history_uint_old;
DROP TABLE history_str_old;
DROP TABLE history_log_old;
DROP TABLE history_text_old;

Bom espero ter ajudado!
\O

Obs.: A depender do tamanho do banco esse procedimento pode demorar.

Nenhum comentário:

Postar um comentário