实时检查MySQL数据库延迟状况复制中断数据延迟

脚本编写思路:

(1)根据show slave statusG;l列Seconds_Behind_Master;

(2)Seconds_Behind_Master= NULL判断io或sql进程哪个停止或者二者都停止

(3)Seconds_Behind_Master= 0复制正常

(4)Seconds_Behind_Master>0 说明主从延迟

上述(2)、(4)会发出邮件报警,正常时忽略,脚本10s采集数据一次。

#!/bin/bash

########################################

# automatic check mysql replacation status from salve database #

# edit by rgf in 2014/09/03                                                  #

# The scropt distributes in slave databases,if slave db faults,      #

# then it will send email to administrator or dba                       #

########################################

export LANG=zh_CN

base_dir=/usr/bin

logs_dir=/opt/mysql/log

db_user=root

db_pwd=123456

EmailFile=$logs_dir/${HOSTNAME}_mail_`date +%Y%m%d`.log

[email protected]

while true

do

echo "       " > $EmailFile

echo "-----------------------" >> $EmailFile

echo "`date +"%y-%m-%d %H:%M:%S"`" >> $EmailFile

echo "-------------------------" >> $EmailFile

Port=`netstat -ntlp|grep mysqld | awk -F ‘ ‘ ‘{print $4}‘ | awk -F ‘:‘ ‘{print $2}‘`

Ip=`ifconfig |grep "inet addr:"|grep -v "inet addr:127.0.0.1" | awk -F ‘ ‘ ‘{print $2}‘ | awk -F ‘:‘ ‘{print $2}‘`

echo "${HOSTNAME}:$Ip:$Port" >> $EmailFile

Seconds_Behind_Master=`${base_dir}/mysql  -u$db_user -p$db_pwd -e "show slave statusG;" | grep "Seconds_Behind_Master:" | awk -F ‘:‘ ‘{print $2}‘` &> /dev/null

Slave_IO_Running=`${base_dir}/mysql  -u$db_user -p$db_pwd -e "show slave statusG;" | grep "Slave_IO_Running:" | awk -F ‘:‘ ‘{print $2}‘` &> /dev/null

Slave_SQL_Running=`${base_dir}/mysql  -u$db_user -p$db_pwd -e "show slave statusG;" | grep "Slave_SQL_Running:" | awk -F ‘:‘ ‘{print $2}‘` &> /dev/null

if [ $Seconds_Behind_Master = "NULL" ];then

echo "Disruption of replication" >> $EmailFile

if [ $Slave_IO_Running = "Yes" -a $Slave_SQL_Running = "No" ];then

echo "Slave_IO_Running is OK and Slave_SQL_Running is failure" >> $EmailFile

mail -s "Slave_IO OK AND Slave_SQL failured!!" $Email < $EmailFile

elif [ $Slave_IO_Running = "No" -a $Slave_SQL_Running = "Yes" ];then

echo "Slave_IO_Running is failure and Slave_SQL_Running is OK" >> $EmailFile

mail -s "Slave_IO failured AND Slave_SQL OK!!" $Email < $EmailFile

else

echo "Slave_IO_Running is failure and Slave_SQL_Running is failure" >> $EmailFile

mail -s "Slave_IO failure AND Slave_SQL failure!!" $Email < $EmailFile

fi

elif [ $Seconds_Behind_Master -eq 0 ];then

echo "slave is ok!" &> /dev/null

elif [ $Seconds_Behind_Master -gt 0 ];then

echo "slave has beened delayed compared with master" >> $EmailFile

mail -s "slave has beened delayed" $Email < $EmailFile

else

echo "slave Unknown fault!" >> $EmailFile

mail -s "slave Unknown fault!!" $Email < $EmailFile

fi

sleep 10

done

时间: 2024-08-09 00:06:49

实时检查MySQL数据库延迟状况复制中断数据延迟的相关文章

利用navicat for mysql实现mysql数据库表结构复制

1.选择navicat for mysql的数据传输功能 2.选择高级设置,取消插入记录功能 3.选择传输数据库及相应表即可. 利用navicat for mysql实现mysql数据库表结构复制

利用PHP实现登录与注册功能以及使用PHP读取mysql数据库——以表格形式显示数据

登录界面 <body><form action="login1.php" method="post"><div>用户名:<input type="text" name="uid" /></div><br /><div>密码:<input type="password" name="pwd" />

Mysql数据库上修改日期-->造数据

这次要给客户安装测试ineedle设备,但是安装后不会立刻有数据显示,不能够全面的展示给用户web界面的一些信息.此时需要有一个公网服务器能够展示一下ineedle统计数据,但是公司58设备上没有流量了,近期的数据没有更新了,所以准备将数据库中实际数据抽出几天的更改一下日期,使其展示ineedle的web界面上.最新的七天数据是2015.07.27--2015.08.02这7天的数据,正好一个星期.计划是将2015.07.27-2015.08.02修改为2015.10.19-2015.10.25

MySQL 数据库事务与复制

好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,而是在应用技术. 为了更有效率与效果的用好技术,我们需要了解一些技术的原理与工作方式. 带着问题从使用者的角度去剖析技术原理,并将开源技术产品和框架作为一类技术的参考实现来讲解. 以讲清原理为主要目的,对于具体实现的技术细节若无特别之处则尽可能点到即止.

烂泥:学习mysql数据库主从同步复制原理

本文由秀依林枫提供友情赞助,首发于烂泥行天下. 说明本篇文章部分转载自互联网. MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQL Cluster,但因为MySQL Cluster配置比较复杂,所以使用者较少. MySQL的Replication是一个异步复制的过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),它是从一个Mysql

mysql数据库主从同步复制原理

MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQL Cluster,但因为MySQL Cluster配置比较复杂,所以使用者较少. MySQL的Replication是一个异步复制的过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),它是从一个Mysql instance(instance英文为实例)(我们称之为Master)复制到

mysql数据库多源复制方案

概述 由于目前生产环境的mysql数据库分布在两台服务器,若从单一主从来看,配置很简单,但是需要将两台服务器的数据库同步到一台从库上面,需要进行更多配置和注意事项.多源复制有两种方案,Binlog+Position和GTID,我们采用的是第一种方案Binlog+Position进行的多源复制. 安装mysql 在从库的服务器上安装mysql-5.7版本的,目前只有mysql5.7以上的版本才支持多源复制. 配置mysql 1.配置两台master的mysql 在my.cnf配置文件中增加或修改以

后端分布式系列:分布式存储-MySQL 数据库双向同步复制

MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的同一字段的两地变更,会引发数据一致性判断冲突,尽可能通过业务场景设计规避.双主双写并同步复制可能引发主键冲突,需避免使用数据库自增类主键方案.另外,双向同步潜在可能引发循环同步的问题,需要做回环控制. 如上图所示,复制程序写入时也会产生 binlog,如何识别由复制程序产生的 binlog 并将其过

160411、实时监控mysql数据库变化

对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数据库配置文件my.ini (一般在数据库安装目录)(D:\MYSQL) 2.在数据库的最后一行添加 log=log.txt 代码 3.重启mysql数据库 4.去数据库数据目录 我的是(D:\MYSQL\data) 你会发现多了一个log.txt文件 我的是在C:\Documents and Set