【问题标题】:sql server 2012 mirroring setup after multiple backups多次备份后的sql server 2012镜像设置
【发布时间】:2013-06-29 20:41:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sql-server-2012 database-backups database-restore database-mirroring


    【解决方案1】:

    这是因为日志链的原因,镜像有点像将事务日志备份恢复到另一台服务器,但是要自动工作,您需要从完整备份到最后一次 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 一样,序列号存在间隙。如果您刚刚重新恢复了第二次意外备份到镜像服务器然后开始镜像,那么它应该对您有用。通过更改恢复模式,您完全重置了日志链并且必须重新开始。

    【讨论】:

    • 谢谢。你能解释一下为什么镜像需要额外的日志备份吗? sql server不能只用原来的备份,从主库恢复丢失的信息吗?
    • 这是因为它通过将事务重播到镜像数据库中来工作,而不仅仅是从主数据库中获取数据。
    猜你喜欢
    • 2022-01-10
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2014-09-22
    • 2014-09-21
    • 1970-01-01
    相关资源
    最近更新 更多