检查mysql主从同步
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/binLOGFILE=/data/repair_mysql_sync_`date +%F`.log
SQLCMD1="show slave status"## 查看MySQL是否已启动
if [[ `ps aux | grep mysqld | grep -v grep`"X" = "X" ]]; thenecho The MySQL is not running at: `date +%F" "%H-%M-%S` >> ${LOGFILE}exit 1
fi## 获得MySQL从端Relay binlog的路径
retval=`grep "^relay-log" /etc/my.cnf | grep -v relay-log- | grep '/'`
if [[ "${retval}" = "X" ]]; thenRELAY_BINLOG_PATH=`ps aux | grep -w mysqld | grep -v grep | awk '{print $13}' | awk -F '=' '{print $2}'`
elseRELAY_BINLOG_PATH=`dirname $(echo ${retval} | awk -F '=' '{print $2}')`
fi## 查找master.info文件,用于定位Binlog信息
MASTER_FILE=`ps aux | grep -w mysqld | grep -v grep | awk '{print $13}' | awk -F '=' '{print $2}'`/master.info
if [[ ! -e ${MASTER_FILE} ]]; thenecho This Server is not MySQL Slave at: `date +%F" "%H-%M-%S` >> ${LOGFILE}exit 1
fi## 获得当前的同步状态
IO_STATUS=`mysql -uroot -e "${SQLCMD1}\G;" | awk '$1=="Slave_IO_Running:" {print $2}'`
SQL_STATUS=`mysql -uroot -e "${SQLCMD1}\G;" | awk '$1=="Slave_SQL_Running:" {print $2}'`
if [[ "${IO_STATUS}" = "Yes" && "${SQL_STATUS}" = "Yes" ]]; thenecho Now, The MySQL Replication is synchronous at: `date +%F" "%H-%M-%S` >> ${LOGFILE}exit 0
fi## 从master.info文件中,获得MySQL主端的同步信息
REPLI_INFO=`sed '/^$/d' ${MASTER_FILE} | tail +2 | head -5`
REPLI_BINLOG_FILE=`echo ${REPLI_INFO} | awk '{print $1}'`
REPLI_IPADDR=`echo ${REPLI_INFO} | awk '{print $3}'`
REPLI_USER=`echo ${REPLI_INFO} | awk '{print $4}'`
REPLI_PWD=`echo ${REPLI_INFO} | awk '{print $5}'`## 删除无用的Relay binlog
rm -rf ${RELAY_BINLOG_PATH}/*-relay-bin.*## 直接从0位置开始同步
SQLCMD2="change master to master_host='${REPLI_IPADDR}', master_user='${REPLI_USER}', master_password='${REPLI_PWD}',"
SQLCMD2="${SQLCMD2} master_log_file='${REPLI_BINLOG_FILE}', master_log_pos=0"
mysql -uroot -e "stop slave;"
mysql -uroot -e "${SQLCMD2};"
mysql -uroot -e "start slave;"## 如果同步的过程中,出现重复记录导致同步失败,就跳过
while true
dosleep 2IO_STATUS=`mysql -uroot -e "${SQLCMD1}\G;" | awk '$1=="Slave_IO_Running:" {print $2}'`SQL_STATUS=`mysql -uroot -e "${SQLCMD1}\G;" | awk '$1=="Slave_SQL_Running:" {print $2}'`BEHIND_STATUS=`mysql -uroot -e "${SQLCMD1}\G;" | awk '$1=="Seconds_Behind_Master:" {print $2}'`SLAVE_BINLOG1=`mysql -uroot -e "${SQLCMD1}\G;" | awk '$1=="Master_Log_File:" {print $2}'`SLAVE_BINLOG2=`mysql -uroot -e "${SQLCMD1}\G;" | awk '$1=="Relay_Master_Log_File:" {print $2}'`## 出现错误,就将错误信息记录到日志文件,并跳过错误继续同步if [[ "${IO_STATUS}" != "Yes" || "${SQL_STATUS}" != "Yes" ]]; thenERRORINFO=`mysql -uroot -e "${SQLCMD1}\G;" | awk -F ': ' '$1=="Last_Error" {print $2}'`echo "The MySQL synchronous error information: ${ERRORINFO}" >> ${LOGFILE}mysql -uroot -e "stop slave;"mysql -uroot -e "set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;"mysql -uroot -e "start slave;"## 已完成同步,就正常退出elif [[ "${IO_STATUS}" = "Yes" && "${SQL_STATUS}" = "Yes" && "${SLAVE_BINLOG1}" = "${SLAVE_BINLOG2}" && ${BEHIND_STATUS} -eq 0 ]]; thenecho The MySQL synchronous is ok at: `date +%F" "%H-%M-%S` >> ${LOGFILE}breakfi
done

转载于:https://blog.51cto.com/hashlinux/1865729

mysql主从同步检测相关推荐

  1. 监控mysql主从的工具_zabbix利用percona-toolkit工具监控Mysql主从同步状态

    一.下载percona-toolkit工具包 percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等. [root ...

  2. MySQL 主从同步延迟的原因及解决办法

    首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校 会员中心 收藏 动态 消息 创作中心 MySQL 主从同步延迟的原因及解决办法 hao_yunfeng 2018-09-04 23 ...

  3. MySQL主从同步(一主一从、一主多从、主从从)等结构的概述与配置

    前言:前面我们了解了MySQL数据库的基础知识,今天及接下来的五天时间里我会给大家带来MySQL进阶方面的一些学习总结,如有不足,还请大家留言指出:下面我们就开始今天的内容. ** 部署mysql主从 ...

  4. 运维派 企业面试题1 监控MySQL主从同步是否异常

    Linux运维必会的实战编程笔试题(19题) 企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读 ...

  5. MySQL主从同步详解与配置

    https://zhuanlan.zhihu.com/p/335142300 MySQL主从同步详解与配置 第一部分[原理解析] * 应用背景* MySQL数据库自身提供的主从复制功能可以方便的实现数 ...

  6. 最全 MySQL主从同步与主主同步

    目录 同步原理 主从复制实际配置与取消主从 Slave_IO_Running:Connecting :处理 /var/lib/mysql/目录下的数据库文件 主从复制下主服务器 主从复制下从服务器 同 ...

  7. MySQL 主从同步percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    在mysql工作中接触最多的就是mysql replication,mysql在复制方面还是会有一些常规问题,比如主库宕机或者从库宕机有可能会导致复制中断,通常需要进行人为修复,或者很多时候需要把一个 ...

  8. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

    在mysql工作中接触最多的就是mysql replication,mysql在复制方面还是会有一些常规问题,比如主库宕机或者从库宕机有可能会导致复制中断,通常需要进行人为修复,或者很多时候需要把一个 ...

  9. 项目性能优化(MySQL读写分离、MySQL主从同步、Django实现MySQL读写分离)

    当项目中数据库表越来越多,数据量也逐渐增多时,需要做数据库的安全和性能的优化.对于数据库的优化,可以选择使用MySQL读写分离实现. 1.MySQL主从同步 1.主从同步机制 1.1.主从同步介绍和优 ...

最新文章

  1. win7分区c盘调整容量_如何扩大C盘空间 增加C盘容量方法有哪些【详细介绍】
  2. 针对【H-2017年信息基础班(周一班)】某些同学恶意使用lyl洛谷的谴责
  3. 4.02Day12函数 装饰器
  4. cocos2d-x游戏实例(1)-视角跟随主角
  5. redhat5 oracle11g安装全程详解,RedHat5+Oracle11g安装全程详解.doc
  6. C#Socket通信
  7. cisc 和 risc_RISC和CISC | 电脑组织
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的递代收系统
  9. python中MySQLdb模块用法实例
  10. Servlet 服务器 HTTP 响应
  11. Redis基础(一)——NoSQL
  12. Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数
  13. 转:安卓android开源项目(汇总)
  14. hdu 1698 Just a Hook
  15. 大气压力换算公式_常用压力单位换算表
  16. jDBC连接mysql数据库的5种方式
  17. miui9支持android,基于Android Q的MIUI来了 小米9尝鲜
  18. 解决VMware虚拟机中没有vmnet0的情况
  19. 阿里巴巴2015秋季校园招聘研发工程师在线笔试题
  20. 《绝冬城之夜2》(Neverwinter Nights 2 CHT) 国际中文版(增加简体补丁)

热门文章

  1. Knockout.js 整理
  2. JAVA实验3:Java-MySQL实现银行转账系统
  3. ie浏览器调用本地文件无反应_win7 ie浏览器打不开本地htm文件
  4. Java毕业设计 社区疫情防控管理系统
  5. ar8171 linux网卡驱动,ar8171 8175网卡驱动(ar8171网卡驱动下载)V1.0.1 官方最新版
  6. 28所示范性微电子院校占地面积排名,中山大学第一!
  7. CSS overflow用法
  8. A. DS内排—直插排序
  9. MFC 修改字体的颜色
  10. Hadoop启动错误:WARNING log4j.properties is not found. HADOOP_CONF_DIR may be incomplete