Redisのは、一般的に主支持Redisのレプリケーションから、圧力の読みを共有するために、高い同時読み取りをサポートするために使用されます。アーキテクチャは、マスタ - スレーブ・アーキテクチャ、マスターマルチスレーブで、マスタは他のスレーブノードへの書き込みやコピーデータを担当して、ノードが読み出しのために責任があります。すべてが離れて、すべてのノードからの要求を読んで。また、これは、高い同時読み取りをサポートし、拡張のレベルを達成することが容易になります。
Redisのマスター・スレーブレプリケーション機能:
-
Redisのは、非同期的に開始redis2.8から、スレーブノードは、定期的にコピーあたりのデータ量を確認し、スレーブノードにデータをコピーします。
-
スレーブノードは複数のマスターノードを構成することができます。
-
スレーブノードは、他のスレーブノードに接続することができます。
-
マスターノードの正常な動作をブロックすることなく、複製を行ってスレーブノード。
-
スレーブノードは、クエリのためにブロックしていないとき、それは古いデータを使用するコピーサービスを提供するために設定しますが、一度にコピーが完了し、新しいデータセットをロードし、古いデータ・セットを削除する必要があり、その後、外国サービスを一時停止;
-
横方向の膨張にメインスレーブノードは、スレーブノードの拡張は、スループットを向上させることができる読み取り、別々の読み出しを行い、書き込み。
-
スレーブノードがホットスタンバイ・マスター・ノード・データ用に推奨されていないと、マスタの永続性は、マスタデータを更新する可能性がある場合ので、マスター・スレーブ・アーキテクチャた場合、ダウン一度オフに、永続的なマスターノードを開く必要がありますすることは、その後、空でありますコピーされた後、スレーブノードも失われます。
マスタースレーブのレプリケーション
Redisのマスター・スレーブレプリケーションのコピーが合計と増分に分割されています。
スレーブがマスタコピー上のすべてのデータを持っている必要があるときに全額が、一般的に、スレーブ初期化フェーズで発生しコピーします。次のステップ:
-
PSYNCコマンドを送信してから、マスターサーバーに接続します。
-
SYNCマスターサーバー名を受領した後、BGSAVE RDBコマンド・ファイルを開始し、記録を実行した後、すべてのライトコマンドバッファを生成します。
-
マスターBGSAVE実行は、すべてのスナップショットファイルをサーバから送信され、書き込みコマンドが送信中に実行された記録を継続します。
-
すべての古いデータを破棄するように、サーバーからスナップショットファイルを受信した後、スナップショットを受信ロードした後、
-
これは、プライマリサーバのスナップショットが送信された後、サーバーからバッファ書き込みコマンドを送信するために始めました。
-
受信したコマンド要求を開始スナップショットを完了するために、サーバからロードされ、ホストサーバからライトバッファコマンドを実行します。
インクリメンタルレプリケーションは、一般的にされて
操作がスレーブプライマリサーバは、サーバからの処理に同期した後、適切に初期化ワーキング始まり書きます。次のステップ:
-
レプリケーション・プロセスの完全な量は、マスタースレーブネットワーク接続が切断された場合、スレーブのマスターは、増分レプリケーションをトリガーするとき、その後、再接続します。
-
直接スレーブノードに送信されたデータの部分的喪失に独自バックログからマスター、デフォルトのバックログが1メガバイトです。
-
マスタデータは、オフセットでPSYNCスレーブに係る伝送バックログから取得されます。
他の知識ポイント(無視できます)
のコア原則からRedisのマスターコピー
スレーブ
ノードの初期接続のマスターノードは、コマンドと、トリガ複製PSYNC全額を送信します。このマスターにそれらをバッファキャッシュに外部から受信したコマンドを書き込みながら、RDBのスナップショットの生成を開始するために、バックグラウンドスレッドを開きます。RDBファイルの生成が完了した後、ファイルがスレーブがディスクに書き込まれ、その後、ディスクからメモリにロードされるように、スレーブノードに送信され、その後、マスターは、バッファコマンドを書き込むスレーブに送信され、スレーブが書き込みコマンドとデータを同期させます。ネットワーク障害のために、スレーブノードとマスターノードが切断されると、自動的にノード欠落データをスレーブに接続複製マスターノードの後に、再接続します。
HTTPのマスタースレーブのレプリケーション
それはむしろ、スクラッチ・コピーから開始するよりも、中断したところからHTTPのためのマスタースレーブのレプリケーション・サポートredis2.8当初から、プライマリネットワーク接続がコピー処理から切断され、コピーが続行されます。
、マスタノードは、メモリ内のバックログを維持し、マスタとスレーブがバックログ内のオフセット、オフセットレプリカマスター実行IDを保持し、マスターとスレーブが切断された場合、スレーブマスタオフセット最後の複製からコピーを開始していきあなたが対応するオフセットが見つからない場合は、それが実行されます
再同期を。
ディスクのコピーません
マスターメモリRDBで作成し、その後、RDBに送られたが、あなたは自分のローカルディスクに落ち、そして唯一のコンフィギュレーション・ファイルにすることができREPL-ディスクレス同期遅延を開始する必要はありません。
期限切れキー処理
スレーブは、期限切れの鍵を扱っていないだけで、マスター・プロセスを待つことができます。処理されたマスターキー、またはLRUキーによって除去した場合、スレーブにdelコマンドをシミュレートします。
ハートビート
マスターノードから、お互いにハートビートメッセージを送信します。デフォルトのマスターはスレーブ・ノードは、1秒に1回のハートビートを送信し、10秒ごとにハートビート一度送りました。
非同期レプリケーション
各マスタ書き込みコマンドが受信された後、第一の内部書込データは、非同期スレーブノードを送信します。
どのようにRedisの可用性を行います
外国のサービスのための時間の99パーセント場合は、システムは、高度に利用可能であると言うことができます。
スレーブノードを掛けて、システムの高可用性には影響しません、他のスレーブノードは、同じデータ外交サービスを提供することができます。
マスターノードがハングアップ場合しかし、あなたはスレーブノードで、その結果、データを書き込むことができないシステムが使用不能に続い同等の最新のデータでは、ありません。Redisの高可用性フレームワークは、スタンバイを切り替え、フェイルオーバーフェイルオーバーと呼ばれます。マスタは自動的にノードの障害を検出し、自動的にマスターノード間のスレーブノードに切り替わり、スタンバイ切り替えと呼ばれます。このプロセスは、高可用性のRedisのマスター・スレーブ・アーキテクチャを実現しています。