この記事では、Redis6 のマスター/スレーブ レプリケーション アーキテクチャを理解し、Redis6 のマスター/スレーブ レプリケーションの特徴を紹介します。
マスター/スレーブ レプリケーションとは、ある Redis サーバーから別の Redis サーバーにデータをコピーすることを指します。前者がマスター ノード、後者がスレーブ ノードになります。データ レプリケーションは一方向であり、マスター ノードからスレーブ ノードへのみ可能です。デフォルトでは、各 Redis サーバーはマスター ノードであり、マスター ノードは複数のスレーブ ノードを持つことができます (またはスレーブ ノードを持たないこともできます)。ただし、スレーブ ノードが持つことができるマスター ノードは 1 つだけです。 [関連する推奨事項: Redis ビデオ チュートリアル ]
マスター/スレーブ レプリケーションを使用する利点: 読み取りと書き込みが分離されるため、マスター ノードの読み取り能力が拡張され、負荷が分散されます。マスターノード。災害復旧の場合、マスター ノードがダウンすると、スレーブ ノードをマスター ノードのバックアップとして使用でき、いつでもインストールできます。
スレーブ ノードはマスター ノードのデータをコピーし、コピー後、読み取りと書き込みの分離を行うことができます。単一ノードの場合、アプリケーションのリクエストはマスター ノードに集中しますが、スレーブ ノードでは読み取りプレッシャーの一部を負担することができます。マスター ノードは読み取りおよび書き込み操作を実行できますが、スレーブ ノードは読み取り操作のみを実行できます。これにより、マスター ノードにかかる圧力が分散されます。
Redis マスター/スレーブ レプリケーション、1 つのマスターと 2 つのスレーブのアーキテクチャ環境の準備
非常に多くの概念について説明した後、マスターのデプロイを開始しましょうRedis の -slave アーキテクチャをコピーしましょう。今回は 1 マスター 2 スレーブ アーキテクチャをデプロイします。
#创建文件 mkdir -p /data/redis/master/data mkdir -p /data/redis/slave1/data mkdir -p /data/redis/slave2/data #从节点开启只读模式(默认) replica-read-only yes #从节点访问主节点的密码,和requirepass⼀样 masterauth 123456 #哪个主节点进⾏复制 replicaof 8.129.113.233 6379
最初にマスター ノードを作成し、data/redis/master/data ディレクトリの redis.conf ファイルにアクセスし、redis.conf ファイルを編集します。
bind 0.0.0.0 port 6379 daemonize yes requirepass "123456" logfile "/usr/local/redis/log/redis1.log" dbfilename "xdclass1.rdb" dir "/usr/local/redis/data" appendonly yes appendfilename "appendonly1.aof" masterauth "123456"
次に、スレーブ ノード 1 を作成します。 data /redis/slave1/data ディレクトリに redis.conf
bind 0.0.0.0 port 6380 daemonize yes requirepass "123456" logfile "/usr/local/redis/log/redis2.log" dbfilename "xdclass2.rdb" dir "/usr/local/redis/data" appendonly yes appendfilename "appendonly2.aof" replicaof 8.129.113.233 6379 masterauth "123456"
を構築し、スレーブノード 2 を作成し、data/redis/slave2/data ディレクトリに redis.conf
bind 0.0.0.0 port 6381 daemonize yes requirepass "123456" logfile "/usr/local/redis/log/redis3.log" dbfilename "xdclass3.rdb" dir "/usr/local/redis/data" appendonly yes appendfilename "appendonly3.aof" replicaof 8.129.113.233 6379 masterauth "123456"
を構築します。 : ファイアウォールをオフにすることを忘れないでください。 、Alibaba Cloud Server はネットワーク セキュリティ グループを開くことを忘れないでください。
作成後、構成されたノードを起動します
起動方法:
#启动主 ./redis-server/data/redis/master/data/redis.conf #启动从1 ./redis-server/data/redis/slave1/data/redis.conf #启动从2 ./redis-server/data/redis/slave2/data/redis.conf
情報レプリケーションを使用して現在のノードのステータスを表示します
マスター/スレーブ レプリケーションおよび読み取り/書き込み検証
1.在主节点创建一个key set name jack 2.在两个从节点测试是否能拿到主节点的数据 get name 3.在从节点set key是失败的,因为从节点只支持读操作
Redis6 マスター/スレーブ アーキテクチャ - レプリケーションの読み取り/書き込み分離原理の分析
マスター/スレーブ レプリケーションは分割されていますマスターとスレーブの最初の接続時に完全同期を実行するタイプと、完全同期が完了した後に増分同期を実行するタイプの 2 種類があります。
フルコピー: マスター サーバーは、Redis データから rdb ファイルを生成するバックグラウンド プロセスを開始します。マスター サーバーは、クライアントから受信したすべての書き込みコマンドをキャッシュします。プロセスがバックグラウンドで保存されると、 rdbファイルはスレーブサーバーに渡されますが、このときスレーブサーバーにはマスターサーバーのデータが保持されています。その後、マスター サーバーは、この期間中にキャッシュされたコマンドを redis 送信プロトコルを通じてスレーブ サーバーに送信し、スレーブ サーバーはこれらのコマンドを自身のローカルで順番に使用し、最終的にデータの一貫性を実現します
#増分レプリケーション: マスター ノードはコマンドの書き込みを続行します。スレーブが初期化を完了して動作を開始すると、マスター サーバーが書き込み操作を送信してサーバーと同期するプロセスは、増分レプリケーションと呼ばれます。増分レプリケーションとは、サーバーが書き込みコマンドを実行するたびに、同じ書き込みコマンドをスレーブ サーバーに送信し、スレーブ サーバーが受信した書き込みコマンドを受け入れて実行することを意味します。マスター/スレーブ レプリケーションの特徴:
マスター/スレーブ レプリケーションは、マスター/スレーブ サーバーに対してノンブロッキングであり、すべてのデータは同期されます この期間中、外部リクエストは通常どおり処理できます マスター ノードには複数のスレーブ ノードを含めることができ、各スレーブ ノードは他のスレーブ ノードからの接続を受け入れることができます。スレーブ ノードはキーを期限切れにせず、マスター ノードのキーが期限切れになって削除された後、スレーブ ノードに削除コマンドを送信して削除します。 高速レプリケーション: ノードの再同期が完了したら、ディスク上に RDB ファイルを作成し、このファイルをロードしてサーバーからデータを送信する必要があります。しかし、ディスク速度が比較的遅い場合はどうすればよいでしょうか?これにより、マスター ノードとスレーブ ノードの間でデータの不整合が発生します。新しいバージョンの Redis では、ディスクレス レプリケーションがサポートされており、ミドルウェアとしてディスクを使用せずに、RBD ファイルがネットワーク経由でスレーブ サーバーに直接送信されます。 マスタとスレーブの接続が切断された場合、再接続後は再同期を行わずに中断した時点からレプリケーションを続行できます。バージョン 2.8 以降、この新しい再同期機能では PSYNC コマンドが使用されますが、古い機能では SYNC コマンドが使用されます。プログラミング関連の知識の詳細については、プログラミング ビデオ をご覧ください。 !
以上がRedis6 のマスター/スレーブ レプリケーション アーキテクチャについて説明し、その特徴を見てみましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。