Linux下MySQL主從同步監控shell腳本

原理:

1)監控MYSQL的運行狀態;

2)Slave機器的IO和SQL狀態都必須為YES,缺一不可;

注意,請結合自身的實際環境使用。

ps:網上搜了下,大致都存在同一個坑,echo輸出的時候沒有注意默認不轉義換行的問題,會導致對Slave_SQL_Running的監控失去意義,實際上是把Slave_IO_Running的值重復監控了。

#!/bin/sh

ip=eth0? #網卡名稱

mysql_binfile=/usr/bin/mysql

mysql_user=root? #MySQL數據庫賬號

mysql_pass=123456? #密碼

datetime=`date +"%Y-%m-%d/%H:%M:%S"`? #獲取當前時間

mysql_slave_logfile=/var/log/mysql/check_mysql_slave.log? #日志文件路徑,必須提前創建好

slave_ip=`ifconfig $ip|grep "inet " | awk -F[:" "]+ '{print $4}'`

status=$($mysql_binfile -u$mysql_user -p$mysql_pass -e "show slave status\G" | grep -i "running")

#驗證方式:Slave_IO_Running=`echo -n "$status" | grep Slave_IO_Running | awk ' {print $1}'` (輸出Slave_IO_Running為正常)

Slave_IO_Running=`echo -n "$status" | grep Slave_IO_Running | awk ' {print $2}'`

#驗證方式:Slave_IO_Running=`echo -n "$status" | grep Slave_SQL_Running | awk ' {print $1}'` (輸出Slave_SQL_Running為正常)

Slave_SQL_Running=`echo -n "$status" | grep Slave_SQL_Running | awk '{print $2}'` #網上有類似的代碼,這里的echo應該加-n參數,并且變量應加引號,否則不轉義換行符,實際匹配出來的結果是Slave_IO_Running參數的值

if [ "$Slave_IO_Running" = "Yes" -a "$Slave_SQL_Running" = "Yes" ]

then

echo "Slave is Running!"

echo "$datetime $slave_ip Slave is Running!" >> $mysql_slave_logfile

else

echo "$datetime $slave_ip Slave is not running!"

echo "$datetime $slave_ip Slave is not running!" >> $mysql_slave_logfile

fi

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 概述 包括mysql宕機報警,mysql主從io,sql狀態異常報警以及主從延遲過長報警 通過外部STMP發郵件 ...
    syncwt閱讀 581評論 0 2
  • 當《你的名字。》結束后,我一直呆呆地坐在影院里,希望看到彩蛋。 在演職人員表里,我看到了很多中國人或是韓國人的身影...
    阿啊阿吖丁閱讀 486評論 0 0
  • 德國作家帕·聚斯金德所著的《香水》,看名字,以為讀起來讓人感官愉悅。其實不然,相信過來人的忠告——千萬別在進食時...
    清霞仙子閱讀 483評論 5 1