监控MySQL主从脚本

示例一:
cat check_mysql_health

#!/bin/sh
slave_is=($(mysql -S /tmp/mysql3307.sock -uroot -e "show slave statusG"|grep "Slave_.*_Running" |awk '{print $2}')) 
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]
     then
     echo "OK SDK-slave3307 connect master3306 is running"
     exit 0
else
     echo "Critical SDK-slave3307 connect master3306 is not running"
     exit 2
fi 
复制代码
复制代码
示例二:
[root@slavedb test]# cat Check_Mysql_Synchronization.sh 
#!/bin/bash
MYUSER=root
MYSOCKET=/tmp/mysql3306.sock
MYPASSWD=
MYLOGIN="mysql -S $MYSOCKET -u$MYUSER "
ERROR=(1158 1159 1008 1007 1062 1050)
check_status(){
STATUS=($($MYLOGIN -e "show slave statusG"|egrep "Slave_SQL_Running|Slave_IO_Running|Seconds_Behind_Master|Last_SQL_Errno"|awk '{print $NF}'))
if [ "${STATUS[0]}" = "Yes" -a "${STATUS[1]}" = "Yes" -a "${STATUS[2]} = 0" ];then
        echo "Mysql Slave is Ok!"
        CHECK_NUM=0
        return $CHECK_NUM
else
        CHECK_NUM=1
        return $CHECK_NUM
fi
}

check_error(){
        check_status
        if [ $? -eq 1 ];then
                for ((i=0;i<${#ERROR[*]};i++));do
                        if [ "${ERROR[i]}" == "${STATUS[3]}" ];then
                                $MYLOGIN -e "stop slave;"
                                $MYLOGIN -e "set global sql_slave_skip_counter=1"
                                $MYLOGIN -e "start slave;"
                        fi
                done
        fi
}

check_again(){
        STATUS=($($MYLOGIN -e "show slave statusG"|egrep "Slave_SQL_Running|Slave_IO_Running|Seconds_Behind_Master|Last_SQL_Errno"|awk '{print $NF}'))
        check_status >/dev/null 2&>1
        if [ $? -eq 1 ];then
                echo "Mysql slave is fail $(date +%F)"
        fi
}
main(){
        while true;do
                check_error
                check_again
                sleep 10
        done
}
main
原文地址:https://www.cnblogs.com/yueminghai/p/6603539.html