监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员

要求:
每30秒实现检测一次。
如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。

#!/bin/sh
#monitor mysql master to salve connection
#by zkg 2019-08-22

. /etc/init.d/functions

#Define variables
MYSQLUSER=root
MYSQLPASSWD=DbApp
SOCKET=/data/mysql/tmp/mysql.sock
MYSQLCMD="mysql -u$MYSQLUSER -p$MYSQLPASSWD -S $SOCKET"

#Define array
array_status=($($MYSQLCMD -e "show slave status;"|grep -E "_Running|Behind_Master|_IO_Errno"|awk -F "[:]+" ‘{print $NF}‘|sed ‘s/ //g‘))
error_num=(1158 1159 1008 1007 1062)

#Define function
function check_status(){
if [ "${array_status[0]}" = "Yes" -a "${array_status[1]}" = "Yes" -a "${array_status[2]}" = "0" ];then
action "slave is ok" /bin/true
status=0
return $status
else
status=1
return $status
fi
}

function check_error(){
check_status
if [ $? -ep 1 ];then
for ((i=0;i<${#error_num[*]};i++))
do
if [ "${error_num[i]}" == "${array_status[3]}" ];then
$MYSQLCMD -e "stop slave"
$MYSQLCMD -e "set global sql_slave_skip_counter=1"
$MYSQLCMD -e "start slave"
fi
done
fi
}

function check_again(){
array_status=($($MYSQLCMD -e "show slave status;"|grep -E "_Running|Behind_Master|_IO_Errno"|awk -F "[:]+" ‘{print $NF}‘|sed ‘s/ //g‘))
check_status &>/dev/null
if [ $? -ep 1 ];then
echo "mysql slave is failed,please check quick" >/tmp/mysql_error.log
mail -s "mysql slave is failed" [email protected] </tmp/mysql_error.log
fi
}

function main(){
while true
do
check_error
check_again
sleep 30
done
}
main

原文地址:https://blog.51cto.com/1009516/2431734

时间: 2024-10-11 12:12:34

监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员的相关文章

监控MySQL主从同步是否异常并报警企业案例模拟

企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:阶段1:开发一个守护进程脚本每30秒实现检测一次.阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误.阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分) 此题来自:http://oldboy.blog.51cto.com/2561410/1632876 解答参考1: #!/bin

监控MySQL主从同步

脚本监控数据库主从同步 来源:http://oldboy.blog.51cto.com/2561410/1632876 来源: (生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟: 阶段1:开发一个守护进程脚本每30秒实现检测一次. 阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误. 阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分 [[em

监控mysql主从同步状态是否异常,如果异常,则发生短信或邮寄给管理员

阶段1:开发一个守护进程脚本每30秒实现检测一次. 阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),请跳过错误 阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分) [[email protected] ~]# mysql -u root -proot -e "show slave status\G;" *************************** 1. row ***************************       

zabbix监控mysql主从同步

1,部署了个mysql从数据库,需要时时监控这个从数据库的主从状态.原理的话,是通过从mysql上的zabbix执行show slave status获取Slave_IO_Running|Slave_SQL_Running状态是否都为Yes来判断主从是否正常. MySQL同步功能由3个线程(master上1个,slave上2个)来实现,简单的说就是:master发送日志一个,slave接收日志一个,slave运行日志一个.首先,我们解释一下 show slave status 中重要的几个参数:

监控MYSQL主从同步配置中监控从库运行状态的脚本

代码如下: [java] view plain copy #!/bin/bash #Check MySQL Slave's Runnning Status #Crontab time 00:10 MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'` MYSQLIP=`ifconfig eth0|grep "inet addr" 

zabbix自定义key监控mysql主从同步超简单!

1.在zabbix客户端配置文件中加入: 首先要对mysql提供一个查询主从状态的账号!(当然用root也可以.) UserParameter=mysql.replicate_error,if test `mysql -uxxx -pxxx -h127.0.0.1 -e 'show slave status\G' | awk -F: '{if($1~/Slave_IO_Running/) print$2}' ` = "Yes" -a `mysql -uxxx -pxxx -h127.0

zabbix监控mysql主从同步和延迟

https://blog.csdn.net/natmazz/article/details/90581490 https://www.cnblogs.com/01-single/p/10602610.html 一.环境需求 主机A: zabbix-server 主机B: zabbix-agent/mysql从 二.主机B操作 1.添加监控脚本 vim /data/zabbix/mysql_slave_check.sh #!/bin/bash #2019年03月26日16:25 #auto che

监控MySQL主从同步脚本

#!/bin/sh#date:2015-12-07#filename:Check_MySQL-rep.sh#作者:linuxzkq #Email:[email protected]#version:v1.0 Mysql_cmd="mysql -uroot -poldboy"Error_num=(1158 1159 1008 1007 1062) while truedo    rep=($($Mysql_cmd -e "show slave status\G;"|e

shell监控mysql主从同步

#!/bin/sh MYSQLPORT=`netstat -na|grep"LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'` MYSQLIP=`ifconfig eth0|grep"inet addr" | awk -F[:" "]+ '{print $4}'` STATUS=$(/usr/local/mysql/bin/mysql-e "show s