为了实时了解到MySQL主从同步的状态,我们可以有多种方式,简单快捷的方式就是使用shell脚本,但是我们这里要说的是用zabbix来做监控,操作步骤如下。
1、 添加一个免密用户,例如zabbix,用于执行查询slave状态用(这里要注意看自己的复制方式,如果mysql库也同步的话,最好在master上面执行添加用户操作,如果在slave上执行,可能会导致主从失败,报1396错误)
mysql> create user 'zabbix'@'localhost';
Query OK, 0 rows affected (0.14 sec)
mysql> grant replication client on *.* to 'zabbix'@'localhost';
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)
2、 添加查看MySQL SLAVE的复制状态脚本,新建一个scripts目录用于存放自定义的脚本
mkdir /etc/zabbix/scripts
cd /etc/zabbix/scripts
vi mysql_replication.sh
#添加下面内容
echo "show slave status \G"|/usr/local/mysql/bin/mysql -uroot 2>/dev/null|grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
3、 给脚本执行权限,并执行该脚本,返回2代表2个yes,表示正常,其他值均为不正常
[root@zabbix ~]# cd /etc/zabbix/scripts/
[root@zabbix ~]# chmod +x mysql_replication.sh
[root@zabbix ~]# ./mysql_replication.sh
2
4、 编辑zabbix_agentd.conf文件,添加我们自定义的key进去
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql.replication,/etc/zabbix/scripts/mysql_replication.sh
5、 添加后重启agentd
systemctl restart zabbix-agent
6、 重启成功后,在zabbix server( 192.168.165.202)上面检测一下,是否可以获取刚才定义的key值
[root@zabbix ~]# zabbix_get -s 192.168.165.52 -k mysql.replication
2
7、执行成功返回2就可以了,接下来就到zabbix的页面管理中,创建一个Template模板 选择"Configuration"-"Template",然后点击"Create template",
名称为:Template App MySQL Replication
8、创建后在Template页面找到刚新建的“mplate App MySQL Replication”打开它,选择Applications标签页,创建一个Applications,Name:MySQL Replication
9、再打开Items标签页,创建一个Items
10、创建触发器 Name:MySQL Replication error on {HOST.NAME} Expression:{Template App MySQL Replication:mysql.replication.last()}<2
11、创建好之后,把该模板和目标主机关联就可以了