最近几天发现mysql数据库replication同步出现问题,居然过了好几天才发现,于是打算把mysql replication做监控。

我的监控平台是zabbix,之所以不使用nagios,是因为nagios比较复杂,呵呵。

大家都知道mysql的 replication复制使用了三个线程,Binlog Dump(主)、IO线程及SQL线程(从)。其中只要监控IO线程及SQL线程这两个线程就可以确定复制是否出现问题了。

复制正常情况下,Slave_IO_Running及Slave_SQL_Running都应该是Yes,见下图:

 

 

 

所以需要编写脚本以获取这两个值的状态。

vim /usr/local/bin/Slave_IO_Running

#!/bin/bash
Slave_IO_Running=`mysql -uroot -p'your_mysql_password' -Bse "show slave status\G"| grep Slave_IO_Running | awk '{ print $2 }'`
if [ $Slave_IO_Running == 'Yes' ] ; then
echo 1
else
echo 0
fi

chmod 755  /usr/local/bin/Slave_IO_Running

vim /usr/local/bin/Slave_SQL_Running

 

#!/bin/bash

Slave_SQL_Running=`mysql -uroot  -p'your_mysql_password'  -Bse "show slave status\G"| grep Slave_SQL_Running | awk '{ print $2 }'`
if [ $Slave_SQL_Running == 'Yes' ] ; then
echo 1
else
echo 0
fi
chmod 755 /usr/local/bin/Slave_SQL_Running

在zabbix agent配置文件中添加

UserParameter=mysql.alertio,Slave_IO_Running
UserParameter=mysql.alertsql,Slave_SQL_Running

打开zabbix web界面添加item

 

也可以创建graph,太简单不写了。

接下来就是创建trigger

 

ok,若数据库不同步的时候就等着收短信或者邮件吧!