MS SQL 服务器群集是否能够在节点之间执行无缝故障转移?也就是说,客户端不会注意到任何变化,除了转换期间的短暂延迟。
答案1
我知道实现此目的的唯一方法是使用 hyper-v 并使用“实时迁移”。这允许虚拟机从一个物理节点转换到另一个物理节点的“状态”故障转移。您需要将其与 HA 选项结合使用,因为当您需要修补虚拟机的操作系统时,您仍然会遇到停机时间。数据库镜像可能是一个很好的选择,但这在故障转移中并不是 100% 透明的。
答案2
AlwaysOn(在 SQL 2012 及更高版本中可用)提供三服务器配置(主服务器、辅助服务器、侦听器)。与 SQL Server Native Client 11.0(SNAC 11.0)一起使用时,它允许客户端应用程序在故障转移后自动透明地重新连接到可用性组。配置比以前简单得多,包括集群、动态路由规则等。
正如 Paul Randal 所解释的那样,恢复可能不是即时的。但是,在故障转移期间处于空闲状态的客户端理论上不会注意到任何事情,但下一个查询会延迟。
答案3
高可用性镜像,即设置 3 个服务器,包括主服务器、镜像服务器和见证服务器,大多数情况下可以实现非常快速的故障转移,但是,正如 Paul Randal 最近在博客中所说,情况并非如此。请参阅此帖子(链接如下)和(无法发布另一篇,没有足够的回复)。没有绝对 100% 的无缝故障转移,但在 SQL Server 级别,镜像是您的最佳选择,因为它只会使正在进行的事务失败,并且客户端会自动连接到另一个节点。正如 Nick 所说,在虚拟机上运行并使用实时迁移可能是实现 HA 的最佳选择,但在更改环境配置(例如更改操作系统)方面没有太大的灵活性。