首页/数据/备份与容灾速查/SQL Server Always On 可用性组

SQL Server Always On 可用性组

基于 Windows Server 故障转移集群(WSFC)的数据库级高可用:同步提交副本可自动故障转移(RPO 0),异步副本用于异地容灾。

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

SQL Server Always On 可用性组

建立在 Windows Server 故障转移集群(WSFC)之上的数据库级高可用方案:把一组数据库作为单元复制到多个副本,同步提交副本在主库故障时可自动故障转移且不丢数据,异步副本用于异地容灾。客户端通过监听器(Listener)连接统一入口,副本切换后不需要改连接串。

基本信息

适用平台SQL Server(Standard 版与 Enterprise 版能力有差异)
依赖组件Windows Server 故障转移集群(WSFC)
复制模式同步提交(零丢失、影响写延迟)与异步提交
入口监听器提供统一连接端点,切换后无需改连接串

典型使用场景

  • 同城双机房主备:同步副本保证核心库零丢失切换
  • 异地灾备:异步副本作为跨地域的容灾节点
  • 只读分流:把报表与查询流量导向可读的辅助副本
  • 补丁与升级:把副本逐个滚动更新,减少停机时间
  • 故障转移演练:手动切换验证应用是否能自动重连

查看副本与同步状态

查看副本与同步状态
-- 可用性组与副本配置
SELECT ag.name AS ag_name, ar.replica_server_name,
       ar.availability_mode_desc, ar.failover_mode_desc
FROM sys.availability_groups ag
JOIN sys.availability_replicas ar ON ag.group_id = ar.group_id;

-- 数据库级别的同步状态与健康度
SELECT ag.name, drs.database_id, drs.synchronization_state_desc,
       drs.synchronization_health_desc, drs.log_send_queue_size
FROM sys.dm_hadr_database_replica_states drs
JOIN sys.availability_groups ag ON drs.group_id = ag.group_id;

-- 手动故障转移(同步提交副本、无数据丢失)
ALTER AVAILABILITY GROUP [AG_AppDB] FAILOVER;

状态读法

字段含义异常表现
synchronization_state_desc副本同步状态SYNCHRONIZING 表示未追平,此时不能零丢失切换
synchronization_health_desc同步健康度NOT_HEALTHY 需立即排查
availability_mode_desc提交模式期望同步但显示异步,切换会丢数据
log_send_queue_size待发送日志量持续增长说明副本落后或网络受限
可用性组是数据库级保护:登录名、作业、链接服务器、维护计划等实例级对象需要额外的同步策略,否则故障转移后会出现『连得上但权限与调度缺失』。
异步副本不能当零丢失方案:故障转移时会丢数据,必须评估丢失量与业务容忍度,并明确区分自动与手动转移的条件。

易错点

  • 实例级对象未同步:故障转移后应用连得上但权限与会话设置缺失,作业也不再执行
  • 异步副本当作零丢失方案:转移时仍有数据丢失窗口
  • 副本长期处于 SYNCHRONIZING:此时强制切换会造成数据丢失或无法切换
  • 监听器与 DNS 未纳入演练:切换后客户端连接超时,才知道入口配置有问题

数据来源与参考

  • Microsoft Learn(Always On 可用性组概述)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