>백엔드 개발 >파이썬 튜토리얼 >Python mysql 라이브러리를 사용하여 마스터-슬레이브 동기화 클러스터를 결합하는 예 소개

Python mysql 라이브러리를 사용하여 마스터-슬레이브 동기화 클러스터를 결합하는 예 소개

高洛峰
高洛峰원래의
2017-03-22 10:06:111222검색

스크립트는 모든 컴퓨터에서 실행될 수 있습니다(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.