最近幾天發現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,若資料庫不同步的時候就等着收短信或者郵件吧!