MySQL主從服務器的守護進程監視

檢測myslq從庫狀態,跳過固定的錯誤號,每隔30秒檢測一次,若是符合條件自動跳過或者是重啓從庫mysql

1)取出mysql從庫的關鍵字sql

 

1 [root@localhost scripts]# mysql -u root -p123qq.com3307 -S /data/3307/mysql.sock -e "show slave status\G"|grep -E "Running|Seconds_Behind_Master|Last_SQL_Errno"|awk '{print $NF}'
2 Yes
3 Yes
4 0
5 0

 

 

 

2)把錯誤號定義在數組裏面數組

3)while turebash

根據思路調試出以下腳本測試

 1 [root@localhost scripts]# cat check_mysql_slave.sh 
 2 #/bin/bash
 3 #Date:    
 4 #Author:   
 5 #Mail:     917667797@qq.com
 6 #Function: This scripts  function is check mysql slave is ok
 7 #Version:  1.1
 8 qq="917667796@qq.com"
 9 cmd="mysql -u root -p123qq.com3307 -S /data/3307/mysql.sock -e"
10 ip=`ifconfig eth2|sed -n 's#^.*ddr:\(.*\) Bc.*$#\1#gp'`
11 skip=`$cmd "stop slave;set global sql_slave_skip_counter=1;start slave;"`
12 error_numb=(1158 1159 1008 1007 1062)
13 while true
14 do
15 status=(`$cmd "show slave status\G"|grep -E "Running|Seconds_Behind_Master|Last_SQL_Errno"|awk '{print $NF}'`)
16  
17    if [ "${status[0]}"  == "Yes" -a "${status[1]}" == "Yes" -a "${status[2]}" == "0" ]
18        then
19            echo  "mysql slave is ok"
20        else
21            for ((n=0;n<${#error_numb[*]};n++))
22            do
23               if [ "${status[3]}" == "${error_numb[n]}" ];then
24               ${skip}
25               else
26                $cmd "stop slave;start slave;"
27               fi
28            done
29            echo  "mysql salve is not ok"
30            echo "${ip} mysql is not ok"|mail -s "mysql slave error at `date +%F%T`" $qq
31    fi
32 sleep 3
33 done

 

  

測試結果以下spa

[root@localhost scripts]# sh check_mysql_slave.sh 調試

mysql salve is not okcode

mysql slave is okblog

mysql slave is okip

mysql slave is ok

mysql slave is ok

mysql slave is ok

mysql slave is ok

mysql slave is ok

mysql slave is ok

mysql slave is ok

mysql slave is ok

相關文章
相關標籤/搜索