监控MySQL主从脚本

时间:2023-03-10 06:35:04
监控MySQL主从脚本
示例一:
cat check_mysql_health #!/bin/sh
slave_is=($(mysql -S /tmp/mysql3307.sock -uroot -e "show slave status\G"|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
监控MySQL主从脚本
监控MySQL主从脚本
示例二:
[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 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