zoukankan      html  css  js  c++  java
  • python MySQL-Slave从服务器状态检测脚本

    #!/bin/bash
    mysql -e "show slave statusG" > mysql_status.txt
    array=($(egrep 'Slave_IO_Running|Slave_SQL_Running|Seconds_Behind_Master' mysql_status.txt))
    if [[ "${array[1]}" == 'Yes' && "${array[3]}" == 'Yes' ]]
    then
            if "${array[5]}" -eq 0 ]
            then
            echo "MySQL slave running OK!"
            else
            echo "MySQL slave is behind master ${array[5]} seconds"
            fi
    else
            echo "MySQL slave sync make error"
            mail -s "MySQL-Slave Error on `uname -n`" 44850823@qq.com
    fi
     
     
    =====================

    # -*- coding: utf-8 -*
    #! /usr/bin/env python
    #
    #sudo easy_install fabric
    #sudo easy_install paramiko
    #fab -f mysql.py check
    #[利用Python监测MySQL主从状态](http://hypocritical.blog.51cto.com/3388028/1680778)
    #[Python fabric远程自动部署简介](http://lovesoo.org/python-fabric-yuan-cheng-zi-dong-bu-shu-jian-jie.html)
    #[自动化运维工具Fabric - 密码管理](http://segmentfault.com/a/1190000000497630)

    from fabric.api import *
    from fabric.colors import *
    from fabric.context_managers import *
    from fabric.contrib.console import confirm
    import string
    import smtplib
    import paramiko

    #错误日志
    #paramiko.util.log_to_file("filename.log")


    #client ip
    env.user='root'
    env.hosts=[
    '192.168.60.7',
    '192.168.60.61',
    ]
    #env.password='xx'
    env.port='22'
    #env.user='root'
    #env.password='xx'
    env.passwords={
    'root@192.168.60.7:22':"password",
    'root@192.168.60.61:22':"password",
    }

    #env.mysql_port = '3306'
    @task
    def check():
    slave_ip = run("ip add|grep global")
    for ip in env.hosts:
    if ip in slave_ip:
    slave_ip = ip
    slave_io = run("mysql -ustatus -pxx -h"+slave_ip+" -e 'show slave statusG'|grep Slave_IO_Running:|awk '{print $2}'")
    slave_sql = run("mysql -ustatus -pxx -h"+slave_ip+" -e 'show slave statusG'|grep Slave_SQL_Running:|awk '{print $2}'")
    if slave_io.find('Yes')>=0 and slave_sql.find('Yes') >= 0:
    pass
    else:
    HOST = "smtp.163.com"
    SUBJECT = "MySQL Master-Slave Warning . "
    TO = "xx@qq.com"
    FROM = "xx@163.com"
    text = "%-20s MySQL Master-Slave status : down" % slave_ip
    BODY = string.join((
    "From: %s" % FROM,
    "To: %s" % TO,
    "Subject: %s" % SUBJECT ,
    "",
    text
    ), " ")
    server = smtplib.SMTP()
    server.connect(HOST,"25")
    server.starttls()
    server.login("xx@163.com","password")
    server.sendmail(FROM, [TO], BODY)
    server.quit()

  • 相关阅读:
    【转载】Python正则表达式指南
    Redis4.0模块子系统实现简述
    Redis4.0 主从复制(PSYN2.0)
    13种细分类型的TCP重传小结(一张表总结4.4内核所有TCP重传场景)
    TCP/IP Illustrated Vol1 Second Edition即英文版第二版,TCP部分个人勘误
    TCP源码—epoll源码及测试
    TCP系列55—拥塞控制—18、其他拥塞控制算法及相关内容概述
    TCP系列54—拥塞控制—17、AQM及ECN
    TCP系列53—拥塞控制—16、Destination Metrics和Congestion Manager
    TCP系列52—拥塞控制—15、前向重传与RACK重传拥塞控制处理对比
  • 原文地址:https://www.cnblogs.com/moss_tan_jun/p/7881605.html
Copyright © 2011-2022 走看看