如何为 Amazon ElastiCache Redis 集群实现灾难恢复或容错能力?

上次更新时间:2020 年 9 月 15 日

我需要为 Amazon ElastiCache Redis 集群数据实现灾难恢复或容错能力。有哪些可用选项?

解决方法

不同的容错能力解决方案在数据持久性、性能影响和成本方面有不同的平衡考虑。请根据您的使用案例选择最适合的方案:

多可用区

多可用区方案非常适合需要优先考虑数据保留、最短停机时间和应用程序性能的情形。

  • 数据丢失可能性 – 低。多可用区为所有场景提供容错能力,包括硬件相关问题。
  • 性能影响 – 低。由于实施过程后无需人工干预,在所有可用选项中,多可用区方案所需的恢复时间最短。
  • 成本 – 低到高。多可用区是成本最低的选项。如果您无法承受硬件故障导致数据丢失的风险,或无法忍受使用其他选项时响应中断所需的停机时间,则应使用多可用区方案。

有关多可用区方案的更多信息,请参阅利用多可用区最大限度地减少 ElastiCache for Redis 停机时间

每日自动备份

当您预计集群的资源利用率较低时,可以计划每日自动备份。ElastiCache 创建一个群集备份,然后将所有数据从缓存写入 Redis RDB 文件。Redis 2.8.22 及更高版本实现了无分支备份,有助于提高性能

注意:对于集群模式已禁用的集群,cache.t1.micro 节点不支持 Redis 备份和还原。

  • 数据丢失可能性 – 高(最多丢失一天的数据)。每日自动备份最长可保留 35 天。
  • 性能影响 – 中到高。一天运行多次文件备份会影响性能。要提高性能,可考虑在指定的仅持久性辅助节点上启用 RDB 快照。然后在主节点及所有其他辅助节点上同时禁用 RDB 快照和 Redis 仅附加文件 (AOF)。
  • 成本 – 低到中。存储成本随备份数量和数据保留期限的增加而增加。

在实施备份和还原前,请考虑备份约束导致的限制。有关为运行 Redis 的 ElastiCache 集群实施备份的完整信息,请参阅 ElastiCache for Redis 的备份与还原。有关更多信息,请参阅进行手动备份

使用 Redis 仅附加文件 (AOF) 手动备份

使用 AOF 的手动备份将无限期保留,非常适合测试和存档。在任意 24 小时的周期内,为每个节点安排的手动备份最多可以进行 20 次。

要为 Redis 集群启用 AOF,请在将 appendonly 参数设置为 yes 的情况下创建参数组。然后将参数组分配给您的集群

使用 AOF 时,请注意以下几点:

  • 要提高性能,可考虑在指定的仅持久性辅助节点上启用 RDB 快照。然后在主节点及所有其他辅助节点上同时禁用 RDB 快照和 AOF。
  • 要提高性能,请将 appendfsync 参数的值设置为 everysecno,以便每秒或按需执行写入磁盘的操作。
  • AOF 仅支持与 Redis 2.8.21 及更早版本一起使用。
  • AOF 受缓解故障:Redis 仅附加文件 (AOF) 中所述限制的约束。
  • cache.t1.micro 和 cache.t2.* 节点或多可用区复制组节点不支持 AOF。对于这些类型的节点,将忽略 appendonly 参数值。

使用 AOF 手动备份使用 Redis 2.8.21 及更早版本的固有功能,非常适合以相对较低的成本保持较高的数据持久性的使用案例。

  • 数据丢失可能性 – 低到中。虽然 AOF 提供了容错能力,但无法保证数据不受硬件相关缓存节点故障的影响,因此存在数据丢失风险。
  • 性能影响 – 低到高。AOF 性能影响与关联的 appendfsync 参数值(用于控制 AOF 输出缓冲区写入磁盘的频率)息息相关。输出缓冲区写入磁盘的频率越高,对性能的影响就越大。为此参数选择 always 选项将导致每次修改缓存数据都刷新缓冲区。因此不推荐使用此选项。由于 AOF 文件可能会快速增大,最佳实践是验证您的磁盘空间要求。关于 AOF 性能,还有一个需要注意的地方:重放 AOF 文件所需的时间。可能需要数分钟时间来使用缓存数据填充 Redis 节点。在此期间,您的应用程序只能通过直接查询数据库来满足对未缓存数据的查询要求。
  • 成本 – 低到中。AOF 成本与时间要求息息相关,只要您有重放 AOF 文件的需求,就必须仔细考虑性能影响。磁盘空间要求高于之前讲过的快照选项。

有关更多信息,请参阅 ElastiCache for Redis 仅附加文件 (AOF)