Sql server SQL Server故障转移群集数据库访问层的最佳做法是什么?

Sql server SQL Server故障转移群集数据库访问层的最佳做法是什么?,sql-server,failover,failovercluster,Sql Server,Failover,Failovercluster,原则上,SQL Server故障转移群集表现为一个虚拟机,应用程序可以连接到该虚拟机,而忽略SQL Server实际上是一个服务器群集的事实,因此,原则上,应用程序的数据库访问层中不需要额外的逻辑 我的问题是上述情况是否属实,以及在使用故障转移群集时,是否对DB访问层的操作方式进行了最佳实践修改。例如,当发生故障转移时,可能会出现延迟,导致DB访问层出现超时错误,我们正在考虑在该层中放置逻辑,以便在发生超时时重新尝试[某些]DB调用(我们已经有了针对DB死锁的重试逻辑)。这为防止影响应用程序的错

原则上,SQL Server故障转移群集表现为一个虚拟机,应用程序可以连接到该虚拟机,而忽略SQL Server实际上是一个服务器群集的事实,因此,原则上,应用程序的数据库访问层中不需要额外的逻辑

我的问题是上述情况是否属实,以及在使用故障转移群集时,是否对DB访问层的操作方式进行了最佳实践修改。例如,当发生故障转移时,可能会出现延迟,导致DB访问层出现超时错误,我们正在考虑在该层中放置逻辑,以便在发生超时时重新尝试[某些]DB调用(我们已经有了针对DB死锁的重试逻辑)。这为防止影响应用程序的错误提供了另一个级别的保护

如果发生故障切换并导致更高的应用程序级别在服务调用时收到超时错误,则这不是无缝切换。我们是否应该简单地将超时设置为允许故障切换的持续时间

谢谢

原则上,SQL Server故障转移群集将自己呈现为一个虚拟机 应用程序可以连接到服务器,而不必考虑SQL Server 实际上是一个服务器集群

啊??真正地这与文件相矛盾。集群基本上只是一个移动的IP地址,在不同的服务器上安装了不同的设备,而不是一个虚拟机

原则上,在数据库的数据库访问层中不需要额外的逻辑 应用程序

是和否-显然,失败的节点会终止所有正在进行的事务和连接,因此客户端必须能够对此做出反应并重试。如果由于连接中断而导致客户端崩溃,并且不重试,则在一两秒钟后再次访问服务器对您没有帮助

我们是否应该简单地将超时设置为允许故障切换的持续时间

否,由于正在进行的事务状态丢失,故障转移会断开连接。您需要重新建立连接,然后再次启动事务中发出的所有Sql命令


请注意,从安全角度来看,群集是不好的,您应该使用镜像—您有一个特定的风险,即发生故障的群集节点会使数据库文件损坏,在这种情况下,故障转移会失败。镜像功能更强大。

我认为dba.stackexchange.com是解决这个问题的好地方。虽然实际上这个问题是关于数据库访问层的,这通常是开发人员/程序员的责任,因此可以说这个问题属于这里。不,这就在这里。这是一个编程问题,而不是dba问题。“SQL Server故障转移群集实例在网络上显示为一台计算机,但具有在一个节点不可用时提供从一个节点到另一个节点故障转移的功能。”--这与作为虚拟机仍然不一样。我可以让10台运行IIS的计算机通过NLB“作为一台出现在网络上”——它们不是虚拟机。所有这一切都表明他们使用相同的IP地址(在网络上显示),没有其他的。这是一个由多个不同的服务器(硬件或虚拟)提供的服务,实际上,我在更广泛的意义上使用了virtual这个词,在上下文中,virtual是一个已加载的词。