监控MySQL数据库的主从状态的shell脚本
本脚本来自有学习阿铭的博文学习:
在大数的互联网公司,其数据库都使用开源的MySQL,其架构也是主从为主,所以监控数据库主从同步情况尤为重要。
提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样。
#!/bin/bash
#用途:监控MySQL数据库的主从状态的shell的脚本。
#作者:Caron maktini
#日期:2018年11月19日
#版本:v0.1
#要求如下:每分钟检测一次主从连接状况,未连接则不再执行;不同步情况发生后将向预留邮箱报警;在没有解决情况下,需要每隔30分钟发一次告警邮件。
#把脚本名字存入变量s_name
s_name=`echo $0 | awk -F '/' '{print $NF}'`
Mysql_c="mysql -uroot -p密码"
#该函数实现邮件告警收敛
m_mail(){
log=$1
t_s=`date +%s`
t_s2=`date -d " 1 hours ago" +%s`
if [ ! -f /tmp/$log ]
then
#创建$log文件
touch /tmp/$log
#增加a权限。只允许追加内容,不允许更改或者删除
chattr +a /tmp/$log
#第一次告警,可以直接写入1小时的时间戳
echo St_s >> /tmp/$log
fi
#无论$log文件是否刚刚创建,都需要查看最后一行的时间戳
t_s2=`tail -1 /tmp/$log|awk '{print $1}'`
#取出最后一行即上次告警的时间戳后,立即写入当前的时间戳
echo St_s>>/tmp/$log
#取两次时间戳差值
v=S[St_s-$t_s2]
#如果差值超过1800,立即发邮件
if [ $v -gt 1800 ]
then
#发邮件,其中$2为mail函数的第二个参数,这里为一个文件
python mail.py Smail_user S1 "`cat $2`" 2>/dev/null
#定义计算器临时文件,并写入0
echo "0" > /tmp/$log.count
else
#如果计算器临时文件不存在,需要创建并写入0
if [ ! -f /tmp/$log.count ]
then
echo "0" > /tmp/$log.count
fi
nu=`cat /tmp/$log.count`
#30分钟内每发生异常告警,计算器加1
nu2= S [ Snu +1 ]
echo Snu2>/tmp/$log.count
#当告警次数到达30次需要发邮件
if [ $nu2 -gt 30 ]
then
python mail.py $mail_user "$1 30 min " " `cat $2`" 2>/dev/null
#第二次告警后,将计算器再次从0开始
echo "0" > /tmp/$log.count
fi
fi
}
#把进程情况存入临时文件,如果加管道求行数会有问题
ps aux | grep "$s_name" | grep -vE "$$|grep">/tmp/ps.tmp
p_n=`wc -l /tmp/ps.tmp | awk '{print $1}'`
#当进程数大于0,则说明上次的脚本还未执行完
if [ $p_n -gt 0 ]
then
exit
fi
先执行一条执行show processlist, 看是否执行成功
$Mysql_c -e "show processlist" > /tmp/mysql_pro.log 2>/tmp/mysql_log.err
#如果上一条命令执行不成功,说明这个MySQL服务出了问题。
if [ $? -gt 0 ]
then
m_mail mysql_service_error /tmp/mysql_log.err
exit
else
$Mysql_c -e "show slave status\G" >/tmp/mysql_s.log
n1=`wc -l /tmp/mysql_s.log|awk '{print $1}'`
if [ $n1 -gt 0 ]
then
y1=`grep 'Slave_IO-Running:' /tmp/msyql_s.log|awk -F : '{print $2} ' | sed s# ##g'`
y2=`grep 'Slave_SQL-Running:' /tmp/msyql_s.log|awk -F : '{print $2} ' | sed s# ##g'`
if [ Sy1 == "NO" ] || [ $y2 == "NO" ]
then
m_mail mysql_slavestatus_error /tmp/mysql_s.log
fi
fi
fi

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
边玩游戏边学 Python ,编程竟如此有趣 !
要是说Python是最容易入门的语言,应该没有人反驳吧。而且的的确确有越来越多的人选择学Python了,毕竟学Python真的有很多好处,比如: ●工资名列前茅 ●对新手极其友好 ●具备大数据处理能力 ●拥有惊人数量的库 ●应用广泛 ●有很多大企业爸爸 ●...... 但是,说了这么多,具体要怎么学呢?网上的教程都各种混乱,看书吧又深奥又枯燥,视频吧又都很漫长,而且也没有互动。 那还有其他选择吗?别说,我最近还真发现了一个,那就是「Python 小课」,课程的主打就是一边学游戏,一边学编程,主要内容就是教你爬虫和一些有趣的功能,带你入门人工智能。 不得不说,看到这个课程真的是相见恨晚啊,要是每个人都能遇到这样的课程,怎么还会有“从入门到放弃”的事情发生呢? 它的域名也非常有趣调皮:www.pypypy.cn 据说py 是 Python 的缩写,所以是重要的事情说三遍? 简单注册登录之后,你会看到一个类似游戏关卡样的界面,页面很干净,除了内容就是内容。没错,像游戏一样学Python,就是这个小课最大的特点。 像玩游戏一样学编程 当你点进一个关卡,看到的是这样一个页面: 每敲击一次 Ent...
-
下一篇
EDAS staragent 排查
浅谈 staragent 是什么?部署在 ECS 上的一个组件,两个主要功能: 数据功能,上报 ECS 上的系统日志 命令功能,接收控制台的下发指令,上报心跳状态,记录执行任务过程等功能。 主要目录结构 主要的目录都统计出来,不重要的目录这里就不过介绍。 ├── bin │ ├── agent.sh │ ├── agent_start_cmd.txt │ ├── dnsresolver │ ├── fakeStaragentctl7u │ ├── pluginctl │ ├── pluginplatform │ ├── post_install.sh │ ├── sa_healthCheck.sh │ ├── sa_install_lock.sh │ ├── sa_install.sh │ ├─
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)