Monitoreo del script de estado maestro-esclavo de mysql

1. Construcción de la arquitectura maestro-esclavo mysql

Enlace de referencia >> https://blog.csdn.net/m0_46674735/article/details/109597636

2. El contenido básico del guión es el siguiente

#!/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

Detenga el servicio mysql de la base de datos principal

systemctl stop mariadb

Script de prueba

sh check_slave.sh 

Reciba el correo electrónico de alerta con éxito

Inserte la descripción de la imagen aquí

3. El contenido del script extendido es el siguiente

#!/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

Detenga el servicio mysql de la base de datos principal

systemctl stop mariadb

Script de prueba

sh check_slave.sh 

Reciba el correo electrónico de alerta con éxito

Inserte la descripción de la imagen aquí

Restaurar el servicio mysql de la base de datos principal

systemctl start mariadb

Notificación recibida con éxito de la restauración del estado

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_46674735/article/details/112388006
Recomendado
Clasificación