差异备份后的SQL事务日志传送

时间:2017-07-06 05:52:38

标签: sql-server transaction-log disaster-recovery log-shipping

我正面临一个场景:

  1. 创建生产数据库的完整备份
  2. 完整备份将恢复到DR数据库
  3. 创建了生产数据库的差异备份,但是意外删除了
  4. 在生产数据库上启动事务日志备份
  5. 问题是,第一个生成的事务日志是否能够恢复到DR数据库中,或者删除的差异数据库备份是否必须首先恢复到DR数据库?

2 个答案:

答案 0 :(得分:1)

简短的回答是否定的,您需要/差异备份或新的完整备份。因此,要么采用新的完整备份来重新启动备份链,要么使用新的差异备份来替换丢失/删除的备份链。

简化后,事务日志备份将维护自上次备份以来对数据库所做更改的时间顺序列表(任何备份;完整备份,差异备份或其他事务日志备份)。差异备份将保存自上次完全备份以来更改的所有扩展区的列表(因此包括同时已备份的任何事务日志备份)。这也意味着,如果您创建完整备份,然后是差异备份,然后是差异备份,则第二个差异备份包含第一个包含的所有内容。

典型情况是进行完整备份,然后进行一些事务日志备份。然后,下一步是差异备份,可能还需要更多事务日志备份和差异备份,直到创建新的完整备份。

通过确保在发生灾难时,您可以备份事务日志的尾部,从而确保减少恢复时间。然后,您可以还原完整备份,然后是最新的差异备份,然后是任何事务日志备份(按时间顺序)。

答案 1 :(得分:1)

[1]如果DIFF备份已删除,则我会创建另一个DIFF备份。只要不更改差异基础(通过创建另一个FULL备份NON COPY_ONLY;请参阅msdb.dbo.backupset),这应该没问题。

[2]在DIFF备份后,日志传送不需要应用/恢复FULL备份。恢复FULL后应足以启动/重新启动日志传送:启动所有三个作业:LS_?_BackupLS_?_CopyLS_?_Restore。此外,我会检查是否有一个维护计划将采取日志备份 - 这应该被禁用(它可以,因为现在LS将负责日志备份)。

[3] FULL还原后,如果备份链未被破坏,则可以应用{strong> (没有任何{{ 1}}已申请):

  • 这意味着在LOG备份和DIFF备份之间有其他FULL备份(LOG)以及< / p>

  • 我们在FULL备份和当前NON COPY_ONLY备份之间进行了所有LOG次备份。

示例:这将创建以下备份:FULL然后它将使用以下序列进行恢复:LOG。在示例的最后,您将看到F D1 L1 L2包含所有行。

F L1 L2