自动监控主从mysql同步的shell脚本-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心

  • 博客访问: 61018
  • 博文数量: 16
  • 博客积分: 172
  • 博客等级: 入伍新兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-10 11:30
文章分类

全部博文(16)

文章存档

2012年(16)

分类:

2012-10-17 16:25:59

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

代码如下:

  1. #!/bin/bash 
  2. #check mysql_slave status 
  3. #crontab time 00:10 
  4. mysqlport=`netstat -na|grep "listen"|grep "3306"|awk -f[:" "]  '{print $4}'` 
  5. mysqlip=`ifconfig eth0|grep "inet addr" | awk -f[:" "]  '{print $4}'` 
  6. status=$(/usr/local/webserver/mysql/bin/mysql -u yuhongchun -pyuhongchun101 -s /tmp/mysql.sock -e "show slave status\g" | grep -i "running")   
  7. io_env=`echo $status | grep io | awk  ' {print $2}'` 
  8. sql_env=`echo $status | grep sql | awk  '{print $2}'` 
  9. data=`date  "%y-%m-%d %h:%m:%s"` 
  10. if [ "$mysqlport" == "3306" ] 
  11. then 
  12.   echo "mysql is running" 
  13. else 
  14.   mail -s "warn!server: $mysqlip mysql is down" yuhongchun027@163.com  
  15. fi 
  16. if [ "$io_env" = "yes" -a "$sql_env" = "yes" ] 
  17. then 
  18.   echo "slave is running!" 
  19. else 
  20.   echo "####### $data #########">> /data/data/check_mysql_slave.log 
  21.   echo "slave is not running!" >>    /data/data/check_mysql_slave.log 
  22.   echo "slave is not running!" | mail -s "warn! $mysqlip mysql slave is not running" yuhongchun027@163.com 
  23. fi 

建议每十分钟运行一次

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

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

  1. grant all privileges on *.* to "yuhongchun"@"127.0.0.1" identified by "yuhongchun101"; 
  2. grant all privileges on *.* to "yuhongchun"@"localhost" identified by "yuhongchun101"; 

脚本设计思路:

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

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

3slave机器的iosql状态都必须为yes,缺一不可,这里用到了多重条件判断-a

脚本产生的背景环境:

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

脚本实践:

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

后期应用:

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

阅读(782) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图