Shell脚本实现监控MySQL主从同步

 更新时间:2015年01月06日 09:57:12   投稿:junjie  
这篇文章主要介绍了Shell脚本实现监控MySQL主从同步,此脚本应该能适应各种各样不同的内外网环境,并同时监控MySQL运行状态,需要的朋友可以参考下

代码如下:

复制代码 代码如下:

#!/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/webserver/mysql/bin/mysql -u yuhongchun -pyuhongchun101 -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}'`
DATA=`date +"%y-%m-%d %H:%M:%S"`
if [ "$MYSQLPORT" == "3306" ]
then
  echo "mysql is running"
else
  mail -s "warn!server: $MYSQLIP mysql is down" yuhongchun027@163.com
fi
if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
then
  echo "Slave is running!"
else
  echo "####### $DATA #########">> /data/data/check_mysql_slave.log
  echo "Slave is not running!" >>    /data/data/check_mysql_slave.log
  echo "Slave is not running!" | mail -s "warn! $MYSQLIP MySQL Slave is not running" yuhongchun027@163.com
fi

建议每十分钟运行一次

复制代码 代码如下:

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

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

复制代码 代码如下:

grant all privileges on *.* to "yuhongchun"@"127.0.0.1" identified by "yuhongchun101";
grant all privileges on *.* to "yuhongchun"@"localhost" identified by "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循环来实现。

相关文章

  • Shell之function函数的定义及调用示例

    Shell之function函数的定义及调用示例

    本文主要介绍了Shell之function函数的定义及调用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Shell脚本读取ini配置文件的实现代码2例

    Shell脚本读取ini配置文件的实现代码2例

    这篇文章主要介绍了Shell脚本读取ini配置文件的实现代码2例,如果只是读取内容推荐使用简单版,有更多需求请见复杂版,需要的朋友可以参考下
    2014-08-08
  • Shell脚本实现MySQL、Oracle、PostgreSQL数据库备份

    Shell脚本实现MySQL、Oracle、PostgreSQL数据库备份

    本文主要介绍了Shell脚本实现MySQL、Oracle、PostgreSQL数据库备份,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • linux 命令中的lynx解析

    linux 命令中的lynx解析

    lynx命令是纯文本模式的网页浏览器,不支持图形、音频、视频等多媒体信息,这篇文章主要介绍了linux 命令中的lynx解析,需要的朋友可以参考下
    2024-07-07
  • shell遍历目录处理特定目录的脚本代码

    shell遍历目录处理特定目录的脚本代码

    删除文件,目录结构为:ip/年份/月份,每个人都有一份这样的目录现需要删除2012年以前的所有文件,2012年以后的删除特定月份
    2013-02-02
  • shell流程控制语句脚本编程解析

    shell流程控制语句脚本编程解析

    这篇文章主要为大家介绍了shell流程控制语句脚本编程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Linux 中的 Openssl命令及实例代码

    Linux 中的 Openssl命令及实例代码

    OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用
    2017-09-09
  • linux中的vi和vim编辑器操作方法

    linux中的vi和vim编辑器操作方法

    这篇文章主要介绍了linux中的vi和vim编辑器操作方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • 一波实用的Bash Shell整理

    一波实用的Bash Shell整理

    这篇文章主要介绍了一波实用的Bash Shell整理,适用于Ubuntu等Debian系的Linux系统,需要的朋友可以参考下
    2015-06-06
  • Linux 下的 unzip 命令使用示例详解

    Linux 下的 unzip 命令使用示例详解

    Unzip 是一个在 Unix 或类 Unix 系统(例如 Linux)中常用的命令行工具,用于解压缩由 ZIP 压缩算法创建的压缩文件,本文给大家介绍Linux 下的 unzip 命令使用示例详解,感兴趣的朋友一起看看吧
    2023-11-11

最新评论