自動監(jiān)控從MySQL同步的腳本 (2011-09-15 16:41) 標簽: mysql shell 分類: Shell 腳本設(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。
#!/bin/bash #check MySQL_Slave Status #crontab time 00:10
Mail-list=
MysqlUser= MysqlPass=
MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'` MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}'` STATUS=$(/usr/local/mysql/bin/mysql -u $MysqlUser -$MysqlPass -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 /bin/mail -s "warning!server: $MYSQLIP mysql is down" $Mail-list fi
if [ "$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 echo "Slave is not running!" #mail -s "warn! $MySQLIP_replicate_error" $Mail-list << /tmp/check_mysql_slave.log echo "`cat /tmp/check_mysql_slave.log`" |mail -s "Warning...slave is not running!!" $Mail-list fi
使用方式:
用crontab設(shè)置定期運行,建議每十分鐘運行一次 */10 * * * * /root/mysql-slave-status.sh
記得在每臺MySQL從機上分配一個jiankong的用戶,權(quán)限大些也沒關(guān)系,只限定在本地運行,如下所示:
|