Redis のバックアップ (.rdb) ファイルが、自分で設計した ElastiCache for Redis クラスターの BytesUsedForCache メトリクスよりも小さい場合のトラブルシューティングをしたいと考えています。
解決方法
BytesUsedForCache メトリクスには、実際のキーサイズ、ヘッダー、メモリの断片化など、あらゆる目的で使用されるバイトが含まれます。また、期限切れのキーも、Redis がパッシブまたはアクティブに非同期的に削除するまでメモリを消費します。詳細については、Redis ウェブサイトの「EXPIRE」を参照してください。
ElastiCache はフォークとフォークレスのバックアッププロセスを使用してディスクにすべてのキーをダンプし、.rdb ファイルを作成します。.rdb ファイルはポインタや期限切れのキーを使用しないため、BytesUsedForCache メトリクスよりも小さくなる可能性があります。このファイルには、メモリの断片化、メタデータ、およびバッファも含まれていません。
たとえば、Redis クラスターで BytesUsedForCache が 15 GiB と表示されているとします。大量の読み取りおよび書き込みリクエストがあったときにバックアップが開始された場合、そのキャッシュサイズは 10 GiB から 12 GiB の範囲になる可能性があります。これは、バックアップには期限切れのキー、ポインタ、メモリの断片化、メタデータ、およびバッファが含まれていないためです。
バックアップのデータ整合性を確認するには、Redis Keyspace コマンドまたは DBSIZE コマンドを使用します。詳細については、Redis ウェブサイトの「キースペースと DBSIZE」を参照してください。元のクラスターと復元されたクラスターにあるキーの数を .rdb ファイルと比較します。スナップショットの作成と復元の間にキーの挿入、削除、エビクションのアクションが発生していないことを確認します。詳細については、Redis のウェブサイトで「レプリカにはマスターインスタンスと異なる数のキーがあるのはなぜですか?」を参照してください。
**注:**ElastiCache バックアップのキャッシュサイズは、スナップショット時の Redis used_memory パラメーターに基づいています。このサイズは、圧縮されていないキャッシュサイズの推定値です。詳細については、Redis ウェブサイトの INFO を参照してください。バックアップスナップショットを Amazon Simple Storage Service (Amazon S3) にエクスポートすると、圧縮されたシリアル化されたファイルサイズがエクスポートされます。
関連情報
スナップショットと復元