zabbix監控mysql主從複製
做者:Johnny(yxhbenet@vip.qq.com)
原由:zabbix可能監控到mysql服務的運行狀況,但確不能監控mysql的主從複製是否正常:有時候,同步已經中止,但管理人員殊不知道。
下手處:登錄mysql從服務器,經過執行 mysql> show slave status\G 查看其輸出,便可斷定主從複製是否正常。下面是某個從服務器的輸出:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.93.16
Master_User: rep1
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 1752541
Relay_Log_File: hy-mysql3-relay-bin.000088
Relay_Log_Pos: 2339
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
這個輸出,最關鍵處就是"Slave_IO_Running: Yes「和「Slave_SQL_Running: Yes」,這兩個值全是"Yes"就代表主從複製正常,不然就是有問題。
操做步驟:
一、在主數據庫服務器增長一個用戶,給予較低的權限,操做爲
mysql > grant Replication client on *.* to 'zabbix'@'%' identified by 'zabbix';
mysql> flush privileges;
二、登錄從服務器驗證一下,看是否正常。操做爲:
mysql -uzabbix -pzabbix -e "show slave stutas\G"
三、在從服務器安裝 zabbix_agentd,而後在配置文件zabbix_agentd.conf加入一行
UserParameter=mysql.slave,/opt/scripts/check_mysql_slave |grep OK -c
四、編寫腳本/opt/scripts/check_mysql_slave(這是監控其做用的核心),其內容以下:
#!/bin/sh
declare -a slave_is
slave_is=($(/usr/local/mysql/bin/mysql -uzabbix -pzabbix -e "show slave status\G"|grep Running |awk '{print $2}'))
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]
then
echo "OK -slave is running"
exit 0
else
echo "Critical -slave is error"
exit 2
fi
五、修改配置item、trigger,並測試。mysql