这些错误代码:ERROR=(1158 1159 1008 1007 1062 1050) 脚本自动跳过
#!/bin/bash
MYUSER=root
#MYSOCKET=/tmp/mysql3306.sock
MYPASSWD=zshj26@1200
#MYLOGIN="mysql -S $MYSOCKET -u$MYUSER "
MYLOGIN="mysql -u$MYUSER -p$MYPASSWD"
ERROR=(1158 1159 1008 1007 1062 1050)
check_status(){
STATUS=($($MYLOGIN -e "show slave status\G"|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 status\G"|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