MySQL主从同步不一致实现邮件报警
方法一:
环境:由于我们采用腾讯云数据库做的主从,不能登录到云数据库上面,只能从其他一台云服务器上面进行监控。
定期验证MYSQL主从数据一致性在某些时候是一项很值得做的事情,google还提供了MYSQL补丁来自动实现该功能。但某些时候我们能够定期检查到复制的状态也足够了,这里借鉴网上一位网友自动检查mysql主从复制状态的脚本,该脚本实现功能:
1.通过mysql命令判断mysql从服务器三个主要的复制状态值是否正常,检测到有问题后,根据设定时间间隔值,再重复检测两遍,其中Seconds_Behind_Master值因为不能准确地描述复制延迟,所以在3600秒以下都判断为正常。
2.检测到有问题后记录日志并发送邮件通知状态值内容,问题持续则根据设定时间间隔值再发邮件通知,恢复正常也邮件通知。另外,无论正常与否,每天都发送一次邮件通知,由计划任务和时间相关的变量值决定。
该脚本可以监控主从复制状态,如果要验证主从MYSQL数据一致性,可以研究下google提供的MYSQL补丁。
第一步:首先安装mailx组件并配置好能够通过三方邮箱发送邮件
yum -y install mailx
然后编辑mailx的配置文件
vi /etc/mail.rc
在最末尾添加如下信息
set from=xxxxxx@qq.com smtp=smtp.qq.com
set smtp-auth-user=xxxxxx@qq.com smtp-auth-password=xxxxxx
set smtp-auth=login
保存退出后测试邮件是否能够正常发送出去
echo"zabbix test mail" |mail -s "zabbix" xxxxxx@qq.com
[root@monitor scripts]# cat check_replication_status.sh
#/bin/bash
#############################################
# author zhaoyanan
# date 2013/01/25 create
# update 2013/01/28 Adding duplicate detection
#
# Execution:
# touch /root/sh/mysql_slave_status.sh; chmod 700 /root/sh/mysql_slave_status.sh
# vi /etc/crontab
# 5,15,25,35,45,55 * * * * root /root/sh/mysql_slave_status.sh >> /root/sh/mysql_slave_status.log 2>&1
#############################################
######### set variables ############
tmpdir=/tmp
mysqlhost="x.x.x.x"
mysqlport="3306"
mysqlsocket="/var/lib/mysql/mysql.sock"
mysqlbinpath="/usr/bin/"
mysqluser="test"
mysqlpw="xxxx"
servername="123"
normal_status="$servername slave status ok!"
problem_status="$servername slave status problems!"
problem_many_status="$servername slave status problems! (too many times)"
returm_to_nomal="$servername slave status return to normal from the question!"
repeat_alarm_time=12 # Repeat alarm time interval ( About *10 minute. value of 12, about two hours)
failure_interval=10 # Interval after a problem is detected, the unit: seconds ( < 25 seconds)
reporting_time=0855 # Must be notified of the time, even if normal.
curr