需求:
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. html5获取经纬度,百度api获取街区名,并使用JS保存进cookie

    引用js<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= ...

  2. c c++怎么判断一个字符串中是否含有汉字

    c c++怎么判断一个字符串中是否含有汉字 (2013-02-05 10:44:23) 转载▼     #include  #include  int main() { char sztext[] = ...

  3. Xcode创建Object-C程序

    一. Xcode 环境安装 与 工程创建 1. 下载环境 相关资源下载 : -- IOS 相关资料下载页面 :  https://developer.apple.com/devcenter/ios/i ...

  4. 【转】selenium之 定位以及切换frame

    转载自:http://www.voidcn.com/blog/huilan_same/article/p-6155896.html 很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明 ...

  5. apache开启.htaccess

    1 . 如何让的本地APACHE开启.htaccess 如何让的本地APACHE开启.htaccess呢?其实只要简朴修改一下apache的httpd.conf设置就让APACHE.htaccess了 ...

  6. guava学习--File

    使用Files类来执行那些基本的任务,比如:移动或复制文件,或读取文件内容到一个字符串集合 Closer类,提供了一种非常干净的方式,确保Closeable实例被正确的关闭 ByteSource 和 ...

  7. session如何保存在专门的StateServer服务器中

    session保存在专门的StateServer中,该种方式,性能损失比sql略好.比inproc据说有10%-15%的性能损失.怎么使用StateServer 服务器呢? 1.初始化StateSer ...

  8. 使用Android应用调用Web Service

    Java本身提供了丰富的Web  Service支持,比如Sun公司指定的JAX-WS  2规范,还有Apache开源组织所提供的Axis1.Axis2.CXF等,这些技术不仅可以用于非常方便地对外提 ...

  9. js判断 微信浏览器 或者 QQ内置浏览器

    function isWeiXinOrQQ(){ var ua = window.navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessen ...

  10. Java 获取网络重定向文件的真实URL

    其实Java 使用HttpURLConnection下载的的时候,会自动下载重定向后的文件,但是我们无法获知目标文件的真实文件名,文件类型,用下面的方法可以得到真实的URL,下面是一个YOUKU视频的 ...