Mysql主从状态的简单监视

来源:互联网 发布:115会员充值 淘宝 编辑:程序博客网 时间:2024/06/12 17:07

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

后面有空了我会部署它。




0 0
原创粉丝点击