7. Redis レプリケーション (レプリカ)

Redis レプリケーション (レプリカ)

それは何ですか
マスター/スレーブ レプリケーションであり、マスターは主に書き込み用、スレーブは主に読み取り用です。マスターデータが変更されると、新しいデータを他のスレーブデータベースに非同期で自動的に同期します。

読み取りと書き込み分離
災害復旧
データのバックアップ
高い同時
実行性をサポートするための水平拡張


ここに画像の説明を挿入

redis6379.conf、redis6380.conf、redis6381.conf

ヒント
3 つの仮想マシンは相互に ping できる必要があり、ファイアウォールの構成に注意を払う必要があります。

3 つのコマンド:

マスター/スレーブ レプリケーション

メイン ライブラリのレプリカ IP メイン ライブラリ ポート、マスター (ライブラリ) ではなくスレーブ (ライブラリ) あり

チェンジドア

新しいメイン ライブラリのスレーブ IP 新しいメイン ライブラリ ポート

自作の王様

誰の奴隷でもない

設定ファイルの内容を変更し、
例としてredis6379.confを操作する手順は以下のとおりです。

デーモン化を開く はい
ここに画像の説明を挿入
バインド 127.0.0.1 をコメントアウトします

ここに画像の説明を挿入
protected-mode no現在の作業ディレクトリ、dir pid ファイル名、pidfileログ ファイル名、logfileを指定する
ここに画像の説明を挿入
ポートを指定します。ログ ファイルが起動ファイルと同じレベルにある場合は、./6379.log として構成できます。そうでない場合は、絶対パスをここに書き込む必要があります。これは大きな落とし穴です。
ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入
必須パス
ここに画像の説明を挿入
dump.rdb
ここに画像の説明を挿入
ファイル名、追加ファイル名
ここに画像の説明を挿入

スレーブがマスターにアクセスするためのパスワード masterauth は、
ここに画像の説明を挿入
マスターではなくスレーブに対して設定する必要があります

1 つのマスターと 2 つのスレーブ
解決策 1: マスターとスレーブの関係を書き込むように設定ファイルを修正する 設定ファイルの
実行: マスター ライブラリのレプリカ IP マスター ライブラリ ポート

スレーブ (ライブラリ) を構成しますが、(マスター) ライブラリは構成しません。最初にスレーブ マシンを
ここに画像の説明を挿入
マスターとして構成し、次に 2 つのスレーブを順番に起動します
ここに画像の説明を挿入
。マスターとスレーブの関係を表示します。

ログ

ホストログ、vim 6379.log
ここに画像の説明を挿入
スタンバイログテール -f 6380.log
ここに画像の説明を挿入
コマンド

127.0.0.1:6379> 情報レプリケーション

解決策 2: コマンド操作マニュアルの主従関係指示 スレーブ
マシンをシャットダウンし、設定ファイルの設定項目を削除する 現在 3 台のマシンはマスター状態にあり、それぞれが従属状態ではありません。

ここに画像の説明を挿入
3人のマスター

ここに画像の説明を挿入
プリセットスレーブでコマンドを実行

salveof メイン ライブラリ IP メイン ライブラリ ポート

ここに画像の説明を挿入
VS コマンド間の違いを構成する

構成、永続的で安定しており永続的に有効、
コマンドは有効

トーチは引き継がれます
。前のスレーブは次のスレーブのマスターになることができ、スレーブは他のスレーブから接続および同期リクエストを受信することもできます。その後、スレーブはチェーン内の次のマスターとして機能し、書き込み量を効果的に削減できます。メインマスターの圧力と途中で方向を変える
:以前のデータはクリアされ、マスター/スレーブ関係が再確立され、最新の
スレーブオブがコピーされます。新しいマスターデータベースのIPとポート新しいマスター データベースは
反転されます
。slaveof no one は、現在のデータベースと他のデータベースの同期を停止しません。

レプリケーションの原則とワークフロー

スレーブが起動し、同期の開始時に
、スレーブがマスターに正常に接続された後、スレーブは同期コマンドを送信します。スレーブがマスターに初めて接続すると
、完全な同期 (フル コピー) が自動的に実行されます。スレーブの元のデータはマスター データによって上書きされ、クリアされます。

最初の接続では、フル レプリケーション
マスター ノードは、同期コマンドを受信した後、バックグラウンドでスナップショットの保存を開始します (つまり、RDB 永続性。RDB はマスター/スレーブ レプリケーション中にトリガーされます)。同時に、受信したすべてのコマンドを収集します。データセットを変更してキャッシュします。マスターノードがRDB永続化を実行した後、マスターはRDBスナップショットファイルとキャッシュされたすべてのコマンドをすべてのスレーブに送信して、完全な同期を完了します。スレーブサービスはデータベースファイルデータを受信した後、それを保存し
、それをメモリにロードして、レプリケーションの初期化を完了します。

ハートビートは継続し、通信
repl-ping-replica-period 10 は
ここに画像の説明を挿入
安定に保たれます。増分レプリケーション
マスターは、新しく収集されたすべての変更コマンドを 1 つずつスレーブに自動的に送信し続けます
。同期が完了すると、スレーブはオフラインになります。
オフセット内では、マスターとスレーブはコピーされたオフセットとマスター ID を保存し、オフセットはバックログに保存されますマスターは、ブレークポイント再開と同様に、キャッシュされたオフセット以降のデータのみをスレーブにコピーします。

コピーのデメリット

レプリケーション遅延、信号減衰

すべての書き込み操作は最初にマスターで実行され、その後スレーブに同期的に更新されるため、マスターからスレーブ マシンへの同期にはある程度の遅延が発生します。システムが非常にビジー状態の場合、遅延の問題はさらに深刻になります。スレーブマシンの数が増えると、この問題もさらに悪化します。

ここに画像の説明を挿入
マスターが電話を切った場合はどうすればよいですか?

デフォルトでは、マスターはスレーブ ノードで自動的に選択されません。

毎回手動による介入が必要ですか? -> 無人化により需要が硬直化する

おすすめ

転載: blog.csdn.net/weixin_45817985/article/details/131475134