在sql server 2012中设置镜像数据库期间,我意外地对原始数据库进行了2次备份。
在镜像服务器上还原数据库后,数据库未同步。
为了解决这个问题,我将恢复模式从“完整”更改为“简单”并再次返回“完全”。然后再次备份数据库。在镜像服务器上恢复镜像过程时。
我的问题是,如果我对原始数据库进行多次完整备份,为什么同步会失败?
答案 0 :(得分: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应用于它,序列号中存在间隙。如果您刚刚重新恢复了第二次意外备份,并将其带到镜像服务器然后开始镜像,它应该对您有用。通过更改恢复模型,您可以完全重置日志链,并且必须重新开始。