重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 357|回复: 0
打印 上一主题 下一主题

SQL Server高可用之Always On可用性组 (Availability Groups, AG) 配置

[复制链接]
跳转到指定楼层
楼主
发表于 5 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ZhangQi 于 2026-4-17 15:55 编辑

简介:Always On 可用性组 是 SQL Server 提供的一种高可用性和灾难恢复解决方案,它比传统的日志传送、数据库镜像等功能更强大、更灵活。

(一)核心概念
- 可用性组 (Availability Group, AG):将一组用户数据库(称为“可用性数据库”)作为一个整体进行故障转移。注意:它不包含系统数据库(如 master、msdb)。

- 副本 (Replica):承载可用性数据库的 SQL Server 实例。一个 AG 包含一个主副本(负责读写,处理所有连接)和最多 8 个辅助副本(只读,或完全不可访问)。

- 数据同步模式:

同步提交 (Synchronous Commit):主副本必须等待辅助副本将日志写入磁盘,才会提交事务。优点:数据零丢失(RPO=0)。缺点:可能增加事务延迟。用于高可用性(同城)。

异步提交 (Asynchronous Commit):主副本不等待辅助副本确认。优点:性能影响极小。缺点:切换时可能丢失少量数据。用于灾难恢复(异地)。

- 故障转移模式:

自动故障转移:需要同步提交模式 + 自动故障转移设置。主副本故障后,辅助副本自动接管,对应用透明。

手动故障转移:管理员主动发起,可用于同步或异步模式。

强制手动故障转移(可能丢数据):用于异步模式下主副本完全崩溃的紧急情况。

(二)工作原理
- 依赖 Windows 故障转移群集 (WSFC):Always On 构建在 WSFC 之上。WSFC 负责监控各节点健康状态、维护仲裁、协调故障转移。
- 日志传输:主副本将事务日志块发送到辅助副本。
- 重做 (Redo):辅助副本接收日志后,在对应的数据库上“重放”这些操作,保持数据同步。
- 侦听器 (Listener):提供一个虚拟网络名称(如 SQLAG01)和一个 IP。应用程序只需连接侦听器,永远无需关心当前哪个副本是主。故障转移后,侦听器自动指向新主副本,应用无感知。

(三)主要优势
- 高可用性 + 灾难恢复合一:一套方案解决同城双活(自动故障转移)和异地容灾(异步副本)。
- 辅助副本可读:辅助副本可以设置为只读访问,用于报表查询、备份等,分担主副本压力。这是比数据库镜像最大的进步。
- 多数据库保护:一个 AG 可以包含多个数据库,它们会作为一个整体进行故障转移,保证业务一致性(例如订单库和库存库一起切换)。
- 灵活的故障转移:支持按需手动切换、故障自动切换,甚至仅手动计划切换(如升级硬件)。
- 支持多种备份:可以在辅助副本上执行仅复制备份或日志备份,减轻主副本负载。

(四) 典型架构示例
标准高可用 (2 节点):主副本(同步 + 自动故障转移) + 辅助副本(同步 + 自动故障转移) + 文件共享见证。实现 RPO=0,RTO 秒级。
跨地域容灾 (3 节点):主节点(城市A) + 同城同步副本(城市A) + 异地异步副本(城市B)。城市A 故障,可手动切换到城市B,可能丢少量数据但业务能恢复。

(五)版本与限制

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-18 03:10 , Processed in 0.371526 second(s), 23 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表