ホームページ  >  記事  >  バックエンド開発  >  Python mysqlライブラリを使用したマスター/スレーブ同期クラスターの参加例の紹介

Python mysqlライブラリを使用したマスター/スレーブ同期クラスターの参加例の紹介

高洛峰
高洛峰オリジナル
2017-03-22 10:06:111172ブラウズ

スクリプトは任意のマシンで実行できます (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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。