ホームページ >データベース >Redis >Redis クラスターデータを同期する方法

Redis クラスターデータを同期する方法

(*-*)浩
(*-*)浩オリジナル
2019-06-17 13:14:299235ブラウズ

Redis には mysql のような場所をコピーするという概念がないため、スレーブとマスターが切断されて再接続されると、マスターの完全なスナップショットが作成され、スレーブのすべてのデータがクリアされ、すべてのデータが消去されます。メモリ テーブルが再確立されるため、Salve がデータを復元することになりますが、非常に時間がかかり、Master にも負担がかかります。

Redis クラスターデータを同期する方法

Redis のマスター/スレーブ レプリケーション戦略は、永続的な rdb ファイルを通じて実装されます。プロセスは、最初に rdb ファイルをダンプし、次に rdb ファイル全体をスレーブに転送します。次に、ダンプされた操作をスレーブにリアルタイムで同期します。スレーブ サーバーをマスター サーバーの正確なレプリカにします。次の機能については、公式ドキュメント ReplicationHowto で説明されています: (推奨学習: Redis ビデオ チュートリアル )

マスターは複数のスレーブをサポートし、スレーブは他のスレーブからの接続を受け入れ、スレーブとして機能します。このようにマスター/スレーブを形成するマルチレベル構造のレプリケーション機能は、マスター サーバーをブロックしません。1 つ以上のスレーブ サーバーが初期同期中であっても、マスター サーバーはコマンド リクエストの処理を続行できます。レプリケーション機能はスレーブ サーバーをブロックしません。対応する設定が redis.conf ファイル内で行われている限り、スレーブ サーバーが初期同期中であっても、サーバーは古いバージョンのデータ セットを使用してコマンド クエリを処理できます。 。ただし、古いバージョンのデータ セットがサーバーから削除され、新しいバージョンのデータ セットがロードされている間、接続要求はブロックされます。レプリケーションはスケーラビリティを提供するために使用されます。たとえば、スレーブはデータの冗長性のために使用できます。時間のかかるコマンド (ソートなど) を特定のスレーブに送信して、マスターのブロックを回避することもできます。さらに、スレーブは永続化にも使用できます. の場合、スレーブ サーバーは永続化操作を実行しますが、必要なのはマスターの構成ファイル内の保存ディレクティブをコメント アウトすることだけです。

Redis は非同期レプリケーションを使用します。

Redis のマスター/スレーブ レプリケーションは 2 つの段階に分かれています:

1) 同期操作: スレーブ サーバーのデータベース ステータスを現在のデータベース ステータスに更新します。マスターサーバー。

2) コマンドの伝播: マスター サーバーのデータベース ステータスが変更され、マスター サーバーとスレーブ サーバーのデータベース ステータスが不一致になった場合、マスター サーバーとスレーブ サーバーを一貫した状態に戻します。

同期

クライアントが SLAVEOF コマンドをスレーブ サーバーに送信し、スレーブ サーバーにマスター サーバーのコピーを要求する場合、スレーブ サーバーはまず同期を​​実行する必要があります。つまり、スレーブ サーバーのデータベース ステータスがマスター サーバーの現在のデータベース ステータスに更新されます。

#スレーブ サーバーからマスター サーバーへの同期操作は、マスター サーバーに SYNC コマンドを送信することで完了する必要があります。SYNC コマンドの実行手順は次のとおりです。 #スレーブ サーバー マスター サーバーに SYNC コマンドを送信します。 SYNC コマンドを受信したマスターサーバーは、BGSAVE コマンドを実行し、バックグラウンドで RDB ファイルを生成し、バッファを使用して今後実行されるすべての書き込みコマンドを記録します。マスターサーバーのBGSAVEコマンドが実行されると、マスターサーバーはBGSAVEコマンドで生成されたRDBファイルをスレーブサーバーに送信し、スレーブサーバーはRDBファイルを受信して​​ロードし、自身のデータベースの状態を、BGSAVEコマンドが実行されたときのデータベースの状態に更新します。マスターサーバーが BGSAVE コマンドを実行しました。マスターサーバーは、バッファーに記録されたすべての書き込みコマンドをスレーブサーバーに送信し、スレーブサーバーはこれらの書き込みコマンドを実行し、自身のデータベースステータスをマスターサーバーデータベースの現在のステータスに更新します。

Redis 関連の技術記事の詳細については、Redis データベースの使用方法のチュートリアル

列にアクセスして学習してください。

以上がRedis クラスターデータを同期する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。