マスタースレーブモード
MySQLのマスタースレーブレプリケーションと同じ理由で、Redisは、読み取りと書き込みが非常に高速ですが、読み取り要求が多い場合にも、より多くの圧力を生成するために、Redisを読んでの圧力を共有するために、Redisは、マスタースレーブレプリケーションアーキテクチャをサポートし、スレーブノードは、マスターノードの読み取り圧力を共有することができますRedisのマスタースレーブレプリケーションは、フルボリュームかどうかに応じて、完全な同期と増分同期に分けることができます。
構成
スレーブ・ノードの設定ファイルに
slaveof ip:port #マスターノードのアドレス
完全同期
完全同期はスレーブの初期化段階で発生し、この段階でスレーブはマスター上のすべてのデータをこのノードにコピーする必要があります:
1:スレーブノードはマスターノードに接続後、SYNCコマンドを送信します;
2:SYNCコマンドを受信したマスターノードは、BGSAVEコマンドを実行してRDBファイルの生成を開始し、BGSAVE実行後に実行されたすべての書き込みコマンドをバッファに記録します;
3:BGSAVEコマンド実行後、マスターノードから全スレーブサーバにスナップショットファイルを送信し、送信期間中は書き込みコマンドを継続的に記録します;
4: スレーブノードはスナップショットファイルを受信した後、古いデータをすべて破棄し、新しく受信したスナップショットをロードします;
5: スナップショット送信後、マスターはバッファに記録された期間、スレーブサーバーへの書き込みコマンドの送信を開始します;
6: スレーブサーバはスナップショットデータの読み込みが終わると、バッファ内のコマンドの受信を開始し、スレーブノード上でコマンドを実行します;
7: データ同期が完了すると、スレーブ・ノードのデータ初期化が完了し、スレーブ・ノードはクライアントからの読み取り要求の受信を開始できます。
インクリメンタル同期
インクリメンタル同期とは、スレーブノードの初期化データ完了後の通常動作中に、マスターノードが書き込み要求を受けてスレーブサーバーに同期するプロセスです。
インクリメンタル同期のプロセスは、マスター・ノードが書き込み要求を受信し、同じコマンドをスレーブ・ノードに同期させ、スレーブ・ノードが書き込みコマンドを受信して実行するというものです。
同期化ストラテジー
マスター・ノードが接続されると完全同期が実行され、完全同期が完了すると増分同期が実行されます。スレーブ・ノードはいつでも完全同期を開始することができます;
複数のスレーブノードがハングした場合、再起動中にマスターにSYNCリクエストが送信されます。複数のノードが同時にSYNCリクエストを送信すると、IOが劇的に増加し、マスターノードのダウンタイムが発生する可能性があります。
マスタースレーブレプリケーションの特徴
1: 非同期レプリケーションの使用
2: マスターノードは複数のスレーブノードを持つことができます。
3:スレーブノードは、スレーブ間の同期を実現するために、他のスレーブノードと関連付けることができます。
4: データ同期中も、マスターノードはリクエストを正常に処理でき、マスターをブロックすることはありません。





