用于 Redis 的 Amazon ElastiCache
ElastiCache for Redis 用户指南 (API 版本 2015-02-02)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

ElastiCache for Redis 的备份与还原

运行 Redis 的 Amazon ElastiCache 集群可对其数据进行备份。可以使用备份还原集群或为新集群做种。备份包含集群的元数据以及集群中的所有数据。所有备份都写入 Amazon Simple Storage Service (Amazon S3),后者提供持久性存储。您随时可通过创建新的 Redis 集群并向该集群填充备份中的数据来还原数据。利用 ElastiCache,可以使用 AWS 管理控制台、AWS Command Line Interface (AWS CLI) 和 ElastiCache API 管理备份。

从 Redis 版本 2.8.22 开始,将基于可用内存选择备份方法。如果有足够的可用内存,则会生成一个子进程,该进程会在对缓存进行备份时将所有更改写入缓存的预留内存。根据备份过程中对缓存进行写入的次数,此子进程可能会占用所有预留内存,从而导致备份失败。

如果可用内存不足,则将使用无分支的协作式后台进程。此无分支方法会影响延迟和吞吐量。有关更多信息,请参阅 如何实施同步和备份

有关备份过程的性能影响的更多信息,请参阅备份的性能影响

在下面,您可以找到使用备份和还原的概述。

重要

备份过程有时无法创建备份(包括最终备份),不过这种情况很少见。预留内存不足通常是导致备份失败的原因。因此,请确保在尝试备份之前有足够的预留内存。如果您拥有的内存不足,可以移出一些密钥或者增大 reserved-memory-percent 的值。

有关更多信息,请参阅下列内容:

如果您计划删除集群并且保留数据很重要,则可以采取额外的预防措施。为此,请先创建手动备份,验证其状态是否是可用,然后删除集群。这样做可确保如果备份失败,您仍然可以使用集群数据。您可以按照前面概述的最佳实践重新尝试创建备份。

备份约束

在计划或创建备份时考虑以下约束:

  • 当前,仅 Redis 上运行的集群支持备份和还原。

  • Redis (已禁用集群模式) 集群的 cache.t1.micro 节点上不支持备份和还原。支持所有其他缓存节点类型。

  • 对于 Redis (已启用集群模式) 集群,支持所有节点类型的备份和还原。

  • 在任何连续的 24 小时期间,针对集群中每个节点创建的手动备份不能超过 20 个。

  • Redis (已启用集群模式) 仅支持在集群级别(对于 API 或 CLI,为复制组级别)进行备份。Redis (已启用集群模式) 不支持在分片级别(对于 API 或 CLI,为节点组级别)进行备份。

  • 在备份过程中,您无法在集群上运行任何其他 API 或 CLI 操作。

备份成本

使用 ElastiCache,您可以免费为每个活动 Redis 集群存储一个备份。对于所有 AWS 区域,其他备份的存储空间按每月 0.085 USD/GB 的费率收费。对于创建备份或者将备份中的数据还原到 Redis 集群,没有数据传输费。

备份的性能影响

备份过程取决于您正在运行的 Redis 版本。从 Redis 2.8.22 开始,此过程是无分支的。

运行 Redis 2.8.22 及更高版本时的备份

在 2.8.22 版及更高版本中,Redis 备份可在两种方法之间选择。如果内存不足,无法支持分支的备份,ElastiCache 会使用采用协作式后台处理的无分支方法。如果有足够的内存来支持分支的保存过程,则采用早期 Redis 版本中的相同过程。

如果在无分支备份期间写入负载较高,则会延迟对缓存的写入。此延迟可确保您不会累积太多更改,从而阻止成功备份。

运行 2.8.22 之前的 Redis 版本时的备份

备份是使用 Redis 的本机 BGSAVE 操作创建的。缓存节点上的 Redis 进程生成子进程,用于将所有数据从缓存写入 Redis .rdb 文件。生成子进程最多可能需要 10 秒钟。在此期间,父进程无法接受传入的应用程序请求。子进程独立运行之后,父进程恢复正常操作。子进程在备份操作完成时退出。

写入备份期间,使用其他缓存节点内存进行新写入。如果这一其他内存使用超过节点的可用内存,则处理可能由于分页过多而变慢或失败。

提升备份性能

以下是提高备份性能的准则。

  • 设置 reserved-memory-percent 参数 – 为了缓解过多分页问题,我们建议设置 reserved-memory-percent 参数。此参数可防止 Redis 使用节点的所有可用内存,有助于减少分页量。只需使用更大的节点,您也可以获得性能改进。有关 reserved-memoryreserved-memory-percent 参数的更多信息,请参阅 管理预留内存

     

  • 从只读副本创建备份 – 如果您正在具有多个节点的节点组中运行 Redis,则可以从主节点或一个只读副本进行备份。由于在 BGSAVE 期间需要系统资源,因此我们建议您从一个只读副本上创建备份。从副本创建备份时,主节点不受 BGSAVE 资源要求的影响。主节点可以继续处理请求,而不会降低速度。

如果您删除复制组并请求最终备份,则 ElastiCache 始终从主节点进行备份。这可确保您在删除复制组之前捕获最新的 Redis 数据。