#!/bin/bash
mysql -e "show slave status\G" > 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 status\G'|grep Slave_IO_Running:|awk '{print $2}'")
slave_sql = run("mysql -ustatus -pxx -h"+slave_ip+" -e 'show slave status\G'|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
), "\r\n")
server = smtplib.SMTP()
server.connect(HOST,"25")
server.starttls()
server.login("xx@163.com","password")
server.sendmail(FROM, [TO], BODY)
server.quit()

python MySQL-Slave从服务器状态检测脚本的更多相关文章

  1. 如何编写LVS对Real Server的健康状态检测脚本

    简介:Linux 虚拟服务器(Linux Virtual Server. LVS),是一个由章文松开发的自由软件.利用KVS可以实现高可用的.可伸缩缩的Web, Mail, Cache和Medial等 ...

  2. MSC服务器-主从检测脚本-check_server_state.sh

    说明: 发现keepalived会在凌晨自动进行主从切换,导致msc相关进程运行不稳定: 通过运行check_server_state.sh,及时终止/启动相关进程: 所有脚本使用supervisor ...

  3. Redis + keepalived 高可用行配置检测脚本

    Redis 在生产配置中:除redis集群.哨兵模式之外:主从模式还是比较普遍的. 配置 redis 多主从:由 keepalived 做 VIP 地址漂移.可以实现redis的高可用性. keepa ...

  4. 查看mysql主从配置的状态及修正 slave不启动问题

    1.查看master的状态 mysql> show master status;  //Position不应该为0 mysql> show processlist;  //state状态应 ...

  5. Mysql slave 状态之Seconds_Behind_Master

    在MySQL的主从环境中,我们可以通过在slave上执行show slave status来查看slave的一些状态信息,其中有一个比较重要的参数Seconds_Behind_Master.那么你是否 ...

  6. MySQL slave状态之Seconds_Behind_Master【转】

    在MySQL的主从环境中,我们可以通过在slave上执行show slave status来查看slave的一些状态信息,其中有一个比较重要的参数Seconds_Behind_Master.那么你是否 ...

  7. MySQL slave状态之Seconds_Behind_Master zz

    在MySQL的主从环境中,我们可以通过在slave上执行show slave status来查看slave的一些状态信息,其中有一个比较重要的参数Seconds_Behind_Master.那么你是否 ...

  8. MySQL执行SHOW STATUS查询服务器状态状态之Handler_read_* 详解

    在MySQL里,我们一般使用SHOW STATUS查询服务器状态,语法一般来说如下: SHOW [GLOBAL | SESSION] STATUS [LIKE ‘pattern’ | WHERE ex ...

  9. MySQL slave状态之Seconds_Behind_Master

    在MySQL的主从环境中,我们能够通过在slave上运行show slave status来查看slave的一些状态信息,当中有一个比較重要的參数Seconds_Behind_Master.那么你是否 ...

随机推荐

  1. HDU 6140 17多校8 Hybrid Crystals(思维题)

    题目传送: Hybrid Crystals Problem Description > Kyber crystals, also called the living crystal or sim ...

  2. 记第十四届省赛参赛体会&第十三届

    emmm....时间还是很久远了 还是流水账 这次比赛我还是挺开心的 因为感觉我们余神就是一把宝剑,然后我是她的Buff 前面四道题就挺顺利都1A过了,十年余神就是强无敌呀 最后两分钟过了第五题,银牌 ...

  3. python3+requests:get/post请求

    1.get请求 (1)没有请求参数类型 response = requests.get(url='') print(response.text) (2)有请求参数的类型(键值对形式表示参数) resp ...

  4. SQL注入之Sqli-labs系列第十二关

    开始挑战第十二关(Error Based- Double quotes- String) 12点半了,不困,继续,继续,继续 先看看页面,通常的使用单引号等进行操作,看看啥么情况先 咦,出现错误信息了 ...

  5. 5个适用于初学者的有用数据分析表达式(DAX)函数

    数据分析表达式(DAX)入门可能令人生畏,但是,当你了解一些基本功能后,你就可以帮助你解答许多有关数据的新见解.虽然在Power BI或Pivot Charts中创建视觉效果很容易,但我们经常希望查看 ...

  6. 2.15 富文本(richtext)

    2.15 富文本(richtext) 前言     富文本编辑框是做web自动化最常见的场景,有很多小伙伴不知从何下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容一.加载配置    1 ...

  7. python实现数组和链表的归并排序

    归并排序是一种稳定的排序,采用分而治之策略,可以用于顺序储存结构,也易于在链表上实现.其原理如下图: 算法时间复杂度为  O(nlogn),空间复杂度为 O(n). 1 在数组上实现 def merg ...

  8. scala quick check

    Scala 特性   面向对象特性 函数式编程 Scala也是一种函数式语言,其函数也能当成值来使用.Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化.Sca ...

  9. javascript的this多种场景用法

    作者:刘志祥 时间:2017.11.10 参考:阮一峰的官方网站 this 是javaScript中的一个关键字,只能在函数内使用.随着场合的不同,this的值会发生变化. 1. 单纯的全局函数调用, ...

  10. cf——Sasha and a Bit of Relax(dp,math)

    关于异或运算,是可以求前缀和的.还有一些异或运算的性质 0^a=a; 交换律 a^b=b^a 结合律 a^(b^c)=(a^b)^c 分配率 a^(b+c)=a^b+a^c 自反律 a^b^b=a 判 ...