本页面介绍了标准层级中 Memorystore for Redis 实例的高可用性 (HA)。
标准层级通过将数据复制到一个或多个副本,并提供快速、自动的副本故障切换,来保护 Redis 实例免受常见故障的影响。
如果标准层级实例的 readReplicaMode 设置处于停用状态,则该实例包含一个主实例和一个提供高可用性功能的副本。如果标准层级实例启用了此设置,则会有一个主实例和 1 到 5 个只读副本。此配置中的只读副本不仅可以执行读取操作,还可以为 HA 功能提供故障切换支持。如需确定readReplicaMode设置处于停用状态还是启用状态,请参阅查看实例的读取副本信息。
Memorystore for Redis 通过将主实例复制到一个或多个副本,提供高可用性。Memorystore for Redis 使用异步复制协议将您对主实例上的数据所做的任何更改复制到副本。由于复制的异步特性,并且取决于主实例的写入速率,副本可能会滞后于实例。
如果主实例发生故障,实例会自动故障切换到副本。对于具有多个副本的实例,该实例会自动故障转移到复制延迟最少的运行状况良好的副本。

如果您将实例配置为只有一个非读取副本,则 Memorystore for Redis 会将所有应用连接定向到主端点。如果您将实例配置为使用读取副本,那么应用还可以使用读取端点在所有副本之间分配读取查询。
数据持久性和高可用性
虽然标准层级通过复制和自动故障切换提供高可用性 (HA),但 HA 并不能保证完整的数据持久性。在某些灾难性事件(例如临时性区域故障)期间,即使启用了高可用性,Memorystore for Redis 也无法提供完整的数据持久性。
为了帮助保护您的数据并提供基准级别的持久性,当您使用 Google Cloud 控制台创建 Memorystore for Redis 实例时,系统会默认启用 RDB 快照。
对于生产工作负载,请考虑以下最佳实践,以进一步提高数据恢复能力:
- 灾难恢复:Memorystore for Redis 不支持跨区域复制。如果您的灾难恢复策略需要进行跨区域复制才能实现真正的区域级恢复能力,那么我们建议您使用 Memorystore for Valkey 实例。如需详细了解如何跨区域配置和管理辅助实例,请参阅 Memorystore for Valkey 文档中的使用跨区域复制。
- 最高持久性:如果您的应用需要尽可能高的数据持久性,我们建议您使用配置了跨区域复制、每日自动备份和仅附加文件 (AOF) 持久性的 Memorystore for Valkey 实例。这种组合可提供最可靠的数据丢失防护。如需了解详情,请参阅 Memorystore for Valkey 文档中的持久性概览。
发生故障切换时
当主实例发生故障时,系统会进行故障切换。在故障切换期间,主实例和读取端点会自动重定向到新的主实例和副本。Memorystore for Redis 会断开与主端点的所有连接。Memorystore for Redis 还会断开与升级后的读取副本的读取端点连接。
故障切换对应用有何影响
当主实例故障切换到副本时,Memorystore for Redis 会断开与该实例的主端点的现有连接。在自动修复期间,实例平均不可用 30 秒;在维护事件期间,实例平均不可用 15 秒。重新连接后,您的应用会使用相同的连接字符串或 IP 地址自动重定向到新的主实例。您无需在故障切换后更新应用。
在故障切换期间,如果存在与读取端点的连接,Memorystore for Redis 会断开与正在升级为主实例的副本的连接。Memorystore for Redis 会继续处理与其他副本的连接。故障切换完成后,新副本可用后,Memorystore for Redis 会将连接重定向到新副本。
在故障切换后重试实例连接
发生故障切换时,Memorystore for Redis 会断开来自主端点的所有连接。根据副本数量,Memorystore for Redis 也可能会断开一些读取连接。
由于连接丢失,您的应用必须重试以重新建立连接。我们建议重试逻辑使用指数退避算法,以确保您不会因重试请求过多而使实例过载。除了包含重试逻辑之外,我们还建议您通过手动故障切换来测试故障切换对应用有何影响。
大多数 Redis 客户端都内置了重试功能。如果因故障切换而导致连接断开,我们建议您使用这些重试功能。
执行以下任务时会发生故障切换:
如果您在应用中实现重试逻辑来处理故障切换引起的连接中断,您的实例可能不会发现对性能产生重大影响。
查看高可用性状态
您可以使用 Cloud Monitoring 查看 Redis 实例的高可用性指标。如需了解 Cloud Monitoring 为 Memorystore for Redis 提供的指标,请参阅监控 Redis 实例和 Memorystore for Redis 支持的监控指标。
如需查看 Redis 提供的内置复制状态,请使用 INFO 命令。