最近几天发现mysql数据库replication同步出现问题,居然过了好几天才发现,于是打算把mysql replication做监控。
我的监控平台是zabbix,之所以不使用nagios,是因为nagios比较复杂,呵呵。
大家都知道mysql的 replication复制使用了三个线程,Binlog Dump(主)、IO线程及SQL线程(从)。其中只要监控IO线程及SQL线程这两个线程就可以确定复制是否出现问题了。
复制正常情况下,Slave_IO_Running及Slave_SQL_Running都应该是Yes,见下图:

d8e1bbdbb8f04c159efc1006e562a55e.jpg (85.72 KB, 下载次数: 18)
2012-10-24 11:44 上传
所以需要编写脚本以获取这两个值的状态。
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

1fa030ad9a5dd0aca8ee8def6e7a9ea8.jpg (23.14 KB, 下载次数: 13)
2012-10-24 11:44 上传
及

8f85641f9787078afb2836155dc097ed.jpg (20.48 KB, 下载次数: 13)
2012-10-24 11:44 上传
也可以创建graph,太简单不写了。
接下来就是创建trigger
ok,若数据库不同步的时候就等着收短信或者邮件吧!