一、 分布式可用性组简介
分布式可用性组(Distributed Availability Group)是 SQL Server 2016 中的新功能,它可跨两个单独的可用性组。
两个可用性组无需处于同一位置:它们可以跨物理机、虚拟机;跨内网、云上;跨有域、无域;甚至跨平台(如Linux、Windows)。只要两个可用性组可以进行通信,就可以使用它们配置分布式可用性组。
1. 主要用途
- 灾难恢复和更轻松的多站点配置
- 更复杂的数据库迁移场景:跨云、跨域、跨操作系统
- 通过跨多个可用性组,将单个可用性组中的可读副本增加到8个以上
2. 特性简介
- 也有同步和异步提交模式。
- 元数据都保存在SQL Server 中,不会在WSFC中显示相关内容,甚至SMSS中都不会显示DAG的数据库,只能通过sql查询信息(参考下一篇)。
- 尽管基础可用性组也具有主副本,但只有主可用性组的主副本可写。如下图,AG 1为主可用性组,其主副本将事务发送到 AG 1 的从副本和 AG 2的主副本,AG 2的主副本只能从AG 1的主副本接收事务,并发送到自己的从副本进行应用。
- 使用分布式可用性组搭建事务复制时,从AG主副本(即AG 2的主副本)无法配置为发布服务器。
- 分布式可用性组仅支持强制故障转移(使用FORCE_FAILOVER_ALLOW_DATA_LOSS选项)
- 当前分布式可用性组限定只能连接两个AG,但通过搭建多个分布式可用性组(可以级联、可以一带多),原理上可以无限扩展。下图3个可用性组中至多可以具有27个副本,这些副本可用于只读查询。
二、用前须知
1. SQL Server版本要求
- 2017或更高版本中的分布式可用性组中可以混合不同主版本的SQL Server,从AG版本可以高于主AG版本(跟传统AG一样)。此方案面向升级和迁移,例如主AG是2016,希望升级/迁移到2017或更高版本。
- 2012及2014版本中不存在分布式可用性组功能,不能加入分布式可用性组。
- 仅企业版支持,Standard Edition 不能配置分布式可用性组。
2. windows版本要求
分布式可用性组仅对SQL Server版本有要求,各可用性组的Windows Server版本可以不同。
单个WSFC及其相应的可用性组遵循传统规则。它们可以加入域,也可以不加入(Windows 2016及以上)。
在单个分布式可用性组中的两个不同可用性组存在以下四种情况:
- 两个 WSFC 加入同一域
- 每个 WSFC 加入不同域
- 一个 WSFC 加入域,一个不加入域
- 两个 WSFC 都不加入域
如果加入同一域,创建分布式可用性组时无需任何特殊操作。如果未加入同一域,需通过证书启用分布式可用性组,方法类似启用域独立可用性组。
3. 分布式可用性组的基础AG要求
- 分布式可用性组没有listener。客户端连接时只能连到基础可用性组的listener或服务器名,因此在failover后应用需要修改连接串(网络层有另外配置除外)
- 每个基础可用性组必须都有listener。创建分布式可用性组时,通过ENDPOINT_URL 参数为其指定已配置的listener,而不是像传统可用性组指定服务器名。
- Endpoint listeners 需要监听所有服务器IP地址。在创建endpoints 时必须指定LISTENER_IP = ALL参数,否则主从AG间会无法同步。
4. 补丁安装方法
因为存在两个单独的可用性组,因此安装SP或CU的过程与传统可用性组略有不同:
- 先给从AG副本打补丁
- 再给主AG中的辅助副本打补丁
- 将主AG故障转移到它自己的辅助副本,然后给它安装补丁。如果主AG没有辅助副本,则需要手动故障转移到从AG。
5. 其他
DAG不是分布式可用性组的官方缩写,而是微软Exchange Database Availability Group特性(该特性跟分布式可用性组没啥关系)的缩写,但确实也有人这么用。
参考
标签:副本,AG,可用性,sqlserver,Server,版本,分布式 From: https://blog.51cto.com/u_13631369/6203178