Amazon ElastiCache
用户指南 (API Version 2015-02-02)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

ElastiCache 备份和还原 (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,从而导致备份失败。

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

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

本部分概述了备份和还原的使用。

重要

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

有关更多信息,请参阅:

如果您计划删除集群并且必须保留数据,则可以通过以下过程来采取额外的预防措施:先创建一个手动备份,确认其状态为可用,然后继续删除集群。这将确保在备份失败的情况下,您仍有可用的集群数据,这样您便能按照上述最佳实践来重新尝试进行备份。

备份约束

计划或执行备份时,应考虑以下约束:

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

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

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

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

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

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

备份成本

ElastiCache 允许您免费为每个活动 Redis 集群存储一个备份。对于所有区域,其他备份的存储空间按每月 0.085 美元/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 文件。生成子进程最多需要十秒,在此时间内,父进程无法接受传入应用程序请求。子进程独立运行之后,父进程恢复正常操作。子进程在备份操作完成时退出。

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

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

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

     

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

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