Mysql主从状态的简单监视

本文介绍了如何搭建Mysql主从环境并使用脚本监视从库状态,包括检查Slave_IO_Running和Slave_SQL_Running的状态,设置定时任务进行监控,并通过sendmail服务发送邮件通知异常情况。同时,提到了在确保主从数据一致性的基础上,可以利用pt-table-checksum工具进行更深入的验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql主从搭建成功后,需要监视从库的状态

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: XXXXXXX
                  Master_User: reptor
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000093
          Read_Master_Log_Pos: 205773579
               Relay_Log_File: Report-relay-bin.000075
                Relay_Log_Pos: 205773742
        Relay_Master_Log_File: mysql-bin.000093
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

比较简单的方法是,监视Slave_IO_Running 和 Slave_SQL_Running是否为yes。

网上找了一个脚本

#!/bin/sh
ip=`ifconfig eth1|sed -n 2p|awk  '{ print $2 }'|awk -F : '{ print $2 }'`
port='3306'
array=($(mysql -uroot -pXXXX  -e "show slave status\G"|grep "Running" |awk '{print $2}'))
if [ "$port" == "3306" ]
   then
     if [ "${array[0]}" == "Yes" ] || [ "${array[1]}" == "Yes" ]
          then
            echo "slave is OK"
       else
            echo "slave: ${ip} replication error" | mail -s 'slave replication is error' XXX@qq.com YYYY@qq.com
    fi
else
   echo "slave: ${ip} mysql is stop" | mail -s 'slave mysql is stop' XXX@qq.com YYYY@qq.com

然后设置定时任务,比如每个小时执行一次

* */1 * * * sh /mnt/erp/batch/checkSlave.sh

设定为crontab任务后,执行shell时,用户的环境变量会丢失。

所以在#!/bin/sh下面添加

. /etc/profile
. ~/.bash_profile

以启用用户的环境变量

执行之后可能会发不出mail,还需要进一步安装配置mail服务。

我用的是centOS,直接安装sendmail

yum install sendmail

安装好sendmail以后执行以下命令启动sendmail

service sendmail start

安装成功后测试一下就OK了

echo "This is test mail" | mail -s 'Test mail' XXX@qq.com

这样一个简单的主从状态监视就搭建完毕了。

但即使不报错,比不能保证主从同步的正确性。

因为,即使主从的数据不一致,只要不发生类似于主键冲突的error,状态依然显示为两个yes。

要想完全确认主从一致性,需要另一个工具

pt-table-checksum

后面有空了我会部署它。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值