4. 高可用与灾难恢复架构设计

在SQL Server数据平台交付中,高可用(HA)与灾难恢复(DR)解决的是两个不同层次的问题。高可用关注本地故障时的服务连续性,目标通常是秒级到分钟级恢复,RPO接近零;灾难恢复关注站点级故障,允许更长的恢复时间,但必须保证数据可恢复。理解AlwaysOn可用性组、故障转移集群(WSFC)、日志传送以及混合DR方案的差异,是架构选型的基础。

一、四种机制的本质定位

Windows Server故障转移集群(WSFC)是底层基础设施,它本身不复制数据,只提供节点健康检测、资源组管理和仲裁投票。SQL Server FCI(故障转移集群实例)依赖WSFC实现实例级高可用:共享存储上只有一份数据,主节点故障时,备用节点接管共享存储并启动SQL Server实例。它的RTO通常在几十秒到几分钟,RPO为零,但共享存储本身是单点,因此FCI不能防存储故障,也不适合跨站点DR。

AlwaysOn可用性组(AG)是数据库级高可用方案。它基于WSFC,但数据通过日志块传输在多个副本间同步或异步复制,每个副本都有独立存储。同步提交模式下,主副本事务提交前必须等待同步副本确认,RPO为零;异步提交模式下,主副本不等待确认,RPO大于零但延迟更低。AG支持只读辅助副本、自动故障转移(同步模式)和手动强制故障转移(异步模式),是当前SQL Server本地HA与跨站点DR的主流选择。

日志传送是最经典的DR方案。主库做事务日志备份,通过文件共享传到辅助服务器,辅助服务器还原日志。它支持延迟还原,可以抵御逻辑误操作,例如误删表后仍能在延迟窗口内找回数据。但日志传送的RPO取决于备份频率,通常为15分钟到1小时,RTO需要手动恢复,适合预算有限、对RTO要求不苛刻的DR场景。

混合DR方案通常把AG用于本地高可用,把日志传送或异步AG用于异地灾备。例如同城两个节点做同步AG,异地节点做异步AG或日志传送。这样既保证本地RPO为零,又控制跨城带宽成本。

SQL Server HA/DR 架构对比与数据流向 WSFC + FCI 节点A 节点B 共享存储(单份数据) RPO=0,RTO 秒~分钟 存储为单点,不防站点故障 AlwaysOn 可用性组 主副本 读写 同步副本 只读/自动转移 异步副本 异地/手动转移 日志块传输,各副本独立存储 同步:RPO=0;异步:RPO>0 支持只读路由、备份卸载 依赖WSFC仲裁,需规划投票 日志传送 主库 辅助库 日志备份 → 共享 → 还原 RPO=备份间隔(15~60min) 支持延迟还原防误删 RTO 手动,无自动转移 混合 DR 方案:本地同步 AG + 异地异步 AG / 日志传送 同城主副本 读写 同城同步副本 RPO=0,自动转移 异地异步副本 RPO 秒~分钟 异地日志传送 延迟还原 本地:同步提交保障 RPO=0;异地:异步/日志传送控制带宽与延迟 故障域:节点 → 存储 → 机房 → 城市,逐层覆盖 仲裁与投票:同城3节点或云见证,避免脑裂

二、关键参数与选型判断

选型时先明确两个指标:RPO(可容忍丢失多少数据)和RTO(可容忍停机多久)。如果RPO必须为零且要求自动转移,同步提交AG是首选;如果RPO可以接受15分钟,日志传送成本最低;如果既要本地零丢失又要异地容灾,混合方案最合理。

AlwaysOn AG的关键配置包括:可用性模式(同步/异步)、故障转移模式(自动/手动)、备份优先级、只读路由、会话超时。同步副本建议不超过3个,否则提交延迟会明显上升。异步副本适合跨城,但要注意日志发送队列和重做队列,这两个队列持续增长说明辅助副本跟不上,需要检查网络带宽或磁盘IO。

日志传送的关键参数是备份频率、复制频率和还原频率。例如备份每15分钟一次,复制每15分钟一次,还原每15分钟一次,则最坏情况下RPO约30分钟。如果配置延迟还原30分钟,可以抵御误删表,但RTO会相应增加。

三、交付检查要点

  • WSFC仲裁:节点数为偶数时必须配置见证,云环境可用云见证,避免脑裂导致整个集群下线。
  • AG端点:确保5022端口在副本间互通,防火墙和证书配置正确。
  • 同步副本:监控log_send_queue_size和redo_queue_size,持续大于阈值需告警。
  • 日志传送:监控备份文件是否按时到达、还原是否成功,延迟还原窗口是否符合业务容忍度。
  • 故障转移演练:每季度至少执行一次计划内手动转移,验证应用连接串和监听器切换正常。
交付建议:先画故障域图,再选机制。节点故障用FCI或AG,存储故障用AG,机房故障用异步AG或日志传送,逻辑误删用延迟还原。不要用单一机制覆盖所有故障域。