Monitorar Lag na Replicação do MySQL

Hoje vamos implementar de forma simples, o monitoramento de lag em uma replicação MySQL nativa, consumindo os dados de forma simples pelo zabbix ou qualquer ferramenta de monitoramento que possa realizar leituras em uma tabela.

1 – Para armazenar as informações coletadas, iremos criar um database, tabela e usuário com permissões de select, insert no master.

mysql> create database dbmonitor;
mysql> create table dbmonitor.controle_replicacao
(
id_controle int (20) AUTO_INCREMENT PRIMARY KEY,
gap int not null,
data datetime not null
);
mysql> CREATE USER 'usr_monitor'@'%' IDENTIFIED BY 'monitor!!$@2022!!';
mysql> GRANT SELECT,INSERT ON dbmonitor.* TO 'usr_monitor'@'%';
mysql> GRANT REPLICATION CLIENT ON *.* to 'usr_monitor'@'%';
mysql> FLUSH PRIVILEGES;
mysql> use dbmonitor;
mysql> CREATE INDEX IDX_DBMONITOR_DATA ON dbmonitor.controle_replicacao(data);
mysql> select user, host from mysql.user;
mysql> show databases;
ShellScript

2 – Iremos criar o shell script na replica do MySQL standby inserindo os dados de acesso do master (usuário, IP, senha) que criamos anteriormente.

#!/bin/bash
UP=$(pgrep mysql | wc -l);
if [ "$UP" -ne 1 ];
then
        seconds_behind_master=10000
        mysql -B -N -u'usr_monitor' -p'monitor!!$@2022!!' -h192.168.0.10 -e "INSERT INTO dbmonitor.controle_replicacao (gap,data) VALUES ($seconds_behind_master,SYSDATE());";
        #echo $seconds_behind_master
else
        seconds_behind_master=$(MYSQL_PWD="monitor!!$@2022!!" mysql -u'usr_monitor' -e "show slave status" --vertical | grep Seconds_Behind_Master | awk '{print $2}')
        #echo $seconds_behind_master
        mysql -B -N -u'usr_monitor' -p'monitor!!$@2022!!' -h192.168.0.10 -e "INSERT INTO dbmonitor.controle_replicacao (gap,data) VALUES ($seconds_behind_master,SYSDATE());";
fi
ShellScript

3 – Aplicando permissão no shell.

[root@mysqlstandby ~]# chmod 775 status_replication.sh
ShellScript

4 – Agendamento do shell para coleta dos gaps em segundos do MySQL replica stanbdy inserindo os dados em produção (master).

*/5 * * * *  /root/scripts/status_replicacao.sh 2>> /root/scripts/logs/status_replicacao.log 1>>/root/scripts/logs/status_replicacao.err
ShellScript

5 – Consulta simples usada para monitorar o ultimo status consumida pelo Zabbix.

mysql> SELECT gap FROM dbmonitor.controle_replicacao ORDER BY data DESC LIMIT 1;
mysql> SELECT * FROM dbmonitor.controle_replicacao;
SQL

Leave a Reply

Your email address will not be published. Required fields are marked *

search previous next tag category expand menu location phone mail time cart zoom edit close