2017-04-10 6 views
1

私は、センチネルと複数のスレーブを持つ赤い設定を持っています。各スレーブとマスターは、スナップショットファイルに永続的に書き込みます。Redis Replication:スレーブはスナップショットから読み込みますか?

私はシステムを再起動すると、すべてのスレーブが、マスターにあるより多くのキーをインスタンスに持っていますが(スナップショットファイルに存在するキーの数よりも少ない)、理由はわかりません。

1)私の質問ですが、スレーブは起動時にスナップショットファイルを読んだり、マスターとだけ同期したりしますか?

2)私はスナップショットファイルをコピーしません。これは問題を上書きするかどうかですか?

3)EXPIRATIONのキーがある場合、対応する時刻にスナップショットファイルから削除されたキーはありますか?

答えて

3

1)私の質問ですが、スレーブは起動時にスナップショットファイルを読んだり、マスターとだけ同期したりしますか?何AOFファイルがない場合

スレーブが再起動し

は、それがディスクからスナップショット( RDB)ファイルをロードします。

2)私は私のスナップショットファイルをコピーすることはありません、問題を上書きするために、このリードしていますか?

コピーとは関係ありません。

3)私はEXPIRATIONでキーを持っている場合、対応する時刻にスナップショットファイルから削除されたものはありますか?

RedisがRDBファイルをロードすると、キーの有効期限が切れた場合、Redisはキー値をdictに追加し、そのキーの有効期限を設定します。キーがすでに期限切れになっているかどうかにかかわらず(キーは後で削除されます)。

私は、システムを再起動すると、すべてのスレーブはマスターが

奴隷を持っているよりも、そのインスタンス内の複数のキーを持っているマスターと完全同期しない場合があります彼らはシャットダウンされ、そしていくつかのキーが削除されている前に、マスターから。マスターと再同期すると、それらのキーはスレーブから削除されます。

+0

for_stack:あなたの答えをありがとう:あなたが書きました:スレーブが再起動すると、ディスクからスナップショット(RDB)ファイルを読み込みます。このためのredis documentation referenceはありますか?私にとっては、マスタだけがRDBファイルから読み込み、すべてのスレーブがマスタをPSYNCHだけ読み込むと、より自然なように見えます。 – andrew231

+0

@ andrew231ちょうどソースコードをチェック:)私は、スレーブが再起動したときにディスクからスナップショットをロードすることをお勧めします。スレーブがマスターとの接続を失って再起動した場合、スレーブをロードしてクライアントにサービスを提供する必要があるためです。さもなければ、スレーブは空のデータセットで始まり、それは悪い考えです:) –

関連する問題