首页/数据/备份与容灾速查/多可用区部署(Multi-AZ)

多可用区部署(Multi-AZ)

把实例与数据副本分布在同一区域内的多个可用区:可用区间通常有独立电力与网络,单 AZ 故障时仍可提供服务。

备份与容灾速查数据更新于 2026-10-13

多可用区部署是什么

可用区是同一区域内物理隔离的设施分组,各有独立的供电与网络。多可用区(Multi-AZ)部署把实例与数据副本分布到至少两个 AZ:单 AZ 发生电力或网络故障时,仍在正常 AZ 的服务可以继续提供访问,数据库通常自动切换到备用 AZ,应用仍使用同一个连接地址。

基本信息

适用平台AWS 各托管服务、阿里云多可用区部署、自建机房的双机房模式思路相通
典型收益单 AZ 故障自动切换,数据库场景常见 RTO 为分钟级
代价资源成本上浮(通常多一份备用资源),跨 AZ 调用时延略增
连接方式托管数据库一般提供统一 endpoint,切换由平台完成,应用无需改配置

典型使用场景

  • 托管数据库高可用:主实例故障时自动切换到备用 AZ 的副本
  • 无状态应用多 AZ 分布:配合负载均衡,单 AZ 故障时流量自动摘除
  • 缓存与消息队列:多 AZ 部署避免单设施故障造成全链路不可用
  • 负载均衡与网关:跨 AZ 部署实例,避免入口单点
  • 合规与可用性要求:把『不依赖单一机房』作为架构设计的基本项

AWS RDS 多可用区(示意)

AWS RDS 多可用区(示意)
# 创建时开启多可用区,指定主可用区
aws rds create-db-instance --db-instance-identifier appdb \
  --multi-az --availability-zone ap-northeast-1a \
  --engine mysql --db-instance-class db.m6g.large
# 故障时自动 failover 到备用 AZ,应用仍使用同一个 endpoint
# 为已有实例改为多可用区部署(会触发一次切换与短暂不可用)
aws rds modify-db-instance --db-instance-identifier appdb \
  --multi-az --apply-immediately
# 查看当前可用区与多可用区状态
aws rds describe-db-instances --db-instance-identifier appdb \
  --query 'DBInstances[0].{AZ:AvailabilityZone,MultiAZ:MultiAZ,Status:DBInstanceStatus}'

故障域层级对照

层级典型故障防护手段
单机/单实例硬件损坏、进程崩溃实例级高可用与自动重启
单可用区机房供电、网络故障多可用区部署,跨 AZ 副本与切换
单区域地震、区域级网络中断跨区域部署与异地容灾
应用侧连接地址写死、会话未外置统一域名与连接池重连,会话外置
多可用区解决的是单机房级故障;区域级故障(地震、区域网络中断)仍需跨区域部署,两者是不同层级的防护,不能互相替代。
自动切换只保证数据库侧可用:应用、缓存、消息中间件如果仍集中在单一 AZ,故障时整条链路依旧不可用,架构盘点时要逐个组件确认。

易错点

  • 应用侧连接地址写死某个 AZ 的节点:切换后连接不上,业务恢复受阻
  • 数据库多 AZ 但应用与缓存单 AZ:数据库切换成功、应用侧仍然全挂
  • 改配置触发切换未做窗口安排:把已有实例改为多 AZ 会引发一次短暂不可用,应放在低峰
  • 误以为多 AZ 能防区域级故障:区域整体不可用时两个 AZ 一起受影响,仍需跨区方案

数据来源与参考

  • AWS 文档(Regions and Availability Zones / Multi-AZ 部署)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