sqlserver 分布式可用性组(一)—— 概要

一、 分布式可用性组简介

分布式可用性组(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 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特性(该特性跟分布式可用性组没啥关系)的缩写,但确实也有人这么用。

 

参考

https://docs.microsoft.com/zh-cn/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-ver15

https://www.mssqltips.com/sqlservertip/5053/setup-and-implement-sql-server-2016-always-on-distributed-availability-groups/

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-distributed-availability-groups?view=sql-server-2016

https://blog.csdn.net/Hehuyi_In/article/details/104868576

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hehuyi_In

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值