我有一个两节点 SQL 集群(2008 R2)。
该 SQL 实例中的一些数据库使用具有自动故障转移的高安全性镜像到远程站点上的另一台服务器。这些数据库的镜像连接超时值设置为 90 秒。
当我将 SQL 从集群中的一个节点移动到另一个节点时,使用故障转移集群管理器应用程序的“将此服务或应用程序移动到另一个节点”选项,被镜像的数据库会立即故障转移到镜像。
这是不受欢迎的行为。我设置镜像连接超时值的原因是,我只想在集群完全失败并且没有正常运行的节点时故障转移到数据库镜像。
有什么办法可以做到这一点?感觉好像它应该是可能的,否则混合集群和自动故障转移数据库镜像的概念将不可行,因为集群中的每个节点故障转移都会触发镜像故障转移。
谢谢。
防止镜像故障转移的一种方法是:
ALTER DATABASE XYZ SET PARTNER SUSPEND
ALTER DATABASE XYZ SET PARTNER RESUME
该实例正在故障转移到镜像,因为见证和辅助都无法再看到主实例。
听起来您正试图通过结合镜像和集群来重新创建 SQL Server 2012 可用性组。
数据库镜像只在所谓的“软”错误上超时。诸如集群故障转移之类的硬错误会立即报告给镜像会话,从而导致立即故障转移。在http://msdn.microsoft.com/en-us/library/ms190913.aspx阅读更多信息
硬错误的可能原因包括(但不限于)以下情况:
可能导致镜像超时的情况包括(但不限于)以下情况:
有关镜像和潜在问题的更多信息,您可能希望查看我的问题What can cause a mirroring session to timeout then failover? SQL 服务器 2005
发生这种情况是因为服务器正在响应但镜像端点已关闭。合作伙伴和见证人从操作系统获得响应,表明端点所在的端口已关闭并立即启动故障转移。超时适用于没有收到来自主机的响应,而不是“您正在寻找的端口不再侦听”响应。
要解决这个问题,您需要按照 Max 的建议暂停镜像会话,或者,如果您还担心计划外的集群故障转移,请按照 swasheck 的建议禁用自动故障转移,并在需要时手动故障转移镜像。