0

在 sql server 2012 中设置镜像数据库的过程中,我不小心对原始数据库进行了 2 次备份。

在镜像服务器上恢复数据库后,数据库没有同步。

为了解决这个问题,我将恢复模式从“完整”更改为“简单”,然后再次更改为“完整”。然后再次备份数据库。在镜像服务器上恢复镜像过程时。

我的问题是,如果我对原始数据库进行多个完整备份,为什么同步会失败?

4

1 回答 1

0

这是因为日志链,镜像有点像将事务日志备份恢复到另一台服务器,但是要自动工作,您需要从完整备份到最后一次 t-log 备份的完整日志链,所以日志链看起来像这样(带有很好的顺序 LSN):

Full-1->LogA->LogB->LogC->Full-2->LogD->LogE->LogF 等...

因此在上面的示例中,如果您恢复了 Full-1 备份,您可以恢复日志备份 A、B、C,但不能恢复 D、E、F。如果您恢复 Full-2,您只能恢复那些。

在镜像中,您对数据库进行完整备份,然后将其还原,SQL 服务器然后查看日志序列号 (LSN) 并传输还原的镜像数据库中不存在的事务,如果您进行另一个完整备份,您打破顺序 LSN 链。

在您的情况下,就像您恢复 Full-1 然后尝试对其应用 Logs D、E、F 一样,序列号存在间隙。如果您刚刚重新恢复了第二次意外备份到镜像服务器然后开始镜像,它应该对您有用。通过更改恢复模式,您完全重置了日志链并且必须重新开始。

于 2013-07-03T13:49:33.197 回答