批量检测Mysql复制状态的shell 脚本

原创 2016年08月31日 09:58:04

批量检查Mysql 复制状态脚本,发现复制异常的Mysql数据库通过企业邮箱进行报警。

##############check replication result###########################


#! /bin/bash

time=`date +%Y%m%d-%H:%M:%S`


if [ -f /root/script/checkresult.txt ];then
                cat /dev/null > /root/script/checkresult.txt
        else
                touch /root/script/checkresult.txt
        fi


for checklist in `cat /root/script/check_replication_list.txt`;do
        #echo ${checklist}
        cn=0
        ip=`echo ${checklist} | awk -F ":" '{print $1}'`
        port=`echo ${checklist} | awk -F ":" '{print $2}'`
        output=`/opt/mysql3306/bin/mysql -urepcheck -prepcheck -h${ip} -P${port} -e "show slave status\G;" | grep -P 'Slave_(IO|SQL)_Running:'`
        while read line;do
                #echo $line
                if [ `echo $line | awk -F ": " '{print $2}'`=='YES' ];then
                        cn=`expr ${cn} + 1`
                fi
        done<<EOF
${output}
EOF
        if [ ${cn} -eq 2 ]; then
                echo ${time} 'ip address:'${ip}' port:'${port}' REPLICATION IS OK!' >> /root/script/checkresult.txt
        else
                echo ${time} 'ip address:'${ip}' port:'${port}' REPLICATION IS ERROR!' >> /root/script/checkresult.txt
        fi

done


########################在通过python检测结果发现异常通过邮箱发送邮件############################

[root@mysqltest script]# cat alert.py 
from sendmail import sendmail




with open('/root/script/checkresult.txt', 'r') as f:
        for line in f.readlines():
                flag=line.find('OK')
                if flag == -1:
                        sendmail(line)


################sendmail()#####################

[root@mysqltest script]# cat sendmail.py
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib


def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr(( \
        Header(name, 'utf-8').encode(), \
        addr.encode('utf-8') if isinstance(addr, unicode) else addr))


def sendmail(s):


        from_addr = 'huym@corp.21cn.com'
        password = '287473617@qq.com'
        to_addr = 'huym@corp.21cn.com'
        smtp_server = 'smtp.corp.21cn.com'  ##公司smtp服务器


        msg = MIMEText(s, 'plain', 'utf-8')
        msg['From'] = _format_addr(u'Python alert <%s>' % from_addr)
        msg['To'] = _format_addr(u'Administrator <%s>' % to_addr)
        msg['Subject'] = Header(u'replication error', 'utf-8').encode()


        server = smtplib.SMTP(smtp_server, 25)
        server.set_debuglevel(1)
        server.login(from_addr, password)
        server.sendmail(from_addr, [to_addr], msg.as_string())
        server.quit()

相关文章推荐

Shell脚本批量添加CSV数据到MySQL

  • 2015年07月23日 15:05
  • 489KB
  • 下载

Shell脚本实现数据父子关系定义——目标:将目标数据批量导入MySQL数据库

一、原数据raw data 二、目标表格式 三、父子关系整理 四、Shell脚本实现 五、Load data导入到MySQL   一、原数据raw data 文件名:c1.txt 文件...

利用shell脚本批量复制文件到给定目录

还是工作中的一堆烂事.有时候你在Linux下要导出一批文件,但是用大包命令发现Linux提示你没有权限,或者说解压的时候软件提示你权限不够. 这时候方法不外乎:...

shell脚本---mysql检测监控脚本系列

自学shell脚本之余,学习了关于mysql数据库监控的shell  0)版本   对端口进行检测 [root@jason ~]# cat check_db.sh #!/bin/bash ...

雄霸批量检测微信开通状态工具

  • 2017年04月07日 11:27
  • 1.04MB
  • 下载

MySQL主从复制数据一致性校验shell脚本

最近发现vos数据库的binlog同步有些表的数据和主服务器的不一致,表的行数也不一致,原因未查明,有可能是升级安装的和直接安装的配置文件中的参数不一样导致,导致切换主从的时候vos服务无法正常启动,...

nagios检测nginx运行状态的脚本

  • 2013年12月25日 09:28
  • 230B
  • 下载

批量运行程序SHELL脚本

  • 2012年05月07日 14:44
  • 6KB
  • 下载

[Azure]使用Powershell批量开启ASM虚拟机(带状态检测和重试)

本脚本用于批量启动ASM某个云服务下的全部或部分虚拟机,调用脚本前需要导入定于或使用Add-AzureAccount -Environment AzureChinaCloud登陆。 脚本如下: p...

ipa批量打包shell脚本

  • 2014年04月24日 16:51
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:批量检测Mysql复制状态的shell 脚本
举报原因:
原因补充:

(最多只允许输入30个字)