引擎版本和升级 - Amazon ElastiCache for Redis
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

引擎版本和升级

ElastiCache for Redis 版本由包含 MAJOR 和 MINOR 组件的语义版本标识。例如,在 Redis 6.2 中,主要版本为 6,次要版本为 2。在操作自行设计的集群时,ElastiCache for Redis 还会公开 PATCH 组件,例如 Redis 6.2.1 的补丁版本为 1。

MAJOR 主要版本针对 API 不兼容的更改,而 MINOR 版本针对以向后兼容的方式添加的新功能。PATCH 版本针对向后兼容的错误修复和非功能性更改。

ElastiCache 无服务器的版本管理

ElastiCache 无服务器会自动将最新的 MINOR 和 PATCH 软件版本应用到您的缓存,而不会对您的应用程序造成任何影响或导致停机。在您的末端不需要执行任何操作。

当新的 MAJOR 版本可用时,ElastiCache 无服务器将在控制台中向您发送通知,在 EventBridge 中向您发送事件。您可以选择使用控制台、CLI 或 API 修改缓存并选择最新的引擎版本,将缓存升级到最新的主要版本。

自行设计的 ElastiCache 集群的版本管理

使用自行设计的 ElastiCache 集群时,您可以控制何时将缓存群集上所用的软件升级到 ElastiCache 支持的新版本。您可以控制何时将缓存升级到最新的 MAJOR、MINOR 和 PATCH 版本。可以通过修改集群或复制组并指定新的引擎版本,对您的集群或复制组启动引擎版本升级。

您可以控制是否及何时将支持缓存群集、符合协议标准的软件升级到 ElastiCache 所支持的新版本。此级别的控制使您能够与特定版本保持兼容、在生产中部署进行之前使用应用程序测试新版本以及根据自己的条件和时间表执行版本升级。

因为版本升级可能会涉及到某些兼容性风险,因此版本升级不会自动发生。您必须启动它们。

可以通过修改集群或复制组并指定新的引擎版本,对您的集群或复制组启动引擎版本升级。有关更多信息,请参阅下列内容:

使用自行设计集群时的升级注意事项

注意

以下注意事项仅在升级自行设计集群时适用。这些事项不适用于 ElastiCache 无服务器。

在升级自行设计集群时,请注意以下事项

  • 引擎版本管理的设计使您可以尽可能多地控制修补的发生方式。但是,如果发生系统或缓存软件中存在严重安全漏洞这种不太可能发生的情况,ElastiCache 保留代表您修补集群的权利。

  • 从 Redis 6.0 开始,ElastiCache for Redis 将为每个 Redis OSS 次要版本提供单一版本,而不提供多个补丁版本。

  • 从 Redis 引擎版本 5.0.6 开始,您可以在最短的停机时间内升级集群版本。集群在整个升级过程中可供读取,并在大部分升级持续时间内可供写入,但在只持续几秒钟的故障转移操作期间则例外。

  • 您还可以使用 5.0.6 以下的版本升级您的 ElastiCache 集群。所涉及的过程相同,但在 DNS 传播期间可能会导致更长的故障转移时间(30 秒 - 1 分钟)。

  • 从 Redis 7 开始,ElastiCache for Redis 支持在 Redis(已禁用集群模式)和 Redis(已启用集群模式)之间切换。

  • Amazon ElastiCache for Redis 引擎升级旨在尽最大努力保留您的现有数据,并需要 Redis 复制成功。

  • 升级引擎时,ElastiCache for Redis 将终止现有的客户端连接。为了最大限度地减少引擎升级期间的停机时间,我们建议您实施关于 Redis 客户端的最佳实践,包括错误重试和指数回退,以及关于维护期间最大限度减少停机时间的最佳实践。

  • 升级引擎时,无法从 Redis(已禁用集群模式)直接升级到 Redis(已启用集群模式)。以下过程演示如何从 Redis(已禁用集群模式)升级到 Redis(已启用集群模式)。

    从 Redis(已禁用集群模式)升级到 Redis(已启用集群模式)引擎版本
    1. 备份 Redis(已禁用集群模式)集群或复制组。有关更多信息,请参阅进行手动备份

    2. 使用备份创建具有一个分区(节点组)的 Redis(已启用集群模式)集群并为其设定种子。在创建集群或复制组时,指定新的引擎版本并启用集群模式。有关更多信息,请参阅使用外部创建的备份为新的自行设计的集群制作种子

    3. 删除旧 Redis(已禁用集群模式)集群或复制组。有关更多信息,请参阅 删除集群删除复制组

    4. 将新的 Redis(已启用集群模式)集群或复制组扩展到所需的分区(节点组)数。有关更多信息,请参阅 扩展 Redis(启用集群模式)集群

  • 升级主要引擎版本(例如从 5.0.6 升级到 6.0)时,还需要选择一个与新引擎版本兼容的新参数组。

  • 对于单个 Redis 集群以及禁用了多可用区的集群,建议有足够的内存可供 Redis 使用,如确保具有用于创建 Redis 快照的足够内存中所述。在这些情况下,主项在升级过程中不可用于处理服务请求。

  • 对于启用了多可用区的 Redis 集群,还建议在传入的写流量较低期间安排引擎升级。升级到 Redis 5.0.6 或更高版本时,主集群在升级过程中仍可用于服务请求。

    将处理和修补带多个分片的集群和复制组,如下所示:

    • 将并行处理所有分片。在任何时候,仅在分片上执行一次升级操作。

    • 在每个分片中,在处理主副本之前,会先处理所有其他副本。如果一个分片中的副本较少,则可能会在处理完其他分片中的副本之前处理该分片中的主副本。

    • 在所有分片中,主节点都是按顺序处理的。一次只升级一个主节点。

  • 如果已对当前集群或复制组启用了加密,则无法升级到不支持加密的引擎版本,例如,从 3.2.6 升级到 3.2.10。

如何升级引擎版本

使用 ElastiCache 控制台、Amazon CLI 或 ElastiCache API 修改集群或复制组并指定较新的引擎版本,从而启动集群或复制组的版本升级。有关更多信息,请参阅以下主题。

解决被阻止的 Redis 引擎升级

如下表所示,如果您有待处理的纵向扩展操作,则会阻止 Redis 引擎升级操作。

待处理的操作 阻止的操作
纵向扩展 立即引擎升级
引擎升级 立即纵向扩展
纵向扩展和引擎升级 立即纵向扩展
立即引擎升级
解决阻止的 Redis 引擎升级
  • 请执行以下操作之一:

    • 通过清除 Apply immediately (立即应用) 复选框,将 Redis 引擎升级操作安排在下一维护时段内。

      对于 CLI,请使用 --no-apply-immediately。对于 API,请使用 ApplyImmediately=false

    • 等到下一维护时段(或之后)再执行 Redis 引擎升级操作。

    • 将 Redis 纵向扩展操作添加到此选中了 Apply Immediately (立即应用) 复选框的集群修改中。

      对于 CLI,请使用 --apply-immediately。对于 API,请使用 ApplyImmediately=true

      此方法将立即执行引擎升级,从而有效地在下一维护时段内取消该操作。