批量查看mysql多从状态和修改多从主库指向

WBOY
发布: 2016-06-07 17:38:15
原创
963 人浏览过

本脚本主要解决批量查看mysql多从状态和修改多从主库指向,并打印出执行结果。适用于主库没有做高可用或是做高可用但是V-IP没有漂移到新的主库上的问题。代码如

本脚本主要解决批量查看mysql多从状态和修改多从主库指向,,并打印出执行结果。适用于主库没有做高可用或是做高可用但是V-IP没有漂移到新的主库上的问题。代码如下:

#!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb,sys,os,threading,time user = 'root' passwd = '1q2w3e4r' #mysql执行change master命令的用户名和密码 def log_w(text):#写日志 logfile = "slave_res.txt" f = open(logfile,'a ') f.write(text) f.close() def db_conn(host,res,flag): text = "###################_____%s_____###################nn" % host try: conn = MySQLdb.connect(host = host,port = 6006,user = user,passwd = passwd,charset="utf8",connect_timeout = 5) cursor = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor) sql = '''show slave status''' cursor.execute(sql)#查看当前同步信息 alldata = cursor.fetchall() if len(alldata) != 0:#如果没有同步信息则抛错,退出 if alldata[0]['Master_Log_File']==alldata[0]['Relay_Master_Log_File'] and alldata[0]['Read_Master_Log_Pos']==alldata[0]['Exec_Master_Log_Pos']: text = text "OK" 't' 'Master_Host:' str(alldata[0]['Master_Host']) ' ' str(alldata[0]['Master_Log_File']) ' ' str(alldata[0]['Relay_Master_Log_File']) ' ' str(alldata[0]['Read_Master_Log_Pos']) ' ' str(alldata[0]['Exec_Master_Log_Pos']) ' ' str(alldata[0]['Seconds_Behind_Master']) 'n' if flag == '1': try: sql = "stop slave;" cursor.execute(sql)#停止从库同步 except Exception, e: pass sql = '''change master to master_host='192.10.100.100',master_user='rep_slave',master_password='rEeMAKEreplication6210',master_port=6006,master_log_file='mysql-bin.000100',master_log_pos=300;''' cursor.execute(sql)#执行change master语句 sql = "start slave;" cursor.execute(sql)#开启同步 sql = 'show slave status' cursor.execute(sql)#查看最新的同步信息 alldata = cursor.fetchall() if (alldata[0]['Slave_IO_Running'] == 'Yes') and (alldata[0]['Slave_SQL_Running'] == 'Yes'): text = text "OK" 't' 'Master_Host:' str(alldata[0]['Master_Host']) ' ' str(alldata[0]['Master_Log_File']) ' ' str(alldata[0]['Relay_Master_Log_File']) ' ' str(alldata[0]['Read_Master_Log_Pos']) ' ' str(alldata[0]['Exec_Master_Log_Pos']) ' ' str(alldata[0]['Seconds_Behind_Master']) 'n' else: text = text "Start Slave Error" 't' 'Master_Host:' str(alldata[0]['Master_Host']) 't' 'Slave_IO_Running: ' str(alldata[0]['Slave_IO_Running']) 't' 'Slave_SQL_Running:' str(alldata[0]['Slave_SQL_Running']) 'n' else: text = text "Slave Error" ' ' 'Master_Host:' str(alldata[0]['Master_Host']) ' ' str(alldata[0]['Master_Log_File']) ' ' str(alldata[0]['Relay_Master_Log_File']) ' ' str(alldata[0]['Read_Master_Log_Pos']) ' ' str(alldata[0]['Exec_Master_Log_Pos']) str(alldata[0]['Seconds_Behind_Master']) 'n' else: text = text "Error,This host not set slave information" cursor.close() conn.close() except Exception, e: text = text "Error" 't' str(e) res.append(text) def start(flag): threads = [] res = [] host_list = ['192.168.1.114','192.168.1.120'] for host in host_list: t = threading.Thread(target=db_conn,args=(host,res,flag)) t.setDaemon(True) threads.append(t) for i in range(len(threads)): threads[i].start() time.sleep(0.1) for i in range(len(threads)): threads[i].join() for i in res: if "Error" in i: print "
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板