原则上,SQL Server故障转移群集本身就是一个虚拟机,应用程序无法连接到SQL Server实际上是服务器集群的事实,因此,原则上数据库访问层中不需要其他逻辑申请书。
我的问题是上述内容是否属实,以及在使用故障转移群集时是否对数据库访问层的运行方式进行了最佳实践修改。例如。据推测,当发生故障转移时,会有一个延迟,可能会导致数据库访问层出现超时错误,我们正在考虑在该层中放置逻辑,以便在发生超时时重新尝试[某些]数据库调用(我们已经有重试逻辑对于DB死锁)。这为影响应用程序的错误提供了另一层保护。
如果发生故障转移并导致较高的应用程序级别在服务调用上收到超时错误,那么这不是无缝切换。我们应该只在允许故障转移的持续时间内设置超时吗?
感谢。
答案 0 :(得分:1)
原则上,SQL Server故障转移群集将自身呈现为虚拟机 应用程序可以连接到忘记SQL Server的事实 实际上是一个服务器集群
阿?真?这与文档相矛盾。集群基本上只是一个移动的IP地址,在不同的服务器上安装不同,几乎不是虚拟机。
原则上,数据库访问层内不需要额外的逻辑 应用
是和否 - 显然,失败的节点会杀死所有正在进行的事务和连接,因此CLIENT必须能够对此做出反应并重试。如果客户端因为连接断开而崩溃并且没有重试,则无法帮助您在一两秒后再次访问该服务器。
我们应该只在允许故障转移的持续时间内设置超时吗?
不,由于正在进行的事务状态丢失,故障转移会中断连接。您需要重新建立连接,然后再次启动在事务中发出的所有Sql命令。
从安全点注意,群集很糟糕,您应该使用镜像 - 您有一个特定的风险,即失败的群集节点会导致数据库文件损坏,在这种情况下,故障转移失败。镜像更加强大。