我想对我自行设计的 ElastiCache for Redis 集群中小于 BytesUsedForCache 指标的 Redis 备份(.rdb)文件进行故障排除?
解决方法
BytesUsedForCache 指标包括所有用途的字节,例如实际密钥大小、标头和内存碎片。此外,过期的密钥还会消耗内存,直到 Redis 以被动或主动方式异步将其删除。有关更多信息,请参阅 Redis 网站上的 EXPIRE。
ElastiCache 使用分叉和无分叉备份流程将所有密钥转储到磁盘上来创建 .rdb 文件。您的 .rdb 文件可能小于 BytesUsedForCache 指标,原因是该文件不使用指针或过期的密钥。该文件也不包含内存碎片、元数据和缓冲区。
例如,假设您的 Redis 集群显示 BytesUsedForCache 为 15 GiB。如果您的备份是在有大量读写请求时启动的,则缓存大小可能介于 10 GiB 到 12 GiB 之间。这是因为备份不包括过期的密钥、指针、内存碎片、元数据和缓冲区。
要确认备份的数据完整性,请使用 Redis Keyspace 或 DBSIZE 命令。有关更多信息,请参阅 Redis 网站上的 Keyspace 和 DBSIZE。将原始集群和还原集群中的密钥数量与 .rdb 文件进行比较。确保在创建快照和还原之间没有发生任何密钥插入、删除或驱逐操作。有关更多信息,请参阅 Redis 网站上的 Why does my replica have a different number of keys than its master instance?。
**注意:**ElastiCache 备份中的缓存大小基于创建快照时 Redis 的 used_memory 参数。该大小是无压缩缓存大小的估计值。有关更多信息,请参阅 Redis 网站上的 INFO。如果您将备份快照导出到 Amazon Simple Storage Service(Amazon S3),则会导出压缩后的序列化文件大小。
相关信息
Snapshot and restore