監控Mysql主從同步

來源:互聯網
上載者:User

標籤:監控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主從同步

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.