首页 Linux基础正文

监测MySQL主从同步shell脚本

Jean Linux基础 2017-11-28 537 0 linuxshell
1.
[root@kroqi ~]# cat slave_check.sh 
#!/bin/sh
while true
do
flag=0
 array=($(egrep "_Running|Behind_Master" slave.log|awk '{print $NF}'))
   for stat in ${array[@]}
    do
       if [ "$stat" != "Yes" -a "$stat" != "0" ]
        then
           let flag=flag+1
        fi
    done
    if  [ $flag -ne 0 ]
      then
          echo "MySQL slave is not working."
        else
          echo "MySQL slave is working."
     fi
  sleep 3
done
2.
#!/bin/sh
while true
do
 array=($(egrep "_Running|Behind_Master" slave.log|awk '{print $NF}'))
 i=`echo ${array[@]}|grep "Yes Yes 0"|wc -l`
       if [ $i -ne 1 ]
        then
          char="MySQL slave is not working."
          echo "$char"
          echo "$char"|mail -s "$char" test@shnne.com
        else
          char1="MySQL slave is working."
          echo "$char1"
       fi
  sleep 5
done
3.
#!/bin/sh
errorno=(1158 1159 1008 1007 1062)
mysql_cmd="mysql -uroot -p123456 -S /data/3308/mysql.sock"
while true
do
flag=0
 array=($($mysql_cmd -e " show slave status\G;"|egrep "_Running|Behind_Master"|awk '{print $NF}'))
 arrerror=($($mysql_cmd -e " show slave status\G;"|egrep "Last_SQL_Errno"|awk '{print $NF}'))
   for stat in ${array[@]}
    do
       if [ "$stat" != "Yes" -a "$stat" != "0" ]
        then
           let flag=flag+1
        fi
    done
    if  [ $flag -ne 0 ]
      then
          for((i=0;i<=${#errorno[@]};i++))
          do
            if [ ${arrerror[0]} -eq ${errorno[$i]} ]
              then
                $mysql_cmd -e "stop slave;set global sql_slave_skip_counter=1;start slave;"
            fi
          done
          echo "MySQL slave is not working."
        else
          echo "MySQL slave is working."
     fi
  sleep 3
done



评论