SQL Server AlwaysOn 可用性组(AlwaysOn Availability Groups) 是 SQL Server 提供的一种高可用性与灾难恢复(HA/DR)解决方案,从 SQL Server 2012 开始引入。它允许在一组数据库层面上实现高可用,而不是像传统的数据库镜像那样只能针对单一数据库。
核心概念
- 可用性组 (Availability Group)
- 一个逻辑单元,由一个主副本和最多 8 个辅助副本组成。
- 每个副本可以包含一个或多个数据库(称为可用性数据库)。
- 主副本对外提供读写操作,辅助副本可配置为只读、备份或同步。
- 主副本 (Primary Replica)
- 负责处理读写请求,保证数据是最新的。
- 主副本的数据变更会同步或异步复制到辅助副本。
- 辅助副本 (Secondary Replica)
- 可以有多个,主要用途包括:
- 高可用:当主副本宕机时,可快速故障转移。
- 只读负载分担:辅助副本可承接只读查询请求,分担主库压力。
- 备份优化:可在辅助副本执行备份,减少对主库的负担。
- 可以有多个,主要用途包括:
- 同步与异步模式
- 同步提交模式 (Synchronous Commit Mode):保证主副本和辅助副本的数据一致性,适合高可用场景。
- 异步提交模式 (Asynchronous Commit Mode):主副本提交事务时无需等待辅助副本确认,延迟低,但可能存在数据丢失风险,适合灾难恢复(跨地域部署)。
- 监听器 (Availability Group Listener)
- 提供一个虚拟网络名称和 IP 地址,客户端只需连接监听器,无需关心当前的主副本在哪台服务器。
优点
- 数据库级别的高可用,不需要像群集一样对整个实例进行保护。
- 支持多副本,增强数据安全和读写分离能力。
- 故障转移时间短,应用端几乎无感知。
- 可以结合 Windows Server 故障转移群集(WSFC)实现自动故障转移。
总结
SQL Server AlwaysOn 可用性组 就像是给数据库加了一层“保险系统”,既能保证数据高可用,又能实现读写分离、备份优化和跨地域灾备。