スクリプトは任意のマシンで実行できます (mysql がインストールされている必要があります。少なくとも mysql クライアントが必要です。mysql はバージョン 5.6 以降のみ可能です)。まずソース IP を入力し、ソース IP 上の mysql が正常に実行されているかどうかを確認します。次に、ローカル マシンのデータベースで mysql をダンプし、ダンプ ファイルを宛先サーバーに転送し、宛先サーバーにデータベースをインポートして、最後にスレーブ データベースをアクティブ クラスターに追加します。
[root@master test]# catfinaly_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 データベースが実行されているかどうかをテストします!"
res=socket.socket(socket.AF_INET,ソケット.SOCK_STREAM)
res.settimeout( 3)
try:
res.connect((ip,port))
print 'サーバーポート 3306 OK!'
print("
dest_dir='/tmp'
import_command = "mysql -uroot -pleyou < /tmp/dump.sql"
print ' ダンプ ファイルのインポートを開始します。時間がかかる場合があります。しばらくお待ちください !!!'
try:
ssh =paramiko.SSHClient ()
ssh.load_system_host_keys ()
ssh.connect (hostname =dest_db,username ='root',password =password)
stdin、stdout、stderr = ssh.exec_command (Import_command)
Print Stderr.read ()
ssh.close ()
Exception, E:
Print Exception, ":", E
Print "Import Over"
# すべてのスレーブが停止しているためdest_db のステータスはわかりません。以前はマスター データベースだった可能性もあれば、他のマシンのスレーブ データベースであった可能性もあります。
def Final_check_mysql ():
print " "
print "mysql サービスを最終的に確認します "
status = True
" try:
" conn=MySQLdb.connect( host=dest_db,user='root', passwd= ' PASSWORD='Xp29at5F37', MASTER_AUTO_POSITION =1;")
Cur3.close()
print "10 秒スリープ;"
Le Time.sleep (10) Cur2 = conn.cursor () Cur2.execute ("スレーブのステータスを表示;") Result = Cur2.Fetchall () ip_thread = result [0] [10]Re SQL_Thread = Result [0] [11]
Print IO_THREAD, SQL_THREAD
IO_THREAD == "YES" および SQL_THREAD == "YES":
PRINT 'MySQL MASTER/SLAVE REPLICATION ステータスは成功です'
else: : "
以上がPython mysqlライブラリを使用したマスター/スレーブ同期クラスターの参加例の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。