我有一个场景,我想要创建一个 SQL Server 分布式可用性组 (DAG),该组跨越驻留在同一组 SQL Server 实例上的两个现有可用性组 (AG)。这是设置:
- 我有一个名为“ag1”的可用性组,有两个副本:“instance1”和“instance2”。
- 我还有另一个名为“ag2”的可用性组,具有相同的两个副本:“instance1”和“instance2”。
我的目标是创建一个名为“distag1”的分布式可用性组,其中包含“ag1”和“ag2”。我按照文档操作并尝试在全局主节点(“ag1”的主副本)上创建“distag1”。就创建成功了。但是,当我尝试加入“distag1”(ag2的侦听器指向的实例)的另一端时,遇到以下错误:
ALTER AVAILABILITY GROUP distag1
JOIN AVAILABILITY GROUP ON
N'ag1' WITH (
LISTENER_URL = N'TCP://ag1lsnr:5022',
FAILOVER_MODE = MANUAL,
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
SEEDING_MODE = MANUAL
),
N'ag2' WITH (
LISTENER_URL = N'TCP://ag2lsnr:5022',
FAILOVER_MODE = MANUAL,
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
SEEDING_MODE = MANUAL
);
Msg 19509, Level 16, State 0, Line 38
Cannot create a distributed availability group 'distag1'. An availability group with the same name already exists.
我的问题是:
- 是否支持跨驻留在同一组 SQL Server 实例上的两个可用性组创建分布式可用性组?
- 如果支持,是什么原因导致我遇到的错误消息?在这种情况下创建 DAG 时是否需要考虑任何特定要求或注意事项?
我将非常感谢有关此事的任何见解、澄清或指导。预先感谢您的帮助!
不它不是。分布式可用性组的目的是将可用性组的使用扩展到超过副本限制并跨脱节的可用性组空间(例如,跨 Windows Server 2016 群集和 Windows Server 2022 群集,这通常是不可能的)。
尝试创建分布式 AG 应该会导致您收到的错误,因为它将尝试在所有副本上创建分布式 AG 两次(因为它们既是源又是目标),这将失败,因为已经存在分布式可用性团体。