批量检测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脚本实现自动监测mysql实例状态

host='outofmemory.cn' port='3336' user='monitor' password='monitor-password' mysqlclient="mysql" ...
  • YABIGNSHI
  • YABIGNSHI
  • 2015年11月20日 06:03
  • 1354

shell脚本 制定文件的批量复制

shell脚本 制定文件的批量复制
  • Tc_To_Top
  • Tc_To_Top
  • 2016年08月31日 09:40
  • 767

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

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

shell脚本监控mysql主从同步状态并自动修复

#!/bin/sh # check_mysql_slave status ip=eth1 cmd=/usr/bin/mysql mysqluser=user mysqlpwd=pwd sock=/da...
  • wawa8899
  • wawa8899
  • 2017年06月13日 11:19
  • 1051

linux下利用shell脚本自动检测服务状态并自动恢复服务

我们做系统服务时,可能由于某些原因出现服务停止的故障,可以写个shell脚本定时检测服务的运行状态,如果服务停止,则自动恢复,例子脚本如下: # function:healthCheck # au...
  • gdfsbingfeng
  • gdfsbingfeng
  • 2013年01月24日 23:26
  • 1060

linux shell script脚本判断mysql是否正常启动

方法一 netstat -lanp|grep tcp|grep 3306|wc -l 方法二 /usr/bin/lsof -i:3306|wc -l 方法三 mysql -u用户名 -p密码 -e "...
  • lepton126
  • lepton126
  • 2016年05月18日 20:13
  • 1458

Linux系统shell脚本编程——生产实战案例(批量检查在线IP与开放端口)

Linux系统shell脚本编程——生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工...
  • mingongge
  • mingongge
  • 2016年12月06日 17:52
  • 287

shell脚本批量telnet ip port

在做http proxy的检测,判断proxy服务是不是正常,需要ping代理机器的上XXXXX端口。 由于机器的数目过多,需要批量化执行telnet的命令。  脚本如下:  PORT=XXXXX ...
  • xcxinghai
  • xcxinghai
  • 2013年06月07日 12:56
  • 6247

基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表

接上篇介绍《基于CentOS的Mysql学习补充二--使用Shell创建数据库》,本文继续探索关于Shell和MySQL的结合使用,我不知道当一个数据库设计完成之后如何快速的创建设计好的数据库表和添加...
  • u012377333
  • u012377333
  • 2015年07月22日 17:11
  • 2616

shell脚本来批量创建和删除数据库

#!/bin/bash #批量创建数据库 user=root password=ailong socket=/usr/local/mysql/mysql.sock mycmd="mysql -u$us...
  • jaryle
  • jaryle
  • 2017年09月06日 14:00
  • 245
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:批量检测Mysql复制状态的shell 脚本
举报原因:
原因补充:

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