Redis のマスター/スレーブ レプリケーションのエントリから原則まで

目次

1.Redisとは何ですか

2. Redis のマスター/スレーブ レプリケーション

1. マスター/スレーブ レプリケーションとは何ですか?

2. マスター/スレーブ レプリケーションの役割

3. マスター/スレーブ レプリケーションのワークフロー原理

3.1. リンク確立段階

3.2. データ同期段階

 3.3. コマンド伝播段階

3. マスター/スレーブ レプリケーションに関するよくある質問

1. 頻繁なフルコピー

2. 頻繁なネットワーク中断

3. データに一貫性がない


1.Redisとは何ですか

Redis は、現在最も人気のある NoSQL データベースの 1 つです。Redis は、ANSI C で書かれたオープン ソースであり、さまざまなデータ構造を含み、ネットワーク、メモリベース、オプションの永続性キーと値のペアのストレージ データベースをサポートしています。次のような特徴があります。 :

  • メモリに基づいて実行され、効率的なパフォーマンスを発揮します
  • 配布をサポートし、理論的には無限に拡張可能
  • キーバリューストレージシステム
  • このオープン ソースは ANSI C 言語で書かれており、BSD プロトコルに準拠し、ネットワークをサポートし、メモリベースおよび永続的なログ タイプの Key-Value データベースを使用でき、複数の言語で API を提供します。

わかりました!Redis とは何かについて簡単に説明します。これはデータを保存するための NoSQL であり、通常はキャッシュに使用されます。この記事は、Redis に基づいた Redis の基礎となるレイヤーをさらに理解するものでもあります。

2. Redis のマスター/スレーブ レプリケーション

わかりやすいシンプルな図

マルチサーバーセットアップ: マスターサーバーはデータを書き込み、他のスレーブサーバーに同期するだけですが、問題はデータの同期 です。そこで、マスター/スレーブ レプリケーションを使用してデータ同期の問題を解決します。

1. マスター/スレーブ レプリケーションとは何ですか?

マスター/スレーブ レプリケーションは、マスターのデータをスレーブに即座に効果的にコピーすることです。これはマスター/スレーブ レプリケーションと呼ばれます。

特徴: マスターは複数のスレーブを持つことができ、1 つのスレーブは 1 つのマスターにのみ対応します。

責任:

  • マスター
    • データの書き込み
    • 書き込み操作を実行すると、変更されたデータがスレーブに自動的に同期されます。
    • データの読み取り (通常は書き込み操作のみが実行され、読み取りはスレーブ サーバーによって行われます)        
  • 軟膏
    • 読み取りデータ
    • 書き込み禁止

2. マスター/スレーブ レプリケーションの役割

読み取りと書き込みの分離:マスター書き込み、スレーブ読み取り、サーバーの読み取りおよび書き込み負荷容量の向上

負荷分散:マスター/スレーブ構造に基づいて、読み取り/書き込み分離と組み合わせて、スレーブがマスター負荷を共有し、需要の変化に応じてスレーブの数を変更し、複数のスレーブ ノードを通じてデータ読み取り負荷を共有することで、大幅に向上します。 Redis サーバーの同時実行性とスループット。

障害回復:マスターで問題が発生した場合、スレーブは迅速な障害回復を実現するためのサービスを提供します。

データの冗長性:ホット データ バックアップの実装は、永続化に加えてデータの冗長性を実現する方法です。

高可用性基盤:マスター/スレーブ レプリケーションに基づいて、センチネル モードとクラスターを構築して、Redis 高可用性ソリューションを実装します。

3. マスター/スレーブ レプリケーションのワークフロー原理

まず概要を説明すると、マスター/スレーブ レプリケーションの原理を 2 つの段階に分け、その動作原理を接続確立段階データ同期段階、コマンド伝播段階に分けます。

3.1. リンク確立段階

スレーブ サーバーはマスターIP アドレスポート番号を送信し、マスターは受信して応答します。応答を受信した後、スレーブはマスターの IP とポート番号を保存し、保存された情報に基づいてストケット チャネルを確立し、定期的な ping を開始します。マスターもポンで応答します。最後に、スレーブは自身のポート番号をマスターに送信し、マスターはスレーブのポート番号を保存します。

 ステップ 1: スレーブはマスターのアドレスとポートを設定し、マスター情報を保存します。

