我从先前的一个问题中可以看到,日志文件备份可以与完整数据文件备份或差异数据文件备份同时执行。
想象一下,完整备份在与任何其他备份不重叠的时间窗口中运行。但是,差异备份和日志备份可能重叠。
例如,如果在给定的一天上午11点产生差异备份,但在同一天上午11点也生成日志文件备份,那么如何决定还原哪些文件?
例如:
还原完整备份后,是否还原第二个差异备份和最后一个日志备份?或者还原第一次备份和所有日志备份(尽管10 as日志备份实际上与11 as备份有相同的问题--在每种情况下都与差异备份相吻合)。
我可以在这里看到另一个问题,其中一些答案建议第三方脚本来恢复备份文件头,以确定序列号--我们真的需要诉诸报头还原来确定哪些文件可以按顺序恢复吗?
编辑(19/12/18):我认为我最初的问题措辞很糟糕,所以它收到的答案是多种多样的。我想要理解的关键部分实际上是乔纳森在对Sean的回答的评论中提到的,曾傑瑞也提到了--如果日志文件包含有关差异备份恢复已经记录的数据更改的信息,恢复序列将处理这个场景。(对不起,我没说好这个问题!)肖恩的回答给出了很多额外的信息,这也有助于理解恢复序列,所以我不能在这里选择一个单独的答案,但我将支持所有有助于澄清的事情。谢谢。
发布于 2018-12-10 04:08:58
还原完整备份后,是否还原第二个差异备份和最后一个日志备份?
这将取决于,但前提是:
然后,您需要还原1:00 AM完全备份,然后恢复11:00 AM差异,并且根据差异和日志备份所占用的时间,在11:00 AM日志备份中很可能会有一些附加信息。
或者还原第一次备份和所有日志备份(尽管10 as日志备份实际上与11 as备份有相同的问题--在每种情况下都与差异备份相吻合)。
我不知道10:00 AM日志备份与11:00 AM日志备份有“相同问题”是什么意思。根本不存在任何问题。
差异备份的全部目的是应用更改的区段,然后只保留足够的事务信息,以使所有事务保持一致。这与日志备份有很大不同,日志备份是实际的日志记录。它们提供两种不同的功能,如果您处于完整恢复模型中,则在恢复到最近的时间点时不需要差异备份,但是您确实需要日志备份。
…我们真的需要诉诸报头还原来确定哪些文件可以按顺序恢复吗?
在以下情况下,不必“诉诸报头还原”:
但是,如果所有这些(不完整,只是例子)都不是这样的话.是的,你需要一些方法来弄清楚哪些文件是按顺序排列的。因为最简单的解决方法就是问备份它包含什么元数据,这就是大多数人所做的事情。
发布于 2018-12-10 08:37:42
我会先按下面的顺序恢复,希望上午11点备份没有收到灾难。
01:00 AM = full backup
11:00 AM = differential backup如果DIFF备份实际花费的时间超过5分钟,并且包含了灾难(或意外删除),那么您可以先恢复日志备份,直到上午10:45,然后尝试11点,看看它是否也错过了灾难。
01:00 AM = full backup
10:00 AM = differential backup
10:00 AM = log backup
10:15 AM = log backup
10:30 AM = log backup
10:45 AM = log backup
11:00 AM = log backup (optional)我不担心恢复重叠的DIFF/LOG,因为SQL将知道从哪个LSN恢复,所以
10am DIFF + 10:15 LOG will work and continues
or it'll want 10am DIFF + 10am LOG + 10:15am LOG and continues发布于 2018-12-12 09:21:40
RESTORE DATABASE DB_Name FROM DISK = ‘full_01_00.bak’ WITH NORECOVERY, RELPACE
RESTORE DATABASE DB_Name FROM DISK = ‘diff_11_00.bak’ WITH NORECOVERYRESTORE LOG DB_Name FROM DISK = 'log_10_45.bak' WITH NORECOVERY
RESTORE LOG DB_Name FROM DISK = 'log_11_00.bak' WITH STOPAT = 'Dec 12, 2018 11:00 AM', RECOVERYhttps://dba.stackexchange.com/questions/224525
复制相似问题