MySQLマスタースレーブの同期状態を自動的にチェックするshellスクリプト


MySQLは同期する時、2つのYesに注目する必要があります.同期の状況を常に理解しなければなりません.毎回システムに登録して調べることはできません.もちろん、監視カメラを使うことを考えます.以下は収集した資料です.それから自分の整理を経て、皆さんの参考にします.
スクリプトはSlaveのmysqlデータベース上で実行され、Mysqlのインストールディレクトリは/usr/local/mysql/、傍受ポートはTCP 3306、MySQLのバージョンは:5.6.27、オペレーティングシステムはCentOS 6.7、IPV 6をオフにしていない.
 
#!/bin/bash
#Check MySQL_Slave Status
#MySQL version: 5.6.27
#
MySQL_PORT=`netstat -an|grep "LISTEN"|grep "3306"|awk -F ' ' '{print $4}'|awk -F ':' '{print $4}'`
MySQL_IP=`ifconfig eth0 |grep "inet addr"|awk -F ':' '{print $2}'|awk -F ' ' '{print $1}'`
MySQL_Status=$(/usr/local/mysql/bin/mysql -S /tmp/mysql.socket -uroot -pfgjh123. -e "show slave status\G" |grep -i "running"|head -n2)
IO_env=`echo $MySQL_Status | grep Slave_IO_Running |awk '{print $2}'`
SQL_env=`echo $MySQL_Status |grep Slave_SQL_Running |awk '{print $2}'`
ToDay=`date +"%y-%m-%d %H:%M:%S"`
if [ "$MySQL_PORT" == "3306" ]
  then
    echo "######  $ToDay  ######" >> /data/check_mysql_slave_ok.log
    echo "MySQL Server is running !" >> /data/check_mysql_slave_ok.log
else
  mail -s "Warn! Server:$MySQL_IP MySQL is Down" [email protected]
fi
if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
  then
    echo "######  $ToDay  ######" >> /data/check_mysql_slave_ok.log
    echo "Slave MySQL Server Slave_IO and Slave_SQL is running !" >> /data/check_mysql_slave_ok.log
else
  echo "######  $ToDay  ######" >> /data/check_mysql_slave_warn.log
  echo "Slave is not running !" >> /data/check_mysql_slave_warn.log
  echo "Slave is not running !" | mail -s "Warn! $MySQL_IP MySQL Slave is not running " [email protected]
fi

タスク計画crontabを使用して、10分ごとにモニタリングを実行します.
*/10 * * * * root /bin/sh /root/shell/Check_MySQL_Slave_Status.sh

シナリオは構想です:同時にSlave機械のIOとSQLの状態を監視してすべてYESでなければならなくて、1つ欠けてはいけなくて、ここで多重条件の判断-aを使いました
参考資料:
http://yuhongchun.blog.51cto.com/1604432/666019
補足:8行目の最後のawkは$2であるべきで、私のここのスクリプトは$4で、私はipv 6を閉じていないので、ipv 6を閉じた場合、確かに$2なので、自分の実際の状況に応じて修正して使用する必要があります.