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为零,又控制跨城带宽成本。
二、关键参数与选型判断
选型时先明确两个指标: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,持续大于阈值需告警。
- 日志传送:监控备份文件是否按时到达、还原是否成功,延迟还原窗口是否符合业务容忍度。
- 故障转移演练:每季度至少执行一次计划内手动转移,验证应用连接串和监听器切换正常。