需求:
1、监测数据库主从状态
2、获取数据库主要参数
3、可读取配置文件
4、部署位置自适应。
 
参考资料:
http://blog.csdn.net/yf210yf/article/details/9207147
http://blog.csdn.net/lllxy/article/details/3423580
http://www.jb51.net/article/53022.htm
http://www.2cto.com/os/201307/225515.html
 
#全局变量包括程序路径,bin文件路径,时间,发送短信数据库配置
#!/bin/bash
#获取shell脚本执行路径
DIR="$( cd "$( dirname "$0"  )" && pwd  )"
BINPATH=`echo $DIR | sed -e 's/\/bin//'`
TIME=`date "+%Y-%m-%d %H:%M:%S"`
#数据库连接,用于短信发送
SQLPARAM_SMS="mysql -uXXXX -pXXXX -h192.168.1.1"
 
#读取配置文件,并获取同步状态
#配置文件的内容和格式可以看我上一篇博文,另外直接看命令也可以分析出来
while read LINE
do
CHOST=`echo $LINE | awk -F ':' '{print $2}'`
DBNAME=`echo $LINE | awk -F ':' '{print $1}'`
SQLPARAM="mysql -h$CHOST -uroot -pdascom"
#获取从库同步状态,并输出至临时文件,当然也可以直接处理
$SQLPARAM < $DIR/status.sql > $DIR/temp.log
REIO=`grep Slave_IO_Running $DIR/temp.log | awk -F ': ' '{print $2}'`
RESQL=`grep Slave_SQL_Running $DIR/temp.log | awk -F ': ' '{print $2}'`
#判断同步状态,并将结果输出至临时文件
#if判断,没啥好说的,具体的使用方法可以看我全面发出的参考资料链接
if [ "$REIO"x = "Yes"x -a "$RESQL"x = "Yes"x ];then
echo $TIME " ""Check '$DBNAME' is OK." >> $BINPATH/log/check.log
echo -e "0\c" >> $DIR/status.txt
else
echo $TIME " ""Check '$DBNAME' is down." >> $BINPATH/log/check.log
echo -e "$DBNAME \c" >> $DIR/status.txt
fi
done<$BINPATH/etc/chslave.conf
 
#对结果进行分析,如有异常发出短信告警
if grep -q "DB" $DIR/status.txt
then
sed -i "s/0//g" $DIR/status.txt
ERRDB=`sed -n 1p $DIR/status.txt`
echo "
set names 'gbk';
insert into ultrax.msgsend (service, srcNo, destNo,  msgcontent) values ('30', '10000', '18612255693', '$ERRDB mysql_slave is down.');
" > $DIR/temp.sql
$SQLPARAM_SMS < $BINPATH/bin/temp.sql
else
echo $TIME " All DB is ok!" >> $BINPATH/log/check.log
fi
 
#删除临时文件
rm -rf $DIR/status.txt $DIR/temp.log $DIR/status.txt $DIR/temp.sql
 
PS:这里解释个相当弱爆,但是也是些微的书写思路的问题。
    之所以,发送告警短信的if循环是在while循环外面,是因为考虑到:我需要检查多个DB的状态,如果每次循环都去判断发短信的话会造成
两个问题:
     1、如果多个DB出现问题,会瞬间发出多条短信,而短信平台会屏蔽短时间内连续向一个号码发送短信的行为。
     2、浪费,不能因为更容易写就浪费短信。
 
当然,这个脚本还是一个比较弱爆的功能,我继续努力。

