只有两台服务器的 SQL Server 上的自动故障转移支持

Isa*_*aac 0 sql-server mirroring failover high-availability availability-groups

我们有两台服务器,每台服务器都被专用存储占用。我正在寻找一种方法来设置这两个服务器以在 MS SQL Server 上提供具有自动故障转移支持的数据库。

当只有两台服务器可用时,使用数据库镜像似乎对自动故障转移无效。

有关原因的更多信息:对于自动故障转移,数据库镜像需要称为见证的第三个元素来协调两个数据库实例之间的主体/镜像角色,并在故障转移期间协助切换。但是,我只有两台服务器可用,因此我不得不在其中一台服务器上安装见证,这些服务器可以是主(主体)或辅助(镜像)数据库实例。因此,当主体 DB 和见证服务器都运行的服务器上发生硬件故障时,镜像 DB 无法联机并且不会发生自动故障转移。

SQL Server 的一项名为Always On 可用性组的最新功能似乎提供了类似的镜像功能以及更多功能。是否可以使用只有两台服务器的Always On 可用性组来实现自动故障转移

对于两台服务器的自动故障转移支持,尤其是针对电源故障的支持,您还有其他建议吗?

Bre*_*zar 6

对于自动故障转移,您需要一个决胜局。

否则,当两台服务器出现网络分裂并且无法看到对方时会发生什么?您不希望他们都自动将自己提升为主要,并且都接受写入。想一想在具有标识字段的表上会发生什么,例如:两个服务器可能很快就会得到具有相同标识字段的两条不同记录。

这称为裂脑情形,您总是希望 SQL Server 在发生这种情况时失败进入不可用状态。

为了打破僵局,数据库镜像可以使用见证服务器,但它可以是完全免费的 SQL Server Express Edition。

Always On Availability Groups 与镜像的不同之处在于它构建在 Windows 集群之上,这意味着它依赖于仲裁投票来实现决胜局。通常,您需要第三个 Windows 服务器,但好消息是:它不必安装 SQL Server。您可以使用文件共享作为仲裁见证,甚至云见证

你甚至可以从你的一台服务器上移除法定人数投票——但如果那台服务器宕机,你的整个集群就会宕机。