教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 MySQL怎么样监控主从同步情况

MySQL怎么样监控主从同步情况

发布时间:2023-04-29   编辑:jiaochengji.com
教程集为您提供MySQL怎么样监控主从同步情况等资源,欢迎您收藏本站,我们将为您提供最新的MySQL怎么样监控主从同步情况资源
在大型网站架构中,mysql数据库一般会采用主从同步。由于网络或者管理员失误会出现不同步的情况,那么mysql如何去监控主从同步呢?本文将详情介绍这个问题。

MySQL主从同步监控

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 statusG


查看上面所说的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监控工具。

 


MySQL怎么样监控主从同步情况

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 STATUSG"| 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



推荐阅读:添加新数据库到MySQL主从复制教程解问题解答

 

您可能感兴趣的文章:
mha是python写的吗
自动监控mysql主从同步的shell脚本代码
解决mysql主从复制数据库不同步的2种方法
mysql主从复制配置与原理分析
mysql主从复制读写分离的实现方法
各版本MySQL并行复制的实现及优缺点
php高级程序员该学什么
MySQL-Proxy读写分离要注意的问题
配置mysql主从复制的一点心得体会
Mysql复制主键冲突的问题及解决方法

[关闭]
~ ~