San*_*raV 3 sql-server mirroring sql-server-2008-r2
许多数据库在没有见证人的情况下以高安全模式镜像。我试图了解在主服务器保持正常运行且所有其他镜像数据库处于正常同步状态时数据库(或多个数据库)遇到假故障的情况下可能会发生什么。
假故障 DB 的镜像状态是否会变为 DISCONNECTED,但是,因为服务器没有发生故障,主数据库上的 DB 仍然能够接受连接并执行事务,尽管它会在不受保护的情况下运行?或者,主数据库上的数据库是否会断开连接且不可用?而且,这将是什么恢复?它最有可能是一个简单的 ALTER DATABASE SET PARTNER RESUME 吗?
以前,我们将这些 DB 置于具有见证(自动故障转移)的高安全模式下,并将超时时间增加到 20 秒以消除假故障,这在一年半的时间里运行良好。但是,本周,由于未知原因,我们进行了一次数据库故障转移。我已将超时时间增加到 30 秒,但我们也在考虑删除见证,因为无论如何在故障转移的情况下应用程序都需要手动干预,因此我们也可以手动进行数据库故障转移。我可以处理计划好的故障转移,但我对我描述的情况不太满意。
好的,所以这是高安全性的,没有没有见证的自动故障转移。
这是官方书籍在线答案:
如果镜像服务器实例出现故障,主体服务器实例不受影响并公开运行(即不镜像数据)。”来源
在我的经历中,我看到这是真的。换句话说,断开连接,但可用于读取和写入。事务日志会一直增长,直到情况得到解决,因为它需要保留信息,以便在返回时发送给镜像。
注意:我绝对建议您在进行任何更改之前为自己设置一个测试环境。不要只相信我的话。您想要一个能够进行更改的地方,并且需要在上线之前测试自己会发生什么。
编辑:至于镜像恢复时会发生什么,根据我的经验,它通常会自动恢复,但我知道它没有的情况,并且必须运行 TSQL 才能使其恢复。在演示环境中很容易模拟,让自己适应它。