linux shell mysql 数据库主从同步状态检查告警的更多相关文章

  1. Linux下MySQL数据库主从同步配置

    说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...

  2. MySQL数据库主从同步实战过程

       Linux系统MySQL数据库主从同步实战过程 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...

  3. mysql数据库主从同步读写分离(一)主从同步

    1.mysql数据库主从同步读写分离 1.1.主要解决的生产问题 1.2.原理 a.为什么需要读写分离? 一台服务器满足不了访问需要.数据的访问基本都是2-8原则. b.怎么做?  不往从服务器去写了 ...

  4. mysql数据库主从同步

    环境: Mater:   CentOS7.1  5.5.52-MariaDB  192.168.108.133 Slave:   CentOS7.1  5.5.52-MariaDB  192.168. ...

  5. MySQL数据库主从同步延迟分析及解决方案

    一.MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog: 2. 主库生成一个 lo ...

  6. MySQL数据库主从同步安装与配置总结

    MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力: ②在从主服务器进行备份,避免备份期间影响主服务器服务: ③当主服务器出现问题时 ...

  7. 【转】MySQL数据库主从同步管理

    MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要,新手往往在出现主从同步错误的时候不知道如何入手,这篇文章就是根据自己的经验来详细叙 ...

  8. mysql 数据库主从同步

    1.简介 写这篇文章是网上找到的相关主从同步的都不够完全,本人第一次搭建主从同步,完全看着网上的文章来搭建的,结果你懂的,踩了很多坑.所以特地把踩到的坑写出来,新手切勿直接布置到正式环境,请于测试环境 ...

  9. MySQL数据库主从同步配置

    主服务器必须打开开二进制日志. 主要是修改配置文件 , 一般在 linux 下安装的 mysql 配置文件是 my.cnf, 在 windwos 下是 my.ini, 修改主服务器配置文件 serve ...

随机推荐

  1. Unity中有两种Animation Clip

    http://blog.csdn.net/zzxiang1985/article/details/51291861 在Unity中,我们有两种方法创建Animation Clip. 一种(后面简称方法 ...

  2. 能源项目xml文件 -- springMVC-servlet.xml -- context:component-scan

    <context:component-scan base-package="com.xindatai.ibs" use-default-filters="false ...

  3. Music Review

    (What do you want to do?)(What do you want to do?)(What do you want to do?)(What is the meaning of l ...

  4. javascript中数组常用的方法

    在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...

  5. 解决安装vc2005运行库时提示Command line option syntax error.Type Command/?for Help

    安装vc2005运行库时提示 这是因为它要自解压到用户的临时文件夹下,如果用户名中带中文,就会报错. 简单的解决方法是,手动解压之,再安装 当然,你也可以修改用户名或者再新建个用户.

  6. 樱花漫地集于我心,蝶舞纷飞祈愿相随---总结 顕出:void-sampling 显示:void-sampling

    知识点: 分支语句,四则运算,( ̄y▽ ̄)~* 实验过程中遇到的问题及解决方法: 忘记换行,忘记代码,输入法切换(´∀`*) 暂时还得照书写,*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 实验心得体会 ...

  7. PHP过滤外部链接及外部图片 添加rel="nofollow"属性

    原来站内很多文章都是摘录的外部文章,文章里很多链接要么是时间久了失效了,要么就是一些测试的网址,如:http://localhost/ 之类的,链接多了的话,就形成站内很多死链接,这对SEO优化是很不 ...

  8. HTML5 的data-* 自定义属性

    HTML5增加了一项新功能是自定义数据属性,也就是 data-*自定义属性. 在HTML5中我们可以使用以data-为前缀来设置我们需要的自定义属性,来进行一些数据的存放. 当然高级浏览器下可通过脚本 ...

  9. iOS开发中可能有用的那些分类们Categories

    Categories是给你得不到源码的classes增加功能的一种方法. UIImageView+FaceAwareFill 这个类别使用了Aspect Fill内容模式,可以自动根据图像内容进行调整 ...

  10. GCD下的几种实现同步的方式

    GCD多线程下,实现线程同步的方式有如下几种: 1.串行队列 2.并行队列 3.分组 4.信号量 实例: 去网上获取一张图片并展示在视图上. 实现这个需求,可以拆分成两个任务,一个是去网上获取图片,一 ...