我目前正在计划一个带有 HA/DR 的新 SQL Server 2019 Enterprise Edition 设置,可能带有可用性组。
假设我们有以下设置:
- 站点 A:一个 SQL Server 实例 (SQL1)
- 站点 B:一个 SQL Server 实例 (SQL2)
- 站点 C:Windows 故障转移群集的文件共享见证
- 可用性组:AG1(SQL1 为主,SQL2 为辅助)、AG2(SQL2 为主,SQL1 为辅助)
如果站点 A 和站点 B 之间的网络连接丢失,但两个站点仍然能够访问文件共享见证,可用性组将如何反应?
- SQL1 会保留 AG1 和 SQL2 的主副本,还是 AG2 的主副本?
- 一台服务器会停机,而另一台服务器会成为所有可用性组的主要副本吗?
- 如果只有一台服务器保持在线,那么哪一台获胜?当前拥有集群核心资源组的人?
- 另一种情况?
到目前为止,我发现的所有文章都只讨论了一台服务器作为所有可用性组的主要副本。不幸的是,我还没有可用的基础设施来自己测试它。
有没有人有这种情况的经验?
谢谢
这取决于集群的设置。由于大多数人不会使用高级设置设置集群(这通常是一件好事,因为它很容易做错并且真的搞砸了)我将假设安装和设置香草集群。
鉴于上述假设,取决于站点与见证人之间的延迟,并假设与文件共享的通信从任何一个站点都没有问题,那么保持正常运行的站点通常大部分时间是拥有核心集群的站点资源组。这是由于集群中的见证退避设置,因为拥有核心资源的分区在尝试仲裁之前不必等待延迟的退避计时器。
无论哪一方达到法定人数(取决于其他各种项目,哪一方可能是任何一方[或者如果事情进展非常非常糟糕,则没有一方])将是所有集群组移动到的一方,他们是否能够出现是另一回事。
顺便说一句,因为您的问题与此无关,但我必须指出,这不是一个好主意。根据负载的不同,可能会出现从各个地方蔓延的性能问题。如果有足够的可用硬件可以在同一个节点上作为主要硬件,那么这样做可能会奏效。如果没有足够的可用硬件使两者都可以在同一节点上作为主要硬件,那么这将是一场等待点火的巨大灾难。