监控mysql主从状态脚本

1. mysql主从架构搭建

参考链接>> https://blog.csdn.net/m0_46674735/article/details/109597636

2. 基础脚本内容如下

#!/bin/bash
IO=$(mysql -e "show slave status\G;" |awk '/Slave_IO_Running/{print $2}')
SQL=$(mysql -e "show slave status\G;" |awk '/Slave_SQL_Running/{print $2}')

DATE_TIME=$(date +%F_%T)
admin_mail=[email protected]
IP=$(ifconfig |awk '/broadcast/{print $2}')
if [ $IO != "Yes" -o $SQL != "Yes" ];then
    mail.py $admin_mail  "MySQL 警告!!!" "时间:$DATE_TIME  主机名:$HOSTNAME  主机地址:$IP  事件:Slave状态异常"
fi

停掉主库的mysql服务

systemctl stop mariadb

测试脚本

sh check_slave.sh 

成功收到报警邮件

在这里插入图片描述

3. 扩展脚本内容如下

#!/bin/bash
while :
do
    IO=$(mysql -e "show slave status\G;" |awk '/Slave_IO_Running/{print $2}')
    SQL=$(mysql -e "show slave status\G;" |awk '/Slave_SQL_Running/{print $2}')
    LOG_FILE=/tmp/slave_check.log
    DATE_TIME=$(date +%F_%T)
    admin_mail=[email protected]
    IP=$(ifconfig |awk '/broadcast/{print $2}')
    if [ $IO != "Yes" -o $SQL != "Yes" ];then
        echo "$DATE_TIME $HOSTNAME Slave 同步状态异常" >> $LOG_FILE
        mail.py $admin_mail  "MySQL 警告!!!" "时间:$DATE_TIME  主机名:$HOSTNAME  主机地址:$IP  事件:Slave状态异常"
        num=1
        #监控slave状态是否恢复正常
        while [ $num -lt 15 ];do
            IO=$(mysql -e "show slave status\G;" |awk '/Slave_IO_Running/{print $2}')
            SQL=$(mysql -e "show slave status\G;" |awk '/Slave_SQL_Running/{print $2}')
            if [ $IO = "Yes" -a $SQL = "Yes" ];then
                echo "$DATE_TIME $HOSTNAME Slave 同步状态恢复正常" >> $LOG_FILE
                mail.py $admin_mail  "MySQL 通知" "时间:$DATE_TIME  主机名:$HOSTNAME  主机地址:$IP  事件:Slave状态恢复正常"
                break
            else
                let num++
            fi
            sleep 60
        done
    fi
    sleep 60
done

停掉主库的mysql服务

systemctl stop mariadb

测试脚本

sh check_slave.sh 

成功收到报警邮件

在这里插入图片描述

恢复主库的mysql服务

systemctl start mariadb

成功收到状态恢复的通知

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46674735/article/details/112388006
今日推荐