自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

自動監(jiān)控從MySQL同步的腳本

原創(chuàng)
系統(tǒng) Linux
筆者有不少基于公網(wǎng)類型的網(wǎng)站做的都是MySQL主從架構(gòu),從機主要起備份數(shù)據(jù)庫和冷備份的作用,雖然從機宕機了問題不大,但也影響數(shù)據(jù)的備份工作;這樣的網(wǎng)站有數(shù)十個,如果一個一個手動的檢查,每天都要浪費不少時間,所以設(shè)計了一個自動監(jiān)控從MySQL同步的腳本。此腳本應(yīng)該能適應(yīng)各種各樣不同的內(nèi)外網(wǎng)環(huán)境。

【51CTO獨家特稿】筆者有不少基于公網(wǎng)類型的網(wǎng)站(沒有硬件防火墻,直接置于IDC機房)做的都是MySQL主從架構(gòu),從機主要起備份數(shù)據(jù)庫和冷備份的作用,雖然從機宕機了問題不大,但也影響數(shù)據(jù)的備份工作;這樣的網(wǎng)站有數(shù)十個,如果一個一個手動的檢查,每天都要浪費不少時間,所以設(shè)計了一個自動監(jiān)控從MySQL同步的腳本。

腳本設(shè)計思路:

1、此腳本應(yīng)該能適應(yīng)各種各樣不同的內(nèi)外網(wǎng)環(huán)境,即IP不同的環(huán)境;

2、讓腳本也順便監(jiān)控下MySQL是否正常運行;

3、Slave機器的IO和SQL狀態(tài)都必須為YES,缺一不可,這里用到了多重條件判斷-a。

腳本內(nèi)容:

#crontab time 00:10
#!/bin/bash
#check MySQL_Slave Status
#crontab time 00:10
MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'`
MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}'`
IO_env=`echo $STATUS | grep IO | awk  ' {print $2}'`
SQL_env=`echo $STATUS | grep SQL | awk  '{print $2}'`
DATA=`date +"%y-%m-%d %H:%M:%S"`

if [ "$MYSQLPORT" == "3306" ]
then
  echo "mysql is running"
else
  echo $MYSQLIP mysql is down" | mail -s "warn!server: $MYSQLIP mysql is down" 1309889xxxx@wo.com.cn
fi

if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
then
  echo "Slave is running!"
else
echo "Slave is not running!" | mail -s "warn! $DATA $MYSQLIP MySQL Slave is not running" 1309889xxxx@163.com
fi

上面是最終版本,增加了DATA參數(shù),可以準確定位是哪一個時間點MySQL主從出現(xiàn)了問題。大家可以比較一下與之前***個版本有什么不同:

#!/bin/bash
#check MySQL_Slave Status
#crontab time 00:10
MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'`
MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}'`
STATUS=$(/usr/local/webserver/mysql/bin/mysql -u yuhongchun -pyuhongchun101 -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" yuhongchun027@163.com
fi

if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
then
  echo "Slave is running!"
else
  echo "#######  $date  #########">> /data/data/check_mysql_slave.log
  echo "Slave is not running!" >> /data/data/check_mysql_slave.log
  mail -s "warn! $MySQLIP_replicate_error" yuhongchun027@163.com << /data/data/check_mysql_slave.log
fi

使用方式:

用crontab設(shè)置定期運行,建議每十分鐘運行一次

*/10 * * * * root /bin/sh /root/mysql_slave.sh 

記得在每臺MySQL從機上分配一個yuhongchun的用戶,權(quán)限大些也沒關(guān)系,只限定在本地運行,如下所示:

grant all privileges on *.* to "yuhongchun"@"127.0.0.1" identified by "yuhongchun101";
grant all privileges on *.* to "yuhongchun"@"localhost" identified by "yuhongchun101";

后期應(yīng)用:

后期公司的MySQL數(shù)據(jù)庫準備由一主一從架色升級成一主多從,讀寫分離的架構(gòu),LVS作從數(shù)據(jù)庫的負載均衡器,此腳本自動監(jiān)控從MySQL的replication狀態(tài),如果不能同步則自動關(guān)閉本機的MySQL服務(wù),免得影響整個網(wǎng)站的正常業(yè)務(wù)訪問。當然了,到時腳本的運行周期肯定也需要更改,由10分鐘變成秒級的,這個可以通過while循環(huán)來實現(xiàn)。

大家如果考慮用手機郵的話,有些事情也請注意一下:

一、Linux服務(wù)器本身就有sendmail服務(wù)的,它發(fā)送郵件的功能的效果就不錯,沒必要再經(jīng)過公司的郵箱服務(wù)器中轉(zhuǎn);

二、聯(lián)通雖然可以和郵箱綁定并設(shè)置郵件到達發(fā)送警報,但發(fā)現(xiàn)聯(lián)通的號延遲問題、到達問題還是很多,建議大家還是以移動的號為主;

三、這種報警策略只是作為輔助而已。 

【51CTO.com獨家特稿,轉(zhuǎn)載請注明原文作者和出處?!?/p>

【編輯推薦】

  1. CentOS上Cacti配置監(jiān)控mysql
  2. MySQL數(shù)據(jù)庫入門與精通教程
  3. MySQL平臺數(shù)據(jù)庫備份方案詳細說明
責任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2011-06-20 09:52:56

MySQL

2023-05-11 08:46:28

MySQL

2014-05-21 14:37:27

Zabbix監(jiān)控MySQL

2022-06-09 08:07:15

Shell腳本Linux

2020-04-01 15:11:36

Shell命令Linux

2011-08-25 09:33:25

MySQL運維

2009-07-20 15:42:34

監(jiān)控JRubyJProfiler

2011-03-24 10:59:10

Nagios監(jiān)控mysql

2010-10-13 09:45:50

Linux監(jiān)控腳本

2024-11-28 09:23:09

2013-09-04 09:59:49

監(jiān)控 Shell 腳本

2017-06-29 09:28:37

OracleMariaDB復(fù)制

2013-08-30 10:25:22

Shell主機監(jiān)控

2011-03-29 11:20:36

Cacti模板MySQL stats

2023-08-29 07:22:06

MySQL數(shù)據(jù)工具故障恢復(fù)

2010-05-31 14:32:44

SVN自動同步

2017-01-18 10:57:24

MySQLZabbix監(jiān)控

2017-07-10 14:20:45

2010-05-17 14:00:07

MySql數(shù)據(jù)庫

2020-09-24 08:45:10

React架構(gòu)源碼
點贊
收藏

51CTO技術(shù)棧公眾號