设为首页 收藏本站
查看: 1501|回复: 0

[经验分享] Zabbix 检测Mysql数据库的主从同步

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-14 09:05:18 | 显示全部楼层 |阅读模式
在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从同步,也变成检测网站正常运行的重要环节。
wKiom1hPa72QJ9zlAABjDfzDn5M328.jpg
MySQL同步功能由3个线程(master上1个,slave上2个)来实现,简单的说就是:master发送日志一个,slave接收日志一个,slave运行日志一个。
首先,我们解释一下 show slave status  中重要的几个参数:   

1
2
3
Slave_IO_Running: I/O线程是否被启动并成功地连接到主服务器上。
Slave_SQL_Running: SQL线程是否被启动。
Seconds_Behind_Master:本字段是从属服务器“落后”多少的一个指示。当从属SQL线程正在运行时(处理更新),本字段为在主服务器上由此线程执行的最近的一个事件的时间标记开始,已经过的秒数。当此线程被从属服务器I/O线程赶上,并进入闲置状态,等待来自I/O线程的更多的事件时,本字段为零。总之,本字段测量从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。





那么如何监控从服务器是否正常运行呢?
1、创建监控MYSQL的账号
1
2
mysql -uroot -p密码
mysql> grant replication client on *.* to 'zabbix'@'localhost';





2、写一个监控脚本这个脚本主要用于获取MYSQL主从同步信息;
我们先执行一个命令
1
mysql -u zabbix -e 'show slave status\G'





我们在输出的信息中选择
1
2
Slave_IO_Running: Yes
Slave_SQL_Running: Yes





这两项来监控,我测试了一下,当操作的数据出现异常的时候,Slave_SQL_Running就会变成No,当执行slave stop的时候,两个都会变成No;
脚本内容如下
1
2
#!/bin/bash
mysql -uzabbix -e 'show slave status\G' |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes





我只写了一条命令,这里详细说明一下它的意思;
先用zabbix这个用户来获取slave的所有状态,然后grep出这两个状态,然后再输出第二列,最后查看有几个Yes状态的,正常情况下有两个Yes状态。
3zabbix agent里面添加监控项文件的最后添加如下一行
1
UserParameter=mysql.replication,/home/zabbix/mysql-replication.sh





等号后面的字符串中,逗号前面是Key,后面是执行的脚本(脚本不要忘了执行权限)
添加好之后,就重启agent程序
4、Server端添加监控项
1
2
zabbix_get -s 192.168.0.34 -k "mysql.replication"
2





这里的192.168.0.34 是我的agent的IP,如果主从复制正常,就会返回2 (代表两个状态都是Yes),现在就说明Server已经可以从agent获取状态了,现在在管理界面中先添加监控项:
配置--模板
先创建一个模板,这个模板的主要功能是用于监视MYSQL主从复制的状态;
wKioL1hPa77AKmBtAABWdDYdJQY441.jpg
添加触发器
当返回的值小于2时,说明只存在1个YES或0个YES,这时候说明MYSQL主从同步出现异常,即产生报警;
wKioL1hPa7-QavbfAABiBCx2HCk724.jpg
获取最新数据
wKiom1hPa8Dw2ZxCAAAngdRvcw8572.jpg
在这里可以看到,已经获取了最新的监控数据,说明监控添加成功;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314027-1-1.html 上篇帖子: zabbix监控mysql down的时候 不报警解决方法 下篇帖子: Python 获取zabbix数据图并发邮件 数据库 检测
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表