内容为自己的一点总结,如有不对欢迎狠劲儿拍砖

本文来自http://yijiu.blog.51cto.com/转载请经博主同意

监控主从复制正常与否

相比各位都应该知道,监控主从是否工作正常,涉及命令如下:

show slave status\G;

那么,我们需要关注的参数如下:

1. 首先查看SQL和IO线程是否为YES状态(想必各位都明白了)

2. 是否有延迟 是否大于0   #一般生成环境延迟是否大于500秒,如果大于500则报警,如大于1000则严重报警

#比如传递一个sql到slave上,binlog中在eventhear中存在time stamp时间戳,在下条binlog拿到的时间会进行比较,如果当前时间是多少则显示多少,如果更新非常频繁500秒会产生更多的sql积累在其中

至少生产中监控就是这么实现的以及包括nagios的监控插件也是这么实现的

主要关注的值本文来自http://yijiu.blog.51cto.com/转载请经博主同意,

1.

Master_Log_File

Read_master_log_Pos

2.

Relay_Master_Log_File

Exec_Master_log_pos

3.

Seconds_Behind_master

判断一个库主要观察以上几点,如果主库挂了,Seconds_Behind_master 会已经成为NULL了

那么这样如何去观测从库是否日志同步完成,如下所示

通过shell实现监控同步的方法

废话不多说了直接上菜

1.利用status去观测是否已经同步完成

判断公式

以下为判断依据,判断以下值

Master_Log_File 和 Relay_Master_Log_File 的值必须相等

判断同步的偏移量

Read_master_log_Pos 和 Exec_Master_log_pos 的值必须相等

根据以上为最基础的判断依据,是否可将其从库提升为主库,就会在从库中判断master log file 是否读到的位置一样并找到一个最靠前的一个节点提升为主

shell内容如下所示:本文来自http://yijiu.blog.51cto.com/转载请经博主同意

#!/bin/bash

user='root'

password='mypass'

thread_status=`/usr/local/mysql/bin/mysql -u"$user" -p"$password" -S /tmp/mysql_3308.sock -e 'show slave status\G'|grep -i yes|wc -l`

status=(`/usr/local/mysql/bin/mysql -u"$user" -p"$password" -S /tmp/mysql_3308.sock -e 'show slave status\G'| egrep -i "Master_Log_File|Relay_Master_Log_File|Read_master_log_Pos|Exec_Master_log_pos|Seconds_Behind_Master" |awk -F':' '{print $2}'`)

echo ${status[4]}

if [[ "$thread_status" != 2 ]]; then

echo "the Replication is Fault , at $(date)" > $catalog

echo `uname -n` | mail umail@qq.com < $catalog

exit 1

fi

if [[ "${status[4]}" > '300' ]];then

echo "yan chi guo gao, at $(date)"  > $catalog

echo `uname -n` | mail umail@qq.com < $catalog

exit 2

fi

if [[ ${status[0]} == ${status[2]} ]] && [[ ${status[1]} == ${status[3]} ]]; then

echo 'The Replication is Normal'

exit 0

else

echo "the Replication is Fault , at $(date)" > $catalog

echo `uname -n` | mail umail@qq.com < $catalog

exit 2

fi

本文来自http://yijiu.blog.51cto.com/转载请经博主同意

2.依赖于程序检测 本文来自http://yijiu.blog.51cto.com/转载请经博主同意

比如程序在master建立表,并随意设置字段,并在master上获取一个时间并写入

now的时间在程序中自行得到并记录,最后在slave中执行select 查看结果是否与时间对应一致

如果时间一样则认为正常,如果master上的时间减去slave上的时间 出现了延迟,那么证明延迟存在的,但是这种方法存在缺陷,比如主库挂了那么则不可用

#!/bin/bash

user='root'

password='mypass'

/usr/local/mysql/bin/mysql -u"$user" -p"$password" -e 'replace into master.repl_heart set t=now(),id=1;' >/dev/null 2>&1

master_select=`/usr/local/mysql/bin/mysql -u"$user" -p"$password" -S /tmp/mysql.sock -e 'select t from master.repl_heart where id=1;' | awk '{print $2}' | tail -1`

slave_select=`/usr/local/mysql/bin/mysql -u"$user" -p"$password" -S /tmp/mysql_3308.sock -e 'select t from master.repl_heart where id=1;' | awk '{print $2}' | tail -1`

master_date=`date -d "$master_select" +%s`

slave_date=`date -d "$slave_select" +%s`

delay=`echo "$master_date"-"$slave_date" | bc`

if [[ $master_date == $slave_date  ]];then

echo 'is ok'

elif [[ $delay -le 500 ]];then

echo cun zai yan chi "$delay"

else

echo "the Replication delay too large "$delay" , at $(date)" > $catalog

echo `uname -n` | mail umail@qq.com < $catalog

fi

