mysql 主从怎么监控_如何监控MySQL主从同步情况

在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从同步,也变成网站正常运行的重要环节。

c69bfb9b184b939b9e17de5f9950d166.png

MySQL同步功能由3个线程(master上1个,slave上2个)来实现,简单的说就是:master发送日志一个,slave接收日志一个,slave运行日志一个。

首先,我们解释一下 show slave status 中重要的几个参数:

Slave_IO_Running: I/O线程是否被启动并成功地连接到主服务器上。

Slave_SQL_Running: SQL线程是否被启动。

Seconds_Behind_Master:

本字段是从属服务器“落后”多少的一个指示。当从属SQL线程正在运行时(处理更新),本字段为在主服务器上由此线程执行的最近的一个事件的时间标记开始,已经过的秒数。当此线程被从属服务器I/O线程赶上,并进入闲置状态,等待来自I/O线程的更多的事件时,本字段为零。总之,本字段测量从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。

如何监控从服务器是否正常运行呢?

1. 手动执行SHELL脚本

show slave status\G

查看上面所说的3个参数是否正常运行。

2. Percona Toolkit

Percona Toolkit 提供了一些MySQL数据库相关的工具,可以很好的管理MySQL数据库。

Percona工具包可以去这里下载:http://www.percona.com/software/percona-toolkit

pt-heartbeat: 监控MySQL从服务器的延时时间。

pt-slave-restart: 管理MySQL从服务器重启。

pt-table-checksum: 检查主从同步数据的一致性,比如遇到复制错误,我们执行了skip error操作之后,检查一下数据还是很有必要的。不过这个工具需要提前设置一下,安装相应的checksum表,请参阅相关资料。

3. 第三方工具

MySQL Enterprise Monitor,MySQL企业版监控工具。

MONyog – MySQL Monior and Advisor,MONyog大家都不陌生,windows下比较好用的MySQLGUI提供者,也有相关MySQL监控工具。

93c64e05fbf8bd3c3957e373bffc2cdc.png

4. Nagios 以及Zabbix 的相关插件。

Nagios相关插件还是很丰富的,大家可以找到相关MySQL Slave的监控工具。

最后,这里给大家一个开源的MySQL Slave的监控脚本,实用cronjob或者其他相关工具就可以轻易的设置自己的监控工具。

比如我们实用Jenkins+shell脚本,做失败通知即可迅速的搭建一个简单的MySQL监控工具。

MySQL Slave 监控脚本:

#!/bin/bash

# (C) 2012 - Vincent van Scherpenseel, SYN-ACK.org

### VARIABLES ###

SERVER=`hostname`

SECONDS_BEHIND_MASTER=`/usr/bin/mysql -e "SHOW SLAVE STATUS\G"| grep "Seconds_Behind_Master" | awk -F": " {' print $2 '}`

SENTFILE_BROKEN=/tmp/mysql_slaverep_broken.sent

SENTFILE_BEHIND=/tmp/mysql_slaverep_behind.sent

### CHECK FOR REPLICATION BREAK ###

if [ "$SECONDS_BEHIND_MASTER" == "NULL" ]; then

# Slave replication is broken

if [ ! -f $SENTFILE_BROKEN ]; then

# This has not been reported before

echo "Slave replication broken on $SERVER"

touch $SENTFILE_BROKEN

fi

else

# Slave replication is not broken

if [ -f $SENTFILE_BROKEN ]; then

# It was broken before which was reported. Clear that state

echo "Slave replication has been restored on $SERVER"

rm $SENTFILE_BROKEN

fi

### CHECK FOR REPLICATION DELAY ###

if [ "$SECONDS_BEHIND_MASTER" -gt "60" ]; then

# Slave replication is delayed

if [ ! -f $SENTFILE_BEHIND ]; then

# This has not been reported before

echo "Slave replication is $SECONDS_BEHIND_MASTER seconds behind master on $SERVER"

touch $SENTFILE_BEHIND

fi

else

# Slave replication is not delayed

if [ -f $SENTFILE_BEHIND ]; then

# It was delayed before which was reported. Clear that state

echo "Slave replication delay has been recovered and is now $SECONDS_BEHIND_MASTER seconds behind master on $SERVER"

rm $SENTFILE_BEHIND

fi

fi

fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值