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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

阶段1:开发一个守护进程脚本每30秒实现检测一次。

阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),请跳过错误

阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@slave ~] # mysql -u root -proot -e "show slave status\G;"
*************************** 1. row ***************************
                Slave_IO_State: Waiting  for  master to send event
                   Master_Host: 172.16.1.2       #当前的mysql master服务器主机
                   Master_User: myslave
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: master-bin.000003
           Read_Master_Log_Pos: 471
                Relay_Log_File: relay-log-bin.000002
                 Relay_Log_Pos: 252
         Relay_Master_Log_File: master-bin.000003
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
                      Master_SSL_Key: 
                            Seconds_Behind_Master: 0     #和主库比同步延迟的秒数
1
2
3
4
5
6
7
8
9
10
11
  准备:
  
  egrep  "_Running|Behind_Master"  slave.log    #过滤
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
         Seconds_Behind_Master: 0
         
  [root@slave ~] # egrep "_Running|Behind_Master" slave.log | awk '{print $NF}'
Yes
Yes
0


阶段一:开发一个守护进程脚本每30秒实现检测一次。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
while  true
do
   array=($( egrep  "_Running|Behind_Master"  slave.log| awk  '{print $NF}' ))
   if  "${array[0]}"  ==  "Yes"  -a  "${array[1]}"  ==  "Yes"  -a  "${array[2]}"  ==  "0"  ]
   then
     echo  "MySQL is slave is ok"
   else
       char= "MySQL slave is not ok"
       echo  "$char"
       echo  "$char" |mail -s  "$char"  995345781@qq.com
       break
   fi
   sleep  30
done
 
 
执行结果:
[root@slave ~] # sh test.sh  
MySQL is slave is ok
MySQL is slave is ok


终极版:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
#Date:2017-7-3
#Author:xcn(baishuchao@yeah.net)
#version 1.0
mysql_cmd= "mysql -u root -proot"
errorno=(1158 1159 1008 1007 1062)
while  true
do
   array=($($mysql_cmd -e  "show slave status\G" | egrep  '_Running|Behind_Master|Last_SQL_Errno' | awk  '{print $NF}' ))
   if  "${array[0]}"  ==  "Yes"  -a  "${array[1]}"  ==  "Yes"  -a  "${array[2]}"  ==  "0"  ]
   then
     echo  "MySQL is slave is ok"
   else
       for  ((i=0;i<${ #errorno[*]};i++))
       do
         if  "${array[3]}"  "${errorno[$i]}"  ]; then
         $mysql_cmd -e  "stop slave &&set global sql_slave_skip_counter=1;start slave;"
         fi
       done
       char= "MySQL slave is not ok"
       echo  "$char"
       echo  "$char" |mail -s  "$char"  995345781@qq.com
       break
   fi
   sleep  30
done


提示:这个脚本可以用于生产环境中,监控mysql主从同步状态是否异常,根据

1
'_Running|Behind_Master|Last_SQL_Errno'

这个进行判断,如果不正常的话则会进一步判断状态码,然后进行输出,则会发邮件或短信给运维人员





本文转自 baishuchao 51CTO博客,原文链接:http://blog.51cto.com/baishuchao/1944170





相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
20天前
|
存储 监控 关系型数据库
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
|
1月前
|
SQL 监控 关系型数据库
MySQL性能调优:监控和优化
MySQL性能调优:监控和优化
54 1
|
1月前
|
SQL 存储 关系型数据库
MySQL的主从复制&主从同步
MySQL的主从复制&主从同步
30 0
|
1月前
|
Ubuntu 关系型数据库 MySQL
使用Ubuntu和Windows电脑实现Mysql主从同步(详细操作步骤)
使用Ubuntu和Windows电脑实现Mysql主从同步(详细操作步骤)
28 2
|
2月前
|
监控 关系型数据库 MySQL
HeartBeat监控Mysql状态
HeartBeat监控Mysql状态
|
14天前
|
SQL 关系型数据库 MySQL
mysql主从同步出错解决办法
mysql主从同步出错解决办法
10 0
|
1月前
|
关系型数据库 MySQL Java
IDEA+Mysql调试常见异常解决办法_kaic
IDEA+Mysql调试常见异常解决办法_kaic
|
2月前
|
监控 关系型数据库 MySQL
MetricBeat监控MySQL
MetricBeat监控MySQL
|
2月前
|
存储 监控 关系型数据库
ELK架构监控MySQL慢日志
ELK架构监控MySQL慢日志
|
2月前
|
SQL 监控 关系型数据库
rds迁移过程监控
rds迁移过程监控
22 1