ステップ 2: スレーブがソケット接続を確立する

ステップ 3: スレーブが ping コマンドを送信する (タイマー タスク)

ステップ 4: 認証 (redis はサーバーによって内部的に使用され、外部には提供されないため、設定されません)

ステップ 5: マスターはスレーブポート情報を保存します

3.2. データ同期段階

マスターサーバーが AOF をオンにするかマスターサーバーになると、レプリケーションバッファが作成されます。

① スレーブが初めて psync2 リクエストを送信すると、2 つのデータ psync2 ? -1(psync2 <runid> <offset>) が送信されます。これは、初めて完全にコピーする必要があることを意味します。②マスターは bgsave を実行して RDB ファイルを生成し、現在のコピーオフセットを記録する ③命令を受信すると、+fullresync 自身の uid オフセットを送信する ストケット経由でスレーブに RDB ファイルを送信すると、クライアントコマンドが受け付けられ、そしてオフセットも変わります。④スレーブはfullresyncを受信し、マスターのuidとoffset(オフセット)を保存し、現在のデータを全てクリアし、ストケット経由でRDBファイルを受け取り、RDBデータを復元します。

上記はフルコピーです

⑤コマンド:psync2 masterid offsetを送信します。⑥コマンドを受け付け、idが一致するかどうか、オフセットがコピーバッファにあるかどうかを判定します。

⑦ masterid または offset のどちらかが満たされていない場合は完全コピーが作成され、送信されたものがマスターと同じ場合は省略されます。マスターに保存されているオフセットと一致しない場合、続行オフセットが送信され、渡されます。 ソケットは、コピー バッファー内のマスターのオフセットから転送されたマスター オフセットにデータを送信します。⑧スレーブは +concatiue を受信し、マスターのオフセットを保存し、メッセージ受信後、bgrewriteaof を実行してデータを復元します。

上記の増分コピー

 3.3. コマンド伝播段階

 コマンド伝播フェーズ中に replconf ack offset コマンドを送信します。

3. マスター/スレーブ レプリケーションに関するよくある質問

1. 頻繁なフルコピー

問題の症状:

        ネットワーク環境が悪く、ネットワークが中断されており、スレーブがサービスを提供していません。

問題の原因:

        コピー バッファが小さすぎます。ネットワークが切断された後、スレーブのオフセットが範囲外になり、フル コピーがトリガーされます。

最終結果:

        スレーブは完全なレプリケーションを繰り返し実行します

解決する:

        コピーバッファサイズを変更する

repl-backlog-size

2. 頻繁なネットワーク中断

現象:

        スレーブとマスター間の接続が切断されました

理由:

        マスターが ping コマンドを送信する頻度が低くなります

        マスターは短いタイムアウトを設定します

        ping コマンドによりネットワーク内でパケット損失が発生する

解決する:

        ping コマンドの送信頻度を増やす

repl-ping-slave-period

タイムアウト応答時間は、ping コマンドの頻度の少なくとも 5 ~ 10 倍にする必要があります。そうしないと、スレーブが簡単にタイムアウトしてしまいます。

3. データに一貫性がない

現象:

        複数のスレーブが同期せずに同じデータを取得する

理由:

        ネットワーク情報が同期されていないため、データ送信に遅延が発生しています。

プラン:

       1. Alibaba Cloud など、通常は同じコンピューター室に展開されるマスターとスレーブのネットワーク環境を最適化します。

        2. マスター/スレーブステージの遅延を監視します (オフセット経由) スレーブ遅延が大きすぎる場合は、スレーブへのプログラムのデータ アクセスを一時的にブロックします。

slave-serve-stale-data yes|no

 開いた後は、info や smileof などのいくつかのコマンドにのみ応答します (データの一貫性要件が高くない限り、使用には注意してください)

おすすめ

転載: blog.csdn.net/wang20000102/article/details/132516446