我在SQL Server中央线程中看到了完整备份会截断日志吗?完全备份不会截断日志:
那么完全备份和仅复制完全备份有什么区别?
对于日志备份,有仅复制备份,可以防止在不截断日志的情况下破坏日志链。那么什么是仅复制完整备份?
我在SQL Server中央线程中看到了完整备份会截断日志吗?完全备份不会截断日志:
那么完全备份和仅复制完全备份有什么区别?
对于日志备份,有仅复制备份,可以防止在不截断日志的情况下破坏日志链。那么什么是仅复制完整备份?
Answers:
至少您需要考虑差异备份。除非使用完全复制,否则您的下一个差异备份将关闭。仅复制备份:
仅复制完整备份(所有恢复模型)仅复制备份不能用作差异基础或差异备份,并且不会影响差异基础。
完整副本和完整副本之间的唯一区别是,完整副本不会破坏差异链。它们都没有中断日志链,因为它们都没有截断日志文件。
完全备份和仅复制备份之间的主要区别在于LSN(日志序列号),尤其DatabaseBackupLSN
是LSN是否已更新。
进行完全备份时, DatabaseBackupLSN
更新。进行完整备份后,如果进行差异备份,则备份具有DatabaseBackupLSN
与完全备份相匹配的备份,因此SQL可以将两者链接在一起(例如,从那些LSN知道差异遵循完整备份)。
当您计划运行备份时出现问题,因此您有一个初始的完整备份,然后是一系列的差异备份。如果您手动进行完全备份,它将更新LSN,从那时起,您通过计划备份进行的每个差异备份将引用新的LSN,而不是原始的LSN。如果需要还原,您可以还原计划的完整备份,但是当您尝试还原在手动作业后进行的任何差异备份时,您会发现它会失败,因为LSN不再匹配。
对于仅复制备份,它不会碰到DatabaseBackupLSN
,因此不会破坏该备份链。
关于这个问题有一个很好的描述,以及为什么这么多人在Michael K. Campbell的《打破备份链– REDUX(或吃乌鸦)》中误解了它,其中包括像这样的出色视觉指南:
要对四种不同的LSN及其用法进行很好的解释,请参阅Simon Liew的《了解备份的SQL Server日志序列号》。
避免此问题的方法是,对数据库进行标准备份时,不要只有一件以上的事情。任何临时备份或辅助备份都应使用仅复制选项完成,有关完整详细信息,请参见仅复制备份(SQL Server),但实际上,您可以通过WITH COPY_ONLY
在命令中指定的T-SQL在SSMS中使用“仅复制备份”选项。,或与PowerShell一起使用-CopyOnly
参数。
假设我们有一个包含计划备份的数据库。完整备份每24小时在00:00运行一次,此外,我们还有每6小时运行一次的差异备份和每小时运行一次的事务日志备份。因此,如果我们需要在一天中进行一次额外的完整备份以还原另一台服务器怎么办?在这种情况下我们该怎么办。当然,我们可以进行完整备份。
BACKUP DATABASE Test TO DISK = 'C:/Test.bak'
但是,当您对数据库进行备份时,会有一些更改会影响以下备份的还原方式(差异备份和事务日志备份均会影响还原操作的方式)。在这种情况下,所有随后的差异备份将依赖于上次完整备份。如果上次完全备份丢失,则无法进行数据库还原。
但是我们如何进行备份,而不会影响该数据库的以下备份或还原过程。这是仅复制备份所在的位置。
BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY
当您具有完整备份和一组日志文件备份时,将使用LSN(日志序列号)维护日志链。如果要在不中断日志链的情况下进行备份,请执行仅复制备份。
如果您不执行仅复制备份,则日志链将断开,您执行的备份将是最新的完整备份。这意味着先前的日志备份无法应用于新近采用的完整备份。日志链的维护主要是针对时间点恢复或日志传送方案。
例如:假设您有一个备份方案,该方案每6小时(午夜,上午6点,中午,下午6点)进行一次完整备份,并每15分钟进行一次日志备份。要求在上午9点收到,要求将您的数据库副本放置在测试服务器上。您希望在不中断日志链或不中断备份作业的情况下进行备份。这是仅复制备份的时间。仅复制备份不会破坏常规备份集。