A:コア力学のRedisのレプリケーション
(1)非同期スレーブノードにデータをコピーするのRedisが、開始スレーブノードが定期的に認め、自分の複製当たりのデータ量を2.8 Redisの
(2)は、複数のスレーブノードのマスターノードである
(3)スレーブノードもスレーブの他のノードに接続することができます
(4)それはのマスターノードブロックされません正常に動作しているとき、スレーブが行うノードのコピー
(5)スレーブノードの複製を行う場合、それは、自分自身でそれをクエリ操作をブロックしません。サービスを提供するために、古いデータ・セットを使用します。コピーが完了すると、しかし、あなたは、古いデータ・セットを削除し、新しいデータセットをロードする必要があることは、この時間は、外国のサービスの停止となります
(6)スレーブノードは、主に水平方向の拡張のために使用され、読み書きん分離は、拡張スレーブノードは、スループットを向上させることができる読み出し
2:のセキュリティのマスタスレーブアーキテクチャのマスター持続的な意義
マスタスレーブアーキテクチャ場合は、マスターノードの永続性を回すことがすることをお勧めします!
あなたはオフにした場合にマスタデータにダウンタイムが空であるとき、その場合には、永続的なマスターが再起動する場合があり、その後、コピーを通過する可能性があるため、スレーブノードデータは、失うも、データのスレーブノードのホットスタンバイ・マスター・ノードとして使用することは推奨しませんA。
メモリ内>すべての - マスター - > RDBとAOFが閉じています
マスター・ダウン、再起動は、ローカルデータを復元することはできないがあり、それが直接IDEデータが空である自分自身を検討します、空のマスターデータは、すべてのスレーブのすべてのデータが空、設定スレーブに同期されます。100%のデータの損失
マスターノードは、永続化メカニズムを使用する必要があります。
第二に、さまざまなバックアッププログラムのマスターは、または行うには他に、すべてのローカルファイルへの発言権がない場合は、バックアップから復元するには、マスターRDBの選択を、そのようにはマスターブート時間は、データが存在することを確認します。
高可用性機構と、スレーブノードが自動的にマスターノードを引き継ぐことができ、それは、センチネルも可能である検出されていないマスター障害、マスタノードが自動的に再起動、またはこれら全てのスレーブノードのデータを空に障害をもたらすことができます。
3:マスター・スレーブ・アーキテクチャのコア原則
それが送信するときには、スレーブノードを起動するとPSYNCのマスターノードにコマンドを
データの欠落部分のみスレーブコピーに、このスレーブノード再接続マスタノードである場合には、マスターノードとスレーブノードである場合にそうでない場合、最初の接続されたマスタノードは、トリガする完全再同期を。完全再同期時間を開始し、マスタが生成を開始するために、バックグラウンドスレッドを開始RDBスナップショットファイルを、だけでなく、クライアントからのすべての書き込みコマンドがメモリにキャッシュ受けます。RDBファイルの生成が完了した後、マスターはRDBスレーブに送信され、SLのAVEは、最初ローカルディスクに書き込み、その後、メモリ内にローカルディスクからロードされます。そして、マスターメモリキャッシュコマンドを書き込みますが、スレーブに送信され、スレーブがデータを同期します。
マスターノードとスレーブノード切断ネットワーク障害がある場合、それは自動的に再接続します。再接続するために、複数のスレーブノードが存在する場合、マスターは、単にスレーブノードと、保存操作すべてのデータサービスをRDBを開始します。
4:マスタースレーブレプリケーションHTTP
最初から2.8のRedis、それはマスタースレーブレプリケーションHTTPをサポートし、マスタースレーブレプリケーションた場合、ネットワーク接続が切断さ、あなたがして、最後の場所をコピーではなくスクラッチ・コピーから開始するよりも、それを複製し続けることができます。マスタノードは、メモリに共通であろうバックログ、マスターとスレーブが保持オフセットレプリカならびに前記ID上記マスターオフセットは、のバックログに格納されます。マスターとスレーブのネットワーク接続が切断した場合、スレーブマスターはオフセットレプリカの最後のコピーから開始していきます
対応するオフセットが見つからない場合は、それが再同期を実行します
5:ディスクのコピーはありません
マスターが直接RDBメモリ内に作成し、その後ではない着陸の独自のローカルディスクには、スレーブに送信されました
ディスクレス・シンク・REPL
REPL-ディスクレス・シンク・ディレイ、一定時間待ち、あなたはコピーを開始する前に、複数のスレーブがオーバーに再接続を待機するので、
6:期限切れのキー処理
スレーブは、キーの有効期限が切れるだけの期限切れのマスターキーを待ちません。期限切れのマスターキーであれば、あるいはLRUによるキーのうち、それがスレーブにdelコマンドをシミュレートします。
7:コピー処理
1)スレーブノードを開始するには、マスターノードとホストIPなどの情報のみをマスターノードを、保存しますが、レプリケーションプロセスを開始しませんでした
彼らはどこから来たのか、マスターホストとIPは、slaveofコンフィギュレーション内のredis.confです
(2)スレーブノードのネットワーク接続ソケットを確立することが見出された場合、単にマスターノードと同様に、新しいマスターと複製する第2のノードかどうかをチェックするために定期的な内部タスクを持っている
(3)マスタに対するスレーブノードノード送信Aのpingコマンドを
(4)パスワード認証は、マスターセットの場合requirepass、その後、スレーブノードが送信する必要がありますmasterauth過去にパスワード認証を
フル・ボリューム・コピーを実行する最初の時間のための(5)マスターノードは、ノードスレーブに送信されたすべてのデータ
(6)はノード以降の書き込みコマンドを習得し続け、スレーブノードへの非同期レプリケーション
八:コアに関連するデータの同期メカニズム
実行レプリケーション・メカニズムの全額msater接続したときに最初にスレーブを意味し、そのプロセスの詳細の一部内側にあなたの
(1)マスタとスレーブは、オフセットを維持します
マスター自体はオフセットオフセット、スレーブが自身に蓄積していきます蓄積していきます
また、各スレーブマスターのオフセット節約しながら、スレーブは、マスタにオフセットその二を報告します
この特定のコピーは主に、マスターとスレーブが状況を知るために彼らのオフセットデータ、互いの間で一貫性のないデータを知っている必要があり、完全な量で使用しないこと
(2)バックログ
マスターノードがバックログを持っている、デフォルトのサイズは1MBのある
データをコピーするときにスレーブノードにマスターノードになりますバックログでのデータ同期書き込み
バックログは、主に割り込みコピーコピーした後、増分全額を作るために使用されます
(3)マスタ実行ID
情報サーバ、あなたはマスターの実行IDを見ることができます
ホスト+に基づいている場合飛んでいない、マスターノードを見つけ、IPマスターノードの再起動やデータが変更された場合、その後、スレーブノードは、異なる実行IDに基づいて区別されるべきで、実行ID行うことが違います全額をコピー
しますが、実行IDを変更する必要がある場合のRedisを再起動しないで、あなたはRedisの-CLIデバッグreloadコマンドを使用することができます
(4)PSYNC
ノードの使用からノードマスタからコピーさPSYNC、PSYNCオフセットRUNID
マスターノードが自分の状況に応じた応答情報を返し、FULLRESYNCトリガ複製の完全なオフセット量、増分レプリケーションを続行トリガすることができるRUNIDすることができます
3、複製の全体量
(1)実施bgsaveをマスター、ローカルスナップショットファイルを生成するRDB
(2)マスターノードはスレーブノードRDBスナップショットファイル、コピーRDB 60秒以上(REPL-タイムアウト)場合に送信され、その後、スレーブノードは、レプリケーションの失敗を想定します、このパラメータが適切に大きな調整することができます
(3)ギガビットイーサネットのマシンのために、通常、第二百メガバイトあたりに、6Gファイルは、最も可能性が高い以上、60年代より
RDBを生成するときに(4)ノードをマスター、すべての新しい書き込みコマンドがメモリにキャッシュされます後、スレーブノードに保存RDBは、その後、スレーブノードに新しい書き込みコマンドをコピー
、複製中に、メモリ・バッファは、64メガバイト以上に消費し続けた場合、スレーブ60(5)クライアントの出力バッファ64メガバイト- 256MBの制限、または1 256メガバイト、その後、ストップ複製は、複製が失敗した以上の
RDBを受けた後(6)スレーブノードを、古いデータを空にした後、もう一度メモリへのデータの古いバージョンに基づいて、同じ時間の提供サービスRDBをロード
スレーブた場合(7)ノードは、直ちにAOF書き換えBGREWRITEAOFを行い、その後、AOFを開き
RDBは、それは時間がかかり、古いデータ奴隷、書き換えAOFスレーブを清掃、ネットワークコピーRDBを通じて、生成されました
4G〜6G間で複製されるデータの量ならば、それは時間の総量は2分に1年半をコピー費やしている可能性があります
4、増分レプリケーション
複製プロセスの総量は、マスタースレーブネットワーク接続が切断されている場合はスレーブマスタが、増分レプリケーションをトリガーする場合(1)、その後再接続
欠落部分が直接自分のバックログからデータを取得する(2)マスタがスレーブノードに送信します、デフォルトのバックログが1メガバイトである
(3)オフセットでPSYNCスレーブ送信バックログによるmsaterからデータを取得するために使用されます
5、ハートビート
マスターノードから相互にハートビートメッセージを送信します
10秒ごとにハートビート、スレーブノードに送信Aハートビート1秒毎に一度送信されるデフォルトのマスター
6、非同期レプリケーション
各マスタは、ライトコマンドを受信した後、内部書込データ今、非同期スレーブノードを送信します
2つのコアのRedisのレプリケーション操作:
- 再同期化(再同期)
- 完全再同期(完全再同期)
- パートの再同期(部分再同期)
- コマンド伝播(コマンド伝播)