AlloyDB for PostgreSQL 中的高可用性 (HA) 可在可用区或实例发生故障期间保持数据库正常运行,并使客户端应用可以访问您的数据。可用区级实例在服务中断期间可能会经历长时间的停机,而高可用性实例则不同,它会在跨可用区的活跃节点和备用节点之间自动进行故障切换。如需为高可用性配置实例,请参阅查看集群和实例设置。
主实例和次要实例
配置了高可用性的 AlloyDB 主实例包含一个活跃节点和一个备用节点,这两个节点位于不同的可用区中。对于存储,AlloyDB 使用区域日志持久化工具来存储数据库预写式日志 (WAL),并使用 AlloyDB Regional Storage 服务来存储数据块。实例的 IP 地址使用负载均衡器将流量路由到活跃节点。
处理写入操作时,AlloyDB 数据库首先将 WAL 写入活跃节点上的区域级日志持久化工具,然后将日志异步传输到 AlloyDB 中的区域级日志处理服务器,这些服务器会将日志具体化为数据块,以便长期存储。然后,AlloyDB 会清理已成功处理的日志。
下图展示了高可用性架构。

图 1. 高可用性架构。
故障切换
如果活跃节点变得不可用,AlloyDB 会自动将主实例故障切换到备用节点,使其成为新的活跃节点。负载均衡器会识别新的活跃节点,并开始将流量路由到该节点。执行故障切换后,即使原始节点恢复在线状态,新的活跃节点也会保持活跃状态。由于 WAL 会同步写入区域级日志持久化工具,因此故障切换期间不会发生数据丢失。
下图显示了故障切换后的流量。

图 2. 故障切换后的流量流。
故障切换会按以下事件顺序发生:
- 活跃节点或可用区发生故障。AlloyDB 健康监控系统会定期检查活跃节点是否健康。如果健康监控系统多次检查失败,则会启动故障切换。此检测最多可能需要 30 秒。
- 数据库在备用节点上启动,并开始接受连接。 此过程通常可在 30 秒内完成。
- 备用节点会升级为主节点。使用实例的静态 IP 地址,新的主节点开始传送数据,并且客户端查询在重新连接后成功。
- AlloyDB 会在之前活跃的可用区中重新创建备用节点。然后,此备用节点便可用于未来的故障切换。
要求
要使 AlloyDB 允许故障切换,配置必须满足以下要求:
- 主实例必须处于正常运行状态(未停止或未在进行维护)。
- 备用可用区和备用节点都必须处于良好运行状态。
热备用架构
采用 PostgreSQL 18 的 AlloyDB 实例使用热备用功能提供改进的故障切换。
借助热备用功能,AlloyDB 会将备用节点作为副本运行。在故障切换期间,此副本可以更快地转换为读写模式,从而减少停机时间。此外,复制功能还支持热缓存,这有助于确保故障切换后查询性能保持一致。
下图展示了包含热备用数据库的高可用性架构。

图 3. 热备用。
读取池
具有两个或更多节点的读取池实例具有高可用性。节点均匀分布在各个可用区,从而能够应对故障事件。如果发生节点或可用区故障等故障事件,区域级负载均衡器会将流量路由到其余运行状况良好的节点,从而确保客户端不会停机。
在主实例故障切换期间,读取池会保持在线状态。在故障切换期间,来自主实例的 WAL 复制会暂时暂停,并在主实例恢复后自动恢复。