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

[经验分享] 监控Mysql主从同步

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2016-4-13 12:51:14 | 显示全部楼层 |阅读模式
1.shell监控主从同步
编写一shell脚本,监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了
___________________________________________________________
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
vim /sh/mysql_slave.sh
#!/bin/bash
#check MySQL_Slave Status
#crontab time 00:10
MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'`
MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}'`
STATUS=$(/usr/local/mysql/bin/mysql -u szk5043 -pszk5043 -S /tmp/mysql.sock -e "show slave status\G" | grep -i "running")
IO_env=`echo $STATUS | grep IO | awk ' {print $2}'`
SQL_env=`echo $STATUS | grep SQL | awk '{print $2}'`
if [ "$MYSQLPORT" == "3306" ]
      then
   echo "mysql is running"
      else
   mail -s "warn!server: $MYSQLIP mysql is down" szk5043@foxmail.com
fi
if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
      then
   echo "Slave is running!"
      else
   echo "####### $date #########">> /tmp/check_mysql_slave.log
   echo "Slave is not running!" >> /tmp/check_mysql_slave.log
   mail -s "warn! $MySQLIP_replicate_error" szk5043@foxmail.com
fi
建议每十分钟运行一次。
*/10 * * * * root /bin/sh /sh/mysql_slave.sh  
记得在每台MySQL从机上分配一个szk5043的用户,权限大些也没关系,只限定在本地运行,如下所示:
mysql>grant all privileges on *.* to szk5043@localhost identified by 'szk5043';
mysql>grant all privileges on *.* to szk5043@127.0.0.1 identified by 'szk5043';



脚本设计思路:
1、此脚本应该能适应各种各样不同的内外网环境,即IP不同的环境;
2、让脚本也顺便监控下MySQL是否正常运行;

2.zabbix监控主从同步
编写一shell脚本,监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了
___________________________________________________________
a.首先给mysql分配一个监控的账号

1
mysql> grant replication client on *.* to 'zabbix'@'localhost';



b.编写一个脚本

1
2
3
vim /sh/mysql-replication.sh
#!/bin/bash
/usr/local/mysql/bin/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状态。
    其实大家会发现,这只有一条命令,但我却把它写到了一个脚本里面,这里我说一下,因为如果你把命令写到配置文件里面,每次修改完,你都得重启agent,所以写到脚本里面更方便调试修改,这应该是一个好习惯。
c.在agent里面添加监控项
文件的最后添加如下一行
1
2
vim /etc/zabbix_agentd.conf
UserParameter=mysql.replication,/home/zabbix/mysql-replication.sh



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



#这里的192.168.1.202是我的agent的IP ,如果主从复制正常,就会返回2 (代表两个状态都是Yes)
现在就说明server已经可以从agent获取状态了。
现在在管理界面中先添加监控项:
系统配置 -》主机 -》选择要监控的主机的监控项

QQ截图20160413125029.jpg
在右上角选择创建项目
QQ截图20160413125035.jpg
创建触发器
QQ截图20160413125041.jpg
QQ截图20160413125047.jpg
e .测试

1
2
[iyunv@lab-1-C6 ~]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!





QQ截图20160413125053.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-203554-1-1.html 上篇帖子: Mysql主从同步延迟问题及解决方案 下篇帖子: pdo_mysql的缺失造成的报错 监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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