次のようにMySQLの同期プロセスは次のとおりです。
図1に示すように、メインサーバ(マスタ)はバイナリログ(マスターログ)に書き込まれたイベント(更新、削除、テーブル構造の変化、等)を変更します。
2、プライマリサーバ(ビンログダンプスレッド)バイナリログからのサーバ(スレーブ)IOスレッドから取得し、ローカルであなたのバイナリログ(リレーログ)のコピーを保存
3、SQL Serverのスレッドからローカルログ(リレーログ)、および変更イベントの繰り返しをお読みください。
アクションのMySQLのマスター・スレーブ同期:
図1に示すように、バックアップ機構として使用することができ、それは(バックアップ時にプライマリサービスに影響を与えることを回避するために、バックアップからの)ホットバックアップに対応します
図2に示すように、負荷分散データベース(リードからマスター書き込み)読み取りおよび書き込み別個に使用することができます
プライマリサーバが、サーバが切り替え可能な場合3、問題があります。
MySQLのマスタースレーブ同期手順:
まず、準備行為:
1、同じマスター・データベースのバージョンから、バージョン5.5が推奨されます
2、データベースメイン一致からのデータ
第二に、プライマリマスタデータベースの変更:
1、MySQLの設定を変更します。
な/etc/my.cnf 1# 2ログビン= MySQLのビン 3 4#主数据库端ID号 5サーバID = 1 6 7ログビン= /ホーム/ MySQLの/ログ/バイナリログ/バイナリログ 8 max_binlog_size = 500M 9 binlog_cache_size = 128K 10ビンログ-DO-DB = ADB 11バイナリログ-無視-DB = MySQLの 12ログスレーブアップデート 13 expire_logs_day = 2 14 binlog_format = "混合"
上記の意味やアイテムに関連するノートの各パラメータの設定:
サーバフラグ番号#1は、第一の複数の単語がメイン識別番号のセットはここでは繰り返さないことができるから、勝つためにMySQLを見える場合、このような識別複数の、コンフィギュレーションファイルには表示されないことに注意してください。 サーバー-ID。1 = 2 。3 。4 = /ホーム/ MySQLの/ログ/ビンログ/ビンログ#のビンログを開き、指定したファイルのディレクトリとファイル名の接頭辞ビンをログに記録します。 5 このサイズは500Mに等しい6#各ビンログの最大サイズは、自動的に新しいログファイルを生成します。時々 、ログファイルがこのサイズを超えているので、2つのログファイルに記録を書き込みません。 Max_binlog_size = 500M 7 8 9 binlog_cache_sizeログ・キャッシュ・サイズ= 128K# 10 11ビンログ-DO-DB =データベース名ADB#は、それがよりであれば、あなたはこの形式の行を書くことができ、同期させる必要があります。 12 13ビンログ-無視-DB =#のMySQLデータベースは、同期の名前を必要としない、それはより多くのであれば、あなたはこの形式で行を書くことができます。 14 15#ログイン-binの開始が、ログ・スレーブは、更新のみ、独自のデータベース更新操作のためのスレーブレコードを開始していない場合にのみ、スレーブは、ログに書き込まれた新しいマスター・データベースからログを読み込むときに更新。 ログ・スレーブ・アップデート16 17 18 expire_logs_day =日数は#2が設定されているビン・ログログファイルを維持するために、このバージョンは、次のパラメータのMySQL5.0のをサポートしていません。 。19 20はbinlog_formatは=「MIXED」に設定#ビン・ログログファイル形式である:MIXED、重複する主キーを防止することができます。
2、同期のためにアカウントを作成して、MySQLを再起動します。
#1のスレーブアカウントの奴隷、パスワード111111を作成して 2 MySQLの>グラントレプリケーションスレーブをON * * '奴隷' @ '%' 'を111111'で識別する; 3 4#更新データベース権限 5 MySQLの>フラッシュ権限;
3、マスターのステータスを問い合わせます
1つのMySQLの>ショーマスターのステータス。 2 + ------------------ + ---------- + -------------- + --- --------------- + 3 | ファイル| 位置| Binlog_Do_DB | Binlog_Ignore_DB | 4 + ------------------ + ---------- + -------------- + --- --------------- + 5 | mysqlの-bin.000009 | 196 | | | 6 + ------------------ + ---------- + -------------- + --- --------------- + セット7 1行
注:このステップは、マスターデータベースの操作ではなく後に、マスターデータベースは、状態値を防ぐために
第三に、データベースのスレーブを変更します。
1、MySQLの設定を変更します。
データベースから#1の端末ID番号 2のサーバID = 2
2同期コマンド実行
同期コマンドを実行するための#1、IP、マスターデータベースは、同期位置をパスワード同期を占める 2のMySQL>変更マスタMASTER_HOSTし= '192.168.1.2'、master_user = 'スレーブ'、master_password = '111111'、MASTER_LOG_FILE =「MySQLのビン。 000009」、MASTER_LOG_POS = 196; 3 。4#オープン同期 5のMySQL>スレーブ開始。
3、データベースから状態をチェックします。
1 MySQLの>スレーブ状態\ Gを示す図です。 2 *************************** 1行******************* ******** イベント送信するマスターを待っ:3 Slave_IO_State 4 MASTER_HOSTを:192.168.1.2 5 Master_User:slave_account 6 MASTER_PORT:3306 7 Connect_Retry:60 8 MASTER_LOG_FILE:MySQLの-bin.000009 9 Read_Master_Log_Pos:196 10 RELAY_LOG_FILEました:ヴィッキーリレー-bin.000002 11 RELAY_LOG_POS:253 12のRelay_Master_Log_File:MySQLの-bin.000009 13 Slave_IO_Running:はい 14 Slave_SQL_Running:はい 15 Replicate_Do_DB: 16 Replicate_Ignore_DB: 17 ... 18 ...
注意:Slave_IO_RunningとSlave_SQL_Runningプロセスが正常に実行する必要があり、それは、そうでない場合は、あなたの同期が失敗し、YESの状態です。どちらも、サーバーからハングアップするかどうかを判断するために使用することができます
データベースのセットアップからの主な作業が完了している、ここで、彼らはデータを挿入および変更、新しいデータベースとテーブルを作成することができ、テストが成功したかどうかを確認します
他の4つの関連するパラメータを使用することができます。
図1に示すように、マスタ側:
データベース同期化されていない#1 バイナリログ-DBは無視-MySQLを= 2 。3-DBはバイナリログテストを無視= 4バイナリログ- INFORMATION_SCHEMA無視-DBの= 5 。6#どのデータベース同期のみ、加えて、他の同期 7バイナリログ-DOゲーム= -db 。8 。9#ログの保持時間 10 expire_logs_days = 10 。11 12#binlogの書き込み周波数を制御されています。どのように多くの時間に実行された各取引きた 13個の#この性能パラメータが大量に消費するが、MySQLの崩壊による損失軽減することができます 14 sync_binlog = 5 15 16#ログ形式を、提案したミックス SQL文の保存ステートメントの17位 18#の行は、レコードを保ちましたデータ 最初の二つの19#混合組み合わせ 20 binlog_format =混合
図2に示すように、スレーブ端
マスタ-スレーブ同期停止# 2のMySQL> STOPスレーブ; 3 4番切断、再接続タイムアウト 5のMySQL>変更マスターMASTER_CONNECT_RETRYする= 50; 6 。7オープンマスタ-スレーブ同期位 8のMySQL>スレーブ開始します。
上記の接続タイムアウト、同様に使用することができ、マスターデータベースIPは、パスワード同期、同期位置を占め
プライマリサーバを分析すると、コードが実行されています
//次のサーバーからのステートメントで の$ SQL = "表示スレーブステータス"; $結果=するmysql_query(SQLの$、$のslave_link); $行= mysql_fetch_assoc($結果); $ Slave_IO_Running行= $ [ 'Slave_IO_Running']; 行Slave_SQL_Running = $ $ [ 'Slave_SQL_Running']; //次の2つの基準 IF( 'はい' == $ Slave_IO_Running && 'はい' ==する$ Slave_SQL_Running){ }他{ データベース($から$コンテンツ=」。ハングアップ)をホスト!!!「; }
概要
すなわち、この記事のためにすべてです、私はこの論文の内容を願って、私たちは、勉強や仕事疑いで、あなたがメッセージ交換を残すことができれば、いくつかの助けをもたらすことができます