需要注意的是:复制中,如果是行格式,就是主库的时间;如果不是行式,这个方法可以把now()这个内置函数在s脚本中生成再写入

以上,为监控mysql主从的两种shell的写法,如有不足,麻烦指出,感谢各位

©著作权归作者所有:来自51CTO博客作者zuzhou的原创作品,如需转载,请与作者联系,否则将追究法律责任

mysql监控mysql主从主从监控运维自动化相关

用shell获取mysql主从状态_shell监控MySQL主从状态脚本两则相关推荐

  1. zabbix获取mysql主从状态_zabbix监控MySQL主从状态

    首先需要拥有zabbix环境及MySQL主从环境 搭建zabbix环境可参考:https://www.cnblogs.com/tyk3201/p/12033456.html 需要用到三台虚拟机 一:1 ...

  2. 监控mysql的pr_zabbix之监控MySQL

    #:先配置MySQL的主从 #:安装Percona Monitoring Plugins (地址:https://www.percona.com/downloads/)#:我安在从库,监控哪个就安哪个 ...

  3. zabbix监控mysql日志告警_zabbix监控mysql以及报警(二)终

    Zabbix部署 监控数据库 报警服务(二) 终 接着zabbix(一)接着部署 配置过一段时间后,观察下监控图效果出来了没 zabbix3.0 server已自带mysql的模板了,只需配置好age ...

  4. mysql 主从复制 性能_zabbix监控mysql各项性能,主从复制

    ###################################################### 监控mysql(默认监控模板不能用,再agentd.conf开启自定义key,自己编写脚本 ...

  5. zabbix监控mysql的原理_zabbix监控mysql数据库性能实现

    Zabbix对于主机监控通常有多种方式: 例如 Trapper.Agent.SNMP.ICMP等. Trapper工作原理: 被监控主机根据用户设定的时间间隔定期将数据push到Zabbix Serv ...

  6. mysql cacti_使用Cacti监控MySQL

    本文将概述一些自己在使用中的问题(并不会给出step by step的使用介绍),以供参考,详细信息请留言. 既然别人的轮子已经很好用了,我自己就不发明了.使用Cacti可以较为快速搭建一个MySQL ...

  7. mysql pacemaker_关于pacemaker监控mysql修复的方法

    对工作中,涉及到数据库修复的一个简单汇总 1.在所有的控制节点上,执行pcs resource命令行,查看控制节点上pacemaker的状态是否异常,如果异常,通过crm_resource -P命令行 ...

  8. zabbix监控mysql的原理_zabbix监控mysql主从

    说明: 部署了个mysql从数据库,需要时时监控这个从数据库的主从状态.原理的话,是通过从mysql上的zabbix执行show slave status获取 Slave_IO_Running|Sla ...

  9. zabbix mysql主从延迟_zabbix监控mysql主从同步和延迟

    一.环境需求 主机A: zabbix-server 主机B: zabbix-agent/mysql从 二.主机B操作 1.添加监控脚本 vim /data/zabbix/mysql_slave_che ...

最新文章

  1. linux部署python web项目 详细_在linux服务器下部署python工程(爬虫)
  2. npm ERR! Please try running this command again as root/Administrator.
  3. python判断_轻松python文本专题-判断对象里面是否是类字符串(推荐使用isinstance(obj,str))...
  4. GirlsInAI 近期计划,求扩散,欢迎大家转起来!
  5. c 抄了java 多少东西,几款Java开发者必备常用的工具,准点下班不在话下
  6. 4后期盒子叫什么_考研:什么叫跨考专业?跨考专业的4大原因和存在3个方面的困难...
  7. 提高网站性能之 —— 减少图片HTTP 请求的方案
  8. SVN安装包汉化VS插件
  9. 编译java源代码文件
  10. 下载ts流视频的成功方法
  11. 通过duet软件实现ipad作为mac的副屏并修改分辨率
  12. 清除数据库日志操作_SQL SERVER
  13. 生活随记 - NBA总决赛第6场 球迷有感
  14. 【小白写代码之九九乘法表,用C/C++来实现】
  15. Matplotlib颜色设置
  16. chrome 打包安装插件
  17. 案例 7-1.3 寻找大富翁(25 分)
  18. 看考研视频如何屏蔽键盘(锁定键盘)
  19. 程序员最新面试谈薪指南
  20. python 遍历文件夹下所有图片

热门文章

  1. C#模拟POST提交表单(一)--WebClient
  2. dubbo管理控制台安装和使用
  3. python算法与数据结构-选择排序算法(33)
  4. mysql中in的用法
  5. RabbitMQ安装方法 安装完成已验证方法步骤可行性
  6. CSS使用display:incline:元素放置在一行之内
  7. PHP的上传文件思路及其代码
  8. java 获取当前目录_java获得当前文件路径
  9. 交换机端口灯闪烁频率一样_思创易控cetron-新品S2024GE 24口全千兆非网管交换机即将上市!...
  10. matlab treeview,treeview控件