AlwaysOn “是SQL Server 2012中引入的 “高可用性” 和 “灾难恢复” 的功能。

它由两项主要技术组成:AlwaysOn FCI(Failover Cluster Instance)和AlwaysOn AG(Availability Groups)。

以下是对上述2个功能的概述。

名称 概要
AlwaysOn FCI 提供 “高可用性” 的功能,对应于前一个版本的 “故障转移” 功能。多个节点访问 “共享磁盘”,如果一个节点(服务器)发生故障,它将切换到另一个节点继续处理。这与上一版本的 “故障转移 “功能相对应。

WSFC监控服务器之间的网络和磁盘I/O,当检测到故障时,服务被重新启动或实例被切换(故障转移)。

AlwaysOn AG 一个用于高可用性和灾难恢复的功能,相当于以前版本的镜像(mirroring)功能。自SQL Server2012提供的功能,允许多个SQL Server组(可用性组)虚拟成一个。只要其中一个组正常运作,业务将继续进行。

提供 “数据复制” 功能,在没有共享磁盘的情况下可创建集群。这相当于以前版本中的 “Mirroring”。

数据复制可以是同步的,以提高同一数据中心内的可用性(HA),也可以是异步的,以提供一个远程灾难环境(DR)。

AlwaysOn FCI

AlwaysOn AG

AG和FCI的区别

应该选择哪个方案,哪个方案能更好的解决问题,取决于实际应用环境的条件,例如网络延迟,磁盘容量等因素。

项目 Always on FCI AlwaysOn AG
WSFC 运行在WSFC(WindowsServerFailoverCluster)上,每个节点必须属于同一个WSFC。 运行在WSFC,从SQL Server 2016开始,可在不同的WSFC上设置 “可用性组”。
数据损失 无(共享磁盘) 无(同步提交模式时)
自动故障转移 是(自动故障转移模式)
对客户端是否透明 是,自动重连接到相同IP的另一个结点
停机时间 约等于SQL Server服务重启的时间 + 数据库恢复时间 约等于数据库恢复时间
保护级别 实例级
因数据库文件是共享,切换在实例级别发生。
数据库级(AG单位发生FailOver)
与FCI相比,更小的保护单位。之前的Mirroring需要对实例中的每一个数据库进行配置,而在AG允许可用性组中进行分组,也可将所有数据库放到一个组中(与Mirroring相比简化了配置)。
数据文件 共享 每个节点独立维护
Secondary状态 Standby Active/Standby
备用数据副本可读
数据恢复模式 无限制 完全模式(FullMode)
Standard版限制 仅限2个节点 SQLServer2016开始提供Basic Availability Group(基本可用性组),既可用性组的限制版。

✓仅限2个节点(Primary/Secondary)
✓可用性组仅可包含一个数据库
(一个组不允许包含多数据库,即组:数据库=1:1。然而可创建多个仅包含一个数据库的组。

系统数据库 同步(共享磁盘) 系统数据库是非同步对象
优势 与 “AlwaysOn AG”相比
1. 不需要指定恢复模式
(AlwaysOn AG需要 “完整模式”)
2. 存储空间消耗较少(因使用共享磁盘)
3. 易于排除故障(非分布式架构)
与 “AlwaysOn FCI” 相比
1. 更小的保护单位(数据库级别)
2. 支持磁盘故障(可使用磁盘冗余)
3. 可用于灾备方案(使用mirroring功能,异步同步至远程服务器)

缺点是,mirroring需要高性能网络和低延迟。

AlwaysOn AG(可用性组)的相关功能

SQLServer2016开始,作为AlwaysOn AG(可用性组)的相关功能,可使用 “AlwaysOn BAG(基本可用性组)” 和 “AlwaysOn DAG(分布式可用性组)”。

特别是 “AlwaysOn BAG(基本可用性组)” 可在Standard版中使用,也可有限地使用Enterprise版的 “AlwaysOn AG(可用性组)” 。

名称 说明
AlwaysOn BAG(Basic Availability Group) 在SQLServer 2016标准版中引入的一项功能,允许有限地使用Enterprise版的 “AlwaysOn AG”,相当于以前版本中的 “Mirroring” 功能。

复制的数量被限制在2个(Primary和Secondary)
Secondary无法读取
Secondary无法备份
可用性组中仅包含一个数据库(组:数据库=1:1)。

AlwaysOn DAG(Distributed Availability Group) 该功能在SQLServer 2016中引入,允许设置一个特殊的AG(可用性组),可跨越两个独立的可用性组(换句话说,一个可用性组,可绑定可用性组)。

将生产环境和灾备环境放在不同的WSFC/可用性组中,并将它们合并为一个 “分布式可用性组”,可以将生产环境和灾备环境从网络中分离出来,减少灾备环境影响生产环境性能的风险。

AlwaysOn DAG