標籤:監控mysql主從
1.shell監控主從同步
編寫一shell指令碼,監控slave的兩個yes(Slave_IO及Slave_SQL進程),如發現只有一個或零個yes,就表明主從有問題了
___________________________________________________________
vim /sh/mysql_slave.sh#!/bin/bash#check MySQL_Slave Status#crontab time 00:10MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ ‘{print $4}‘`MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ ‘{print $4}‘`STATUS=$(/usr/local/mysql/bin/mysql -u szk5043 -pszk5043 -S /tmp/mysql.sock -e "show slave status\G" | grep -i "running")IO_env=`echo $STATUS | grep IO | awk ‘ {print $2}‘`SQL_env=`echo $STATUS | grep SQL | awk ‘{print $2}‘`if [ "$MYSQLPORT" == "3306" ] then echo "mysql is running" else mail -s "warn!server: $MYSQLIP mysql is down" [email protected]fiif [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ] then echo "Slave is running!" else echo "####### $date #########">> /tmp/check_mysql_slave.log echo "Slave is not running!" >> /tmp/check_mysql_slave.log mail -s "warn! $MySQLIP_replicate_error" [email protected]fi建議每十分鐘運行一次。*/10 * * * * root /bin/sh /sh/mysql_slave.sh 記得在每台MySQL從機上分配一個szk5043的使用者,許可權大些也沒關係,只限定在本地運行,如下所示:mysql>grant all privileges on *.* to [email protected] identified by ‘szk5043‘;mysql>grant all privileges on *.* to [email protected] identified by ‘szk5043‘;
指令碼設計思路:
1、此指令碼應該能適應各種各樣不同的內外網環境,即IP不同的環境;
2、讓指令碼也順便監控下MySQL是否正常運行;
2.zabbix監控主從同步
編寫一shell指令碼,監控slave的兩個yes(Slave_IO及Slave_SQL進程),如發現只有一個或零個yes,就表明主從有問題了
___________________________________________________________
a.首先給mysql分配一個監控的帳號
mysql> grant replication client on *.* to ‘zabbix‘@‘localhost‘;
b.編寫一個指令碼
vim /sh/mysql-replication.sh#!/bin/bash/usr/local/mysql/bin/mysql -uzabbix -e ‘show slave status\G‘ |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk ‘{print $2}‘|grep -c Yes
#先用zabbix這個使用者來擷取slave的所有狀態,然後grep出這兩個狀態,然後再輸出第二列,最後查看有幾個Yes狀態的 ,正常情況下有兩個Yes狀態。
其實大家會發現,這隻有一條命令,但我卻把它寫到了一個指令碼裡面,這裡我說一下,因為如果你把命令寫到設定檔裡面,每次修改完,你都得重啟agent,所以寫到指令碼裡面更方便調試修改,這應該是一個好習慣。
c.在agent裡面添加監控項
檔案的最後添加如下一行
vim /etc/zabbix_agentd.conf UserParameter=mysql.replication,/home/zabbix/mysql-replication.sh
#等號後面的字串中,逗號前面是Key,後面是執行的指令碼(指令碼不要忘了執行許可權) ,添加好之後,就重啟agent程式
d.server端添加監控項
zabbix_get -s 192.168.1.202 -p10050 -k "mysql.replication"2
#這裡的192.168.1.202是我的agent的IP ,如果主從複製正常,就會返回2 (代表兩個狀態都是Yes)
現在就說明server已經可以從agent擷取狀態了。
現在在管理介面中先添加監控項:
系統配置 -》主機 -》選擇要監控的主機的監控項
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/7E/E6/wKioL1cMm8_AWUtXAACxTwplByc412.png" style="float:none;" title="1.png" alt="wKioL1cMm8_AWUtXAACxTwplByc412.png" />
在右上方選擇建立項目
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/7E/E6/wKioL1cMm9Cg60NLAABQ0rebcC0909.png" style="float:none;" title="2.png" alt="wKioL1cMm9Cg60NLAABQ0rebcC0909.png" />
建立觸發器
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/7E/E9/wKiom1cMmxvhXoj-AABKKjhNlzQ606.png" style="float:none;" title="3.png" alt="wKiom1cMmxvhXoj-AABKKjhNlzQ606.png" />
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/7E/E6/wKioL1cMm9CiQ_BEAAAz2C5KRds637.png" style="float:none;" title="4.png" alt="wKioL1cMm9CiQ_BEAAAz2C5KRds637.png" />
e .測試
[[email protected] ~]# /etc/init.d/mysqld stopShutting down MySQL.. SUCCESS!
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7E/E9/wKiom1cMmxzgPM_GAAC1DnnHoMc201.png" style="float:none;" title="5.png" alt="wKiom1cMmxzgPM_GAAC1DnnHoMc201.png" />
#可以設定相應的郵件或簡訊警示
本文出自 “撫琴煮酒” 部落格,請務必保留此出處http://szk5043.blog.51cto.com/8456440/1762978
監控Mysql主從同步