我们目前设置了两个具有 AlwaysOn 高可用性的节点 A 和 B。重新启动节点 A 时,我们可以使用侦听器名称“xyz”连接到我们的 SQL Server 实例。在这种情况下,B 将转为主要,而 A 将转为次要。一切都是透明的,连接到“xyz”工作正常。
现在我尝试通过关闭主节点上的 SQL Server 服务来测试该场景,而不是重新启动整个节点。(旁注:因此,SQL Server 代理也会停止)
这样做时,我无法通过管理工作室连接到“xyz”(侦听器名称)。我只能直接连接到“B”。当尝试进行自动故障转移时,我会得到以下信息:
这是正常的吗?是否通过简单地检查节点的状态而不是该节点的 SQL 服务来进行故障转移?
深入研究 MS 的文档帮助我们发现了灵活的自动故障转移策略(https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/flexible-automatic-failover-policy-可用性组)
可以使用一个设置来调整应该启动故障转移的场景。默认设置为 3。
更改可用性组 AG1 设置(FAILURE_CONDITION_LEVEL = 5);
使我们能够满足更多场景,包括手动关闭服务。级别 5 封装了较低级别值的场景/条件。