zoukankan      html  css  js  c++  java
  • python脚本 监控MySQL slave 状态

    #!/usr/bin/python
    # !gbk

    import os
    import sys

    mysqlbase = '/usr/bin/mysql'
    host = 'ip'
    user = 'root'
    passw = 'xxxxxx'


    def insert_info(item): # 判断当主从不同步时用函数把状态信息写入系统文件
    patt = r'/tmp'
    filename = 'slave_jk.txt'
    writ = ' '
    f = open(patt + '/' + filename, 'a')
    writ = writ + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    writ = writ + item
    f.write(writ)
    f.close()

    # 把当前从库同步状态信息取出来放列表中
    info = os.popen(mysqlbase + ' -h %s -u%s -p%s -e "show slave statusG"|grep -E "Slave_IO_Running|Slave_SQL_Running|Seconds_Behind_Master|Master_Log_File|Read_Master_Log_Pos|Relay_Master_Log_File|Exec_Master_Log_Pos"' % (host, user, passw)).read()
    info_list = info.split()
    info_tup = {}
    js = 0
    _idx = 0
    pd = len(info_list) / 2
    for idx, item in enumerate(info_list):
    js += 1
    if js > pd:
    continue
    info_tup[info_list[_idx]] = info_list[_idx + 1]
    _idx += 2

    if len(sys.argv) == 1: # 当运行脚本不加参数时给出提示执行脚本格式
    print('your can insert python + pyname + Seconds_Behind_Master or file_pos or io_sql')

    elif sys.argv[1] == 'Seconds_Behind_Master':
    if info_tup['Seconds_Behind_Master:'] == '0':
    print(0)
    else:
    item = 'Seconds_Behind_Master ' + info_tup['Seconds_Behind_Master:']
    insert_info(item)

    elif sys.argv[1] == 'file_pos':
    if info_tup['Master_Log_File:'] == info_tup['Relay_Master_Log_File:'] and info_tup['Read_Master_Log_Pos:'] == info_tup['Exec_Master_Log_Pos:']:
    print(0)
    else:
    item = 'Master_Log_File ' + info_tup['Master_Log_File:'] + ' Relay_Master_Log_File ' + info_tup['Relay_Master_Log_File:'] + ' Read_Master_Log_Pos ' + info_tup['Read_Master_Log_Pos:'] + ' Exec_Master_Log_Pos ' + info_tup['Exec_Master_Log_Pos:']
    insert_info(item)
    elif sys.argv[1] == 'io_sql':
    if info_tup['Slave_IO_Running:'] == 'Yes' or info_tup['Slave_SQL_Running:'] == 'Yes':
    print(0)
    else:
    item = 'Slave_IO_Running ' + info_tup['Slave_IO_Running:'] + ' Slave_SQL_Running ' + info_tup['Slave_SQL_Running:']
    insert_info(item)
  • 相关阅读:
    Python之socket_tcp
    Python之多进程&异步并行
    Qt forever关键字
    Qt程序在XP系统上不能正常运行
    Qt多线程的使用
    QScrollArea
    QtoolButton
    QComboBox
    Qt播放音频文件
    Qt5.9.1编译oracle驱动
  • 原文地址:https://www.cnblogs.com/hmysql/p/9057456.html
Copyright © 2011-2022 走看看