需求:
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. js判断IE浏览器版本

    if(navigator.userAgent.indexOf("MSIE")>0){ if(navigator.userAgent.indexOf("MSIE 6. ...

  2. table表格中实现tbody部分可滚动,且thead部分固定

    1.想要实现表格的thead部分固定切tbody部分可滚动,就需要将thead与tbody进行分离,具体做法是 1.设置thead,tbody都为display:block: 2.设置th与td的宽度 ...

  3. 使用WIC组件转换图片格式

    #include <windows.h>#include <Wincodec.h>#pragma comment(lib, "Windowscodecs.lib&qu ...

  4. Project中分清楚挣值项

    在项目管理非常重要的挣值管理,有一些关键项,像PV,EV,AC,BAC,EAC,ETC等等这些都是关键项,如果这个没分清楚,计算出很多东西都是错的,下面两个图是我一个项目快要完成的报表. 图1 图2 ...

  5. jfinal 基本应用 --事务回滚

    事务回滚 1.当时需要用到事务回滚,但是看到网上只有问题,没有真实的到底怎么用法. 2.我看了一下文档,结合了网上的大神的博客. 第一种方法: Db.tx(new IAtom(){ @Override ...

  6. 对比Linux系统和Windows系统哪个更好

    最近半年来,我一直在读一本叫做<Linux就该这么学>的Linux教材,确实让我进步的很快,也慢慢的让Linux系统走入了我的知识认知中,那么学习前我们来对比下Windows和Linux的 ...

  7. canvas 利用canvas中的globalCompositeOperation 绘制刮奖 效果

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...

  8. POJ 3041 Asteroids 匈牙利算法,最大流解法,行列为点 难度:1

    http://poj.org/problem?id=3041 #include <cstdio> #include <cstring> #include <vector& ...

  9. IBatis.Net XML文件配置

    一.添加Provider.config <?xml version="1.0" encoding="utf-8"?> <providers x ...

  10. 图表控件的学习===》hightChart 和 Chartjs的使用

    hightChart : 比较旧的图表控件   商业需要授权 Chartjs 免费开源 刚开始使用了下 hightchart 然后参考示例 建了对应的参数配置的类, 也顺利的集合到后台动态传输.  后 ...