手动故障转移

手动故障转移断开客户端与数据库的连接,并反转伙伴的角色。仅高安全性模式支持手动故障转移。

注意注意

本主题假定您熟悉高安全性模式。有关详细信息,请参阅同步数据库镜像(高安全性模式)

升级期间维护可用性

数据库管理员可使用手动故障转移升级硬件或软件,同时不会牺牲可用性。若要使用数据库镜像进行软件升级,镜像服务器和/或系统必须已接收到升级程序。

注意注意

数据库镜像应该能够执行滚动升级,但是不能保证可执行此操作,因为将来的更改是未知的。有关详细信息,请参阅如何在升级服务器实例时最大限度地减少镜像数据库的停机时间

下图说明了升级数据库服务器实例时使用手动故障转移维护数据库可用性的实例。完成升级后,管理员可以选择重新向原始服务器实例执行故障转移。如果管理员希望停止镜像会话并在其他位置使用镜像服务器时,这很有用。这样,在更新一系列数据库服务器实例时,可以反复使用一个服务器实例。

计划的手动故障转移

手动故障转移所需条件

手动故障转移需要将事务安全设置为 FULL(即,高安全模式)。当伙伴连接在一起并且数据库已同步时,支持手动故障转移。

手动故障转移的原理

手动故障转移会启动下列一组操作:

  1. 主体服务器将断开客户端与主体数据库的连接,将日志尾部发送到镜像服务器,并且为了准备切换到镜像角色而将镜像状态设置为 SYNCHRONIZING。

  2. 镜像服务器将从主体数据库接收到的最后一个日志记录的日志序列号 (LSN) 记录为故障转移 LSN。

    注意注意

    若要查看此 LSN,请从 sys.database_mirroring (Transact-SQL) 中选择 mirroring_failover_lsn 列。

  3. 如果重做队列中有任何等待的日志,则镜像服务器将完成前滚镜像数据库的操作。所需时间取决于系统速度、最新工作负荷以及重做队列中的日志量。对于同步运行模式,可通过限制重做队列的大小调整故障转移时间。不过,这会导致主体服务器的速度下降,以便镜像服务器能够与其同步。

    注意注意

    若要了解重做队列的当前大小,请使用数据库镜像性能对象中的 Redo Queue 性能计数器(有关详细信息,请参阅监视数据库镜像)。

  4. 镜像服务器成为新的主体服务器,而以前的主体服务器成为新的镜像服务器。

  5. 新的主体服务器回滚所有未提交的事务并使其数据库副本作为主体数据库联机。

  6. 以前的主体角色成为镜像角色,以前的主体数据库成为镜像数据库。新的镜像服务器快速重新同步新的镜像数据库与新的主体数据库。

    注意注意

    新的镜像服务器重新同步数据库后,就可以再次执行故障转移,但按反向执行。

执行故障转移后,客户端必须重新连接到当前的主体数据库。有关详细信息,请参阅连接客户端与镜像数据库