스크립트는 모든 컴퓨터에서 실행될 수 있습니다(mysql은 최소한 mysql 클라이언트를 설치해야 하며 mysql은 버전 5.6 이상만 가능). 먼저 소스 IP를 입력하고 소스 IP의 mysql이 정상적으로 실행되고 있는지 확인하세요. , 이 머신에서 실행 mysql 데이터베이스를 덤프한 다음 덤프 파일을 대상 서버로 전송하고 대상 서버의 데이터베이스를 가져온 다음 마지막으로 슬레이브 데이터베이스를 활성 클러스터에 추가합니다.
[root@master 테스트]# cat finaly_mysql.py
#!/usr/bin/env python
#-*- 코딩: utf-8 -*-
import MySQLdb, 소켓, paramiko,sys, os, datetime, time
sour_db=raw_input('소스 mysql 데이터베이스 IP를 입력하세요:')
dest_db=raw_input ('대상 mysql 데이터베이스 IP를 입력하세요:')
password=raw_input('sour_db 루트 사용자 비밀번호를 입력하세요:')
def check_port(ip,port):
print "소스 mysql db가 실행 중인지 테스트하세요!"
res=socket.socket(socket.AF_INET, 소켓.SOCK_STREAM)
res.settimeout(3)
시도:
res.connect((ip,port))
print '서버 포트 3306 OK!'
print("
dest_dir='/tmp'
import_command = "mysql -uroot -pleyou < /tmp/dump.sql"
print ' 가져오기 덤프 파일을 시작하면 시간이 오래 걸릴 수 있습니다. 잠시만 기다려주세요 !!!'
시도:
ssh =paramiko.SSHClient ()
ssh.load_system_host_keys ()
ssh.connect (호스트 이름 =dest_db,사용자 이름 ='root',password =password)
stdin, stdout, stderr = ssh.exec_command (import_command)
stderr.read 인쇄()
ssh.close ()
Except Exception,e:
print Exception,":",e
print "import over"
#import 이전에는 dest_db의 상태를 모르기 때문에 dest_db의 모든 슬레이브를 정지시켰습니다. 이전에는 master 데이터베이스였을 수도 있고, 다른 머신의 슬레이브 데이터베이스였을 수도 있습니다.
def final_check_mysql ():
print " "
print "마지막으로 mysql 서비스를 확인하세요"
status = True
다음을 시도해 보세요.
conn=MySQLdb.connect(host=dest_db,user='root',passwd='Xp29at5F37',db='test')
conn=conn.cursor()
Cur1 .close()
, 10초; "
time.sleep(10)
> )
io_thread= 결과[0][10]
sql_thread= 결과[0][11]
_thread, sql_thread
IO_THREAD == "YES"이고 SQL_THREAD ==인 경우 "YES":PRINT 'MySQL MASTER/SLAVE 복제 상태가 SuccessFully입니다'
인쇄' MySQL Master/ 슬레이브 복제 실패시 확인해주세요' '
위 내용은 Python mysql 라이브러리를 사용하여 마스터-슬레이브 동기화 클러스터를 결합하는 예 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!