自动监控主从MySQL同步的SHELL脚本

代码如下:

 
  1. #!/bin/bash
  2. #checkMySQL_SlaveStatus
  3. #crontabtime00:10
  4. MYSQLPORT=`netstat-na|grep"LISTEN"|grep"3306"|awk-F[:""]+'{print$4}'`
  5. MYSQLIP=`ifconfigeth0|grep"inetaddr"|awk-F[:""]+'{print$4}'`
  6. STATUS=$(/usr/local/webserver/mysql/bin/mysql-uyuhongchun-pyuhongchun101-S/tmp/mysql.sock-e"showslavestatus\G"|grep-i"running")
  7. IO_env=`echo$STATUS|grepIO|awk'{print$2}'`
  8. SQL_env=`echo$STATUS|grepSQL|awk'{print$2}'`
  9. DATA=`date+"%y-%m-%d%H:%M:%S"`
  10. if["$MYSQLPORT"=="3306"]
  11. then
  12. echo"mysqlisrunning"
  13. else
  14. mail-s"warn!server:$MYSQLIPmysqlisdown"yuhongchun027@163.com
  15. fi
  16. if["$IO_env"="Yes"-a"$SQL_env"="Yes"]
  17. then
  18. echo"Slaveisrunning!"
  19. else
  20. echo"#######$DATA#########">>/data/data/check_mysql_slave.log
  21. echo"Slaveisnotrunning!">>/data/data/check_mysql_slave.log
  22. echo"Slaveisnotrunning!"|mail-s"warn!$MYSQLIPMySQLSlaveisnotrunning"yuhongchun027@163.com
  23. fi

建议每十分钟运行一次

*/10 * * * * root /bin/sh /root/mysql_slave.sh

记得在每台MySQL从机上分配一个yuhongchun的用户,权限大些也没关系,只限定在本地运行,如下所示:

 
  1. grantallprivilegeson*.*to"yuhongchun"@"127.0.0.1"identifiedby"yuhongchun101";
  2. grantallprivilegeson*.*to"yuhongchun"@"localhost"identifiedby"yuhongchun101";

脚本设计思路:

1、此脚本应该能适应各种各样不同的内外网环境,即IP不同的环境;

2、让脚本也顺便监控下MySQL是否正常运行;

3、Slave机器的IO和SQL状态都必须为YES,缺一不可,这里用到了多重条件判断-a。

脚本产生的背景环境:

我有不少基于公网类型的网站(没有硬件防火墙,直接置于IDC机房)做的都是MySQL主从架构,从机主要起备份数据库和冷备份的作用,虽然从机宕机了问题不大,但也影响数据的备份工作;这样的网站有数十个,如果一个一个手动的检查,每天都要浪费不少时间,所以玩了下脚本控,设计了如上脚本。

脚本实践:

此脚本我已用于了生产环境,大家可以放在我们的从MySQL机器上,用来监控;另外建议有时也手动检查下,有次发现rsync --delete 自动删除了/data/data里面的数据,即从数据库的位置,脚本没有报警。

后期应用:

后期公司的MySQL数据库准备由一主一从架色升级成一主多从,读写分离的架构,LVS作从数据库的负载均衡器,此脚本自动监控从MySQL的replication状态,如果不能同步则自动关闭本机的MySQL服务,免得影响整个网站的正常业务访问。当然了,到时脚本的运行周期肯定也需要更改,由10分钟变成秒级的,这个可以通过while循环来实现。

本文出自 “抚琴煮酒” 博客,请务必保留此出处http://andrewyu.blog.51cto.com/1604432/666019


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值