shell脚本监控mysql主从同步并通过邮箱报警

2 篇文章 0 订阅
1 篇文章 0 订阅

**

利用shell监控mysql主从,通过线程状态及服务占用端口是否存在来来判断。

不会配置邮箱的往下翻。
因为是监控报警程序,定时任务根据需求来配置。

#例如每一小时执行一次
crontab -e 
 0  */1  *  *  * /usr/src/mariadb.sh

上代码:


#!/bin/bash
#获取本地服务端口,是否为3306根据情况修改。
MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{ print $5 }'`
#获取本机IP,发邮件报警时调用,可以不写。
MYSQLIP=`ifconfig ens33|grep "inet "|awk -F[:" "]+ '{ print $3 }'`
#显示当前时间,年月时分秒
date=`date "+%Y-%m-%d %H:%M:%S"`
#获取IO及SQL线程行
STATUS=$(mysql -uroot -S /var/lib/mysql/mysql.sock -e "show slave status \G" |grep -i "running")
#提取I/O及SQL线程的状态,Yes或No
IO_env=`echo $STATUS |grep IO |awk '{ print $2 }'`
SQL_env=`echo $STATUS |grep SQL |awk '{ print $2 }'`
#判断变量值是否=本地端口号 
#日志发送格式  mail -s "标题" 邮箱  << "内容"  
#或者  echo "内容"|  mail -s "标题" 邮箱 
if [ "$MYSQLPORT" = "3306" ]; then
   echo " mysql is running" >/dev/null
 else
   echo "mysql is shutdown"
   echo "$MYSQLIP is shutdown $date" |  mail -s " MYSQL IS shutdown" 70697410@qq.com
fi
#-a 如果存在即为真 左右两个判断都要同时存在
if [ "IO_env"="Yes" -a "$SQL_env"="Yes" ]; then
    echo "slave is running!" >/dev/null
 else
    echo "slave is not running! $date" >> /usr/src/mariadb_error.log  #这里写不写都无所谓 
    echo "slave not running $date" | mail -s "MYSQLIP is not running" 70697410@qq.com
fi

**
**

配置发件邮箱:

vim /etc/mail.rc 
#在最下面添加,这里使用163邮箱举例,如果要配置其他的就百度吧。
set from=发件邮箱
set smtp=smtp.163.com
set smtp-auth-user=发件邮箱
#这个密码默认是邮箱登录密码,也可以随机生成,继续往下看
set smtp-auth-password=
set smtp-auth=login

登录163邮箱,点击上方设置,根据图片指引打开服务即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

**

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值