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