SQL镜像故障转移期间数据的位置在哪里?

我刚刚设置了一个SQL镜像,但还有一件事我还没有设法解决。 如果我将DBA(主体)镜像到DBB(镜像),并且DBA脱机,它将自动切换到DBB。 但据我所知,DBB上发生的任何更新都不会出现在DBA上,因此,当DBA重新联机并重新变为活动状态时,所有在中断期间的更新都将丢失? 这是正确的还是我错过了什么?

谢谢! 保罗

在某些情况下,主服务器会发生什么情况,如果不重新build立镜像会话,将无法进行同步。 但是,如果您处于高安全模式并且有证人服务器设置,则DBA应该可以赶上DBB。

这在“如何自动故障转移工作”一节中的“angular色切换”部分的在线书籍中有更多解释,

  1. 如果主体服务器仍在运行,它会将主体数据库的状态更改为DISCONNECTED,并将所有客户机与主体数据库断开连接。

  2. 见证和镜像服务器注册主服务器不可用。

  3. 如果有任何日志在重做队列中等待,则镜像服务器完成向前滚动镜像数据库。

  4. 以前的镜像数据库作为新的主体数据库在线移动,并且恢复通过尽可能快地回滚来清除所有未提交的事务。 locking隔离这些交易。

  5. 当以前的主体服务器重新join会话时,它认为其故障转移伙伴现在拥有主要angular色。 以前的主服务器承担镜像的angular色,使其数据库成为镜像数据库。 新镜像服务器尽快将新镜像数据库与主体数据库同步。 只要新的镜像服务器重新同步数据库,故障转移也是可能的,但方向相反。

因此,在您的情况下,如果DBA重新联机,DBA最终应该赶上DBB,但需要多长时间取决于系统的速度,最近的工作负载以及重做队列中的日志量。

你错过了MS Programers没有总白痴。 当数据库pipe理员回来时,它知道它已经过时,并且不会回答,直到从数据库中取得数据为止。A没有“真正的”优先级,特别是没有可用的主体。 B会在那里,知道它有一个更新的授权。

如果A会继续回答,B上的数据会丢失,那么这个function就完全没用了。