我们有一个跨两个数据中心设置的 4 节点 AG,使用 4 个副本和一个文件共享见证。节点 1 和 2 在数据中心 1 中,节点 3 和 4 在数据中心 2 中。节点 1 是主节点,设置为同步提交并自动故障转移到同一数据中心中的节点 2。节点 1 设置为异步提交到数据中心 2 中的节点 3 和 4。节点权重设置为节点 1 和 3(每个数据中心的主节点)为 1,节点 2 和 4 为零。
拜托,有人能告诉我如果我们在节点 1 意外关闭了 SQL Server 会发生什么行为吗?
由于节点权重,AG 是否会尝试故障转移到数据中心 2 中的节点 3,并且不会尝试故障转移到任何其他副本。还是 AG 组会因为异步而忽略节点 3,并尝试根据首选所有者列表通过自动故障转移来故障转移到第一个同步副本?
原题目描述的配置有点奇怪。存在两个资源组 SYSTEM (CNO, CNO_VIP1, CNO_VIP2, FSW ) 和 AG (LISTENER, LISTENER_VIP1, LISTENER_VIP2, AG)。
这两个资源组可以由不同的 WSFC 节点拥有。例如, SYSTEM由来自 DC 2的节点拥有,而AG由来自 DC 1的节点拥有。在这种情况下,如果 DC1 和 DC2 之间的链路断开:
根据法定人数配置,DC 2部分将存活(由于多数票),而 DC 1将死亡(由于少数票)。但是只要 DC1 和 DC2 之间的同步是异步的,就不会自动故障转移到 DC2。
因此,您最终会遇到 DC2 处于活动状态但无法处理 DB 工作负载的情况,因为 AG 将等待人工干预(allow_data_loss)。
为避免这种情况,您需要这样分配选票
DC1:
节点 1:1
节点 2:1
异步同步
DC2
节点 3:0
节点 4:0
在该配置中,AG 将故障转移到 NODE2 (DC1)。
你最好解释一下DC2的用途。它是灾难恢复 DC 还是您需要它来实现读取规模或两者兼而有之?
故障转移将发生,并且故障转移将根据节点添加到可用性组并配置为自动故障转移的顺序进行。如下所示(所有图片均取自此 MSDN 博客
这是 SQL Server 2016,您可以选择设置 3 个具有自动故障转移功能的副本。现在用户添加了副本,使得节点 2 和节点 3 一个接一个地添加。现在,在这种情况下,如果节点 1 出现故障,它将故障转移到节点 2。确切的故障转移顺序可以从 WSFC GUI 中看到。对于这个 AG,它会像下面这样
这告诉您自动故障转移的顺序。如果节点 1 出现故障,它会自动故障转移到节点 2,如果节点 2 出现故障,它会自动故障转移到节点 3,前提是 WSFC 已启动并且故障转移正确。
节点权重不会出现在这里。我不知道您是如何配置 AG 的,所以请继续查看集群 GUI,您可以看到故障转移的顺序。
由于我们讨论了节点权重,我建议您将 DR 副本的节点权重保持为 0,这将使集群中的投票数为奇数。DC 的 2 个节点和 1 个 FS 见证。你不希望 DR 参与投票,因为投票在很远的地方而且几乎没有任何想法