ホームページ  >  記事  >  データベース  >  Redis のマスター/スレーブ レプリケーションについて話しましょう

Redis のマスター/スレーブ レプリケーションについて話しましょう

青灯夜游
青灯夜游転載
2021-10-08 10:56:361680ブラウズ

この記事では、redisにおけるマスタースレーブレプリケーションについて、具体的な使い方や注意点、センチネルモードなどを紹介していきますので、皆様のお役に立てれば幸いです。

Redis のマスター/スレーブ レプリケーションについて話しましょう

1: 概要

Redis マスター/スレーブ レプリケーションは、現在最も一般的に使用されている読み取り/書き込み分離方法であり、マスターが 1 つ以上のスレーブに接続されています。 . スレーブ、

マスターは書き込み操作を担当します。解決すべき主な問題は、Redis 読み取りのプレッシャーを共有し、データの読み取りと書き込みの効率を向上させることです。 [関連する推奨事項: Redis ビデオ チュートリアル

]

Redis のマスター/スレーブ レプリケーションについて話しましょう

2: 特定の用途

1. メインに接続するスレーブ ライブラリを指定します。 library:

Host は接続アドレス、port は接続アドレスのポート番号です。もちろん、複数の redis.conf ファイルを自分でコピーし、ポートを変更して異なるポートで複数の Redis サービスを開始することもできます。番号、スレッド番号、その他の情報。

SLAVEOF [host] [port]

2. メイン ライブラリは書き込みを担当し (読み取りも可能)、スレーブ ライブラリは読み取りのみ可能です:

主库中写的数据能在从库中获取:6381为主库,6380为从库
Redis のマスター/スレーブ レプリケーションについて話しましょう

3. スレーブ ライブラリを再びマスター ライブラリにします:

SLAVEOF no one

3: 注:

(1) 通常の状況では、マスター ライブラリがオフラインになった後、スレーブ ライブラリはマスター ライブラリが再接続するまで待機し、スレーブ ライブラリのステータスを維持します

(2) スレーブ ライブラリがオフラインになった後、スレーブ ライブラリとして機能するには、マスター ライブラリに再接続する必要があります。そうでない場合は、メイン ライブラリになります。

4: Sentinel モード

概要: メイン ライブラリ サービスがオフラインのときに、他のスレーブ ライブラリがメイン ライブラリを再選択してサービス操作を継続できるようにするため

機能: メイン ライブラリ サービスがオフラインになると、 Sentinel は、メイン ライブラリがオフラインであることを監視し、スレーブ ライブラリの 1 つを元のメイン ライブラリと置き換えるためのメイン ライブラリにする投票操作を実行します。

1. Redis サービスが開始されたディレクトリに sentinel.conf

ファイルを作成し、この設定ファイルを vim

` sentinel monitor host6379 127.0.0.1 6381 1  `
2 で編集します。 redis -sentinel [ファイル ディレクトリ]/sentinel.conf

Sentinel の開始

注: Sentinel モードでは、元のメイン ライブラリが再接続されると、Sentinel はその操作を新しいメイン ライブラリに追加します。つまり、新しいマスター ライブラリのスレーブ ライブラリが存在します。

5:原則:

 连接建立-->数据同步-->命令持续传播
 
 在从节点执行 slaveof 命令后,复制过程便开始运作,下面图示大概可以看到,\

図を見ると、コピー処理は大きく6つの工程に分かれていることがわかります

Redis のマスター/スレーブ レプリケーションについて話しましょう

Main このプロセスは、設定後のログ レコードからも確認できます。

##1) マスター ノード (マスター) 情報を保存します。
slaveof を実行した後、Redis は次のログを出力します:

Redis のマスター/スレーブ レプリケーションについて話しましょう

2) スレーブ ノード (スレーブ) は、毎秒実行されるスケジュールされたタスクを通じてレプリケーション関連のロジックを維持します。スケジュールされたタスクが新しいマスター ノードの存在を検出した後、そのノードとのネットワーク接続を確立しようとします\

Redis のマスター/スレーブ レプリケーションについて話しましょう

スレーブ ノードは、次のノードとのネットワーク接続を確立します。マスター ノード

スレーブ ノードが確立されますソケット ソケットスレーブ ノードは、マスター ノードによって送信されたレプリケーション コマンドを受け入れるために特別に使用されるポート 51234 のソケットを確立します。スレーブ ノードが正常に接続すると、次のログが出力されます。

Redis のマスター/スレーブ レプリケーションについて話しましょう

スレーブ ノードが接続を確立できない場合、スケジュールされたタスクは接続が成功するかスレーブが確立されるまで無期限に再試行されます。レプリケーションをキャンセルするために実行される人はいません。 接続失敗に関しては、スレーブ ノードで情報レプリケーションを実行して、マスター ノードへの接続が失敗したときのシステム時間を記録する master_link_down_since_seconds インジケーターを表示できます。スレーブ ノードがマスター ノードへの接続に失敗すると、問題の発見を容易にするために次のログが 1 秒ごとに出力されます:

# Error condition on socket for SYNC: {socket_error_reason}

3) ping コマンドを送信します。
接続が正常に確立された後、スレーブ ノードは最初の通信のために ping リクエストを送信します。ping リクエストの主な目的は次のとおりです:
·マスターとスレーブ間のネットワーク ソケットが利用可能かどうかを検出します。
·マスターノードが現在処理コマンドを受け入れることができるかどうかを検出します。
ping コマンドを送信した後、スレーブ ノードがマスター ノードからポン応答を受信しないか、タイムアウトになった場合 (ネットワーク タイムアウトやマスター ノードがブロックされてコマンドに応答できないなど)、スレーブ ノードはレプリケーション接続を切断すると、次にスケジュールされたタスクが再接続を開始します。 \

Redis のマスター/スレーブ レプリケーションについて話しましょう

Redis のマスター/スレーブ レプリケーションについて話しましょう

ノードから送信された ping コマンドが正常に返され、Redis は次のログを出力し、後続のレプリケーション プロセスを続行します。 \

Redis のマスター/スレーブ レプリケーションについて話しましょう

4) 許可の確認。 requirepass パラメータがマスター ノードに設定されている場合、パスワード検証が必要です。スレーブ ノードは、パスワードがマスター ノードと同じであることを確認して検証に合格するように masterauth パラメータを設定する必要があります。検証が失敗した場合、レプリケーションは終了すると、スレーブ ノードはレプリケーション プロセスを再開します。

5) データセットを同期します。マスターとスレーブのレプリケーション接続が正常に通信した後、初めてレプリケーションが確立されると、マスター ノードは保持しているすべてのデータをスレーブ ノードに送信します。この部分の操作は最も長いステップです。

6) コマンドは連続してコピーされます。マスターノードが現在のデータをスレーブノードに同期すると、レプリケーション確立プロセスが完了します。次に、マスター ノードは継続的に書き込みコマンドをスレーブ ノードに送信して、マスターとスレーブのデータの一貫性を確保します。

プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !

以上がRedis のマスター/スレーブ レプリケーションについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。