mysqlのマスター・スレーブ同期
1、MySQLのマスタ - スレーブ同期(レプリケーション)概念
1.コピーMySQLの他のホスト(スレーブ)上のホストへのデータ、及び命令が再び達成しました。
一つ以上の他のサーバがサーバからとして機能している間2.サーバーは、レプリケーションマスタとして機能します。
3.マスターインデックスサーバはバイナリログファイルが更新される書き込み、およびログ・サイクルを追跡するためのファイルを維持します。
マスターサーバーからの接続は、それが最後に成功した更新の位置を通知4.ログ内のマスターサーバーから読み取ります。
5.次に、サーバから発生するので、サーバは、マスターブロックを待ち、新しい更新を通知更新を受け取ります。
ビンログ:データ更新MySQLや(そのような基準を満たしていない、実際のデータを削除するDELETE文など)潜在的な更新を記録するためのバイナリログファイル
2、MySQLはそのサポートの複製
1. ベースのレプリケーションの声明: 同じ文を実行するために、サーバから、メインサーバにSQL文を実行します。
注: MySQLのデフォルトのステートメントベースのレプリケーション、高効率。クローンは見つからなかったら、自動的に行ベースのレプリケーションを選択しました。
2. 行ベースのレプリケーション: 内容の変更はむしろ始まるMySQL5.0のサポートから再びサーバからのコマンドを実行するよりも、過去を再現します。
3. レプリケーションの混合型: それは書類に基づいて発見された場合、レプリケーションステートメントをベースデフォルト値を正確に複製することはできませんが、行ベースのレプリケーションを使用します。
3、Mysqlのマスター・スレーブレプリケーションの原則
サーバはバイナリデータに変更されます。1.マスターは、バイナリログログを記録している長いマスター上のデータの変更などとして、バイナリログを書き込むように変更されます。
一定の時間間隔内2.スレーブ・サーバの変更かどうかを検出するマスタバイナリログの変更された場合、それが起動I / Oスレッド要求マスターバイナリイベントであります
同じマスターノードで、3は、各I / Oスレッドがスレッドダンプを開始し、バイナリイベントを送信し、ログからローカル中継ノードに保存します
4. リレーから読み出しノードSQLスレッドが開始は、ローカルバイナリログの再生ログそれらのデータの一貫性とマスターノード残るように、
5.最後に、I / OスレッドとSQLスレッドが一度起こされるのを待って、スリープ状態になります。
あなたは理解する必要があります。
1)ライブラリー、I / Oスレッド、スレッドSQLからの二つのスレッド生成
メインライブラリ2)I / O要求のバイナリログスレッド、得られた書面によるバイナリログローカルリレーログ(リレーログ)ファイル;
3)主ライブラリスレッド・ログ・ダンプを生成し、Iを使用するライブラリから/ Oスレッドがバイナリログを渡す;
4)SQLスレッドはリレーログのログ・ファイルを読み取り、SQLステートメントへの解決をひとつずつ実行しました。
4は、MySQLフローチャートレプリケーション
1.マスターのbinlog操作ログは、計算書に計上します
マスターサーバー上の2軟膏は、変更が発生した場合、バイナリログの変更が、一定の時間間隔内に発生したか否かを検出します
3. salaveオープン二つのスレッド:IOスレッドとSQLスレッド
1)IOスレッド:リレーログリレーログ内にマスタバイナリログの内容を読み取るための責任です。
2)SQLスレッド:リレーログからの読み取りの責任は、スレーブデータベースにbinlogのコンテンツやアップデートをログアウト(一貫性のあるデータを確実にするために)
mysqlの同期遅延
一般的な原因MySQLの同期化遅延が生じ1、
1)ネットワーク:ホストマシンまたは帯域幅から再生され、マスタとスレーブとの間の高遅延ネットワークは、マスターのバイナリログは遅延を引き起こし、スレーブに合計金額を引き起こしません。
2)機械の性能:腐ったマシンからマシンを使用していますか?例えば、SSDの使用とホストまたはスレーブSATAの使用。
3)高負荷のマシンから:企業の多くは、多くのケースでは、スレーブ遅延を結果として、高負荷に、スレーブサーバをスレーブの統計を行いますがあります
4)大規模なトランザクション:例えば、RBRモードでは、情報及び使用PROCESSLISTを表示して削除操作の多数、SQLにおけるこのようなmysqlbinlogはバイナリログのビューを使用して実行することができる迅速に確認
5)ロック: ロックの競合はまた、スレーブSQLスレッドの実行原因などいくつかのマシンからSQLの更新のために....選択するか、またはのMyISAMエンジンを使用する、などのように、遅いことができます。
図2に示すように、ハードウェア(最適化)
優れたサーバとの1は、そのような4U 2U有意に優れた性能、パフォーマンス2U 1Uよりも有意に良好より。
2.ディスクアレイを保存したり、SSDやさん、ランダム書き込み性能を持ち上げます。
マスタとスレーブとの間で保証3.以下同じスイッチ、およびギガビット環境です。
概要:強力なハードウェア、遅延が小さくなってしまいます。要するに、減少レイテンシーソリューションを過ごすためにお金と時間を過ごすことです。
シンクロトロンから3は、MySQLマスタ
1)スレーブ側のsync_binlogは0に設定されています
トランザクションのコミットは、MySQLのちょうどbinlog_cacheデータは、バイナリログファイルを書かれているが、ディスクのようにfsyncが同期命令通知ファイルシステムのキャッシュを実行していない場合はディスクにフラッシュされます
そして、時刻同期を何をすべきかを決定するためにファイルシステムを聞かせて、これが最高のパフォーマンスです。
2)スレーブ端innodb_flush_log_at_trx_commit = 2
MySQLは、ログバッファのデータがファイルにトランザクションがコミットされるたびにログに書き込まれますが、フラッシュ(ディスクへのブラシ)が同時に動作されることはありません。
このモードでは、MySQLは毎秒(ブラシディスク)操作後に行われるフラッシュします。
3)-logsスレーブ・アップデートは、バイナリログに充電されていない更新するプライマリ・サーバからサーバから受信しました。
4)直接無効バイナリログスレーブ端末