完整备份和仅复制完整备份的区别

IT *_*her 25 sql-server backup sql-server-2008-r2 transaction-log

我在 SQL Server Central 线程中看到完整备份是否会截断日志?完整备份不会截断日志:

不会。完整备份或差异备份都不会截断事务日志。- Lynn Pettis
否 - 完整备份不会截断日志。-查德克劳馥

那么完整备份和仅复制完整备份有什么区别呢?

对于日志备份,只有复制备份可以防止日志链在不截断日志的情况下中断。那么什么是仅复制完整备份?

小智 37

完整备份和仅复制备份之间的主要区别在于 LSN(日志序列号),特别是DatabaseBackupLSN是否更新。

当您进行完整备份时,将DatabaseBackupLSN更新。在进行完整备份后,如果您进行差异备份,则该备份具有DatabaseBackupLSN与完整备份匹配的差异备份,因此 SQL 可以将两者链接在一起(例如,它从那些 LSN 知道差异跟随完整备份)。

当您运行计划备份时,问题就出现了,因此您有一个初始完整备份,然后是一系列差异。如果您手动进行完整备份,它将更新 LSN,然后从那时起,您通过计划备份进行的每个差异备份都将引用该新 LSN,而不是原始 LSN。如果需要恢复,您可以恢复计划的完整备份,但是当您尝试恢复手动作业后进行的任何差异备份时,您会发现它会失败,因为 LSN 不再匹配。

使用仅复制备份,它不会触及DatabaseBackupLSN,因此不会破坏该备份链。

在Michael K. Campbell 的Breaking the Backup Chain – REDUX (Or Eating Crow)包含所有图像的存档)中对这个问题有很好的描述,以及为什么这么多人误解它,其中包括像这样的良好视觉指南:

SQLmag 映像 - 完整备份 v Copy_Only 备份

有关四种不同 LSN 及其使用方式的详细说明,请查看Simon Liew撰写的了解用于备份SQL Server 日志序列号

避免这个问题的方法是不要做不止一件事来做数据库的标准备份。任何临时或辅助备份都应使用仅复制选项完成,有关完整详细信息,请参阅仅复制备份 (SQL Server),但基本上您可以使用 SSMS 中的“仅复制备份”选项,通过 T-SQLWITH COPY_ONLY在命令中指定,或与 PowerShell 一起使用该-CopyOnly参数。


Ale*_*nko 17

假设我们有一个计划备份的数据库。完整备份每 24 小时在 00:00 运行一次,我们还有每 6 小时运行一次的差异备份,以及每小时运行一次的事务日志备份。那么,如果我们需要在中午进行额外的完整备份以恢复另一台服务器怎么办?这种情况下我们该怎么办。当然,我们可以进行完整备份。

BACKUP DATABASE Test TO DISK = 'C:/Test.bak'

但是,当您备份数据库时,有一些更改会影响以下备份的还原方式(差异备份和事务日志备份都会影响还原操作的方式)。在这种情况下,所有后续差异备份都将依赖于上次完整备份。如果上次完整备份丢失,则数据库恢复是不可能的。在此处输入图片说明

但是,我们如何进行备份,才不会影响该数据库的后续备份或恢复过程。这是仅复制备份出现的地方。

BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY

在此处输入图片说明


Rem*_*anu 16

至少您需要考虑差异备份。除非使用完全复制,否则您的下一个差异备份将关闭。仅复制备份

仅复制完整备份(所有恢复模型)仅复制备份不能用作差异基础或差异备份,并且不会影响差异基础。

full 和 full-copy 的唯一区别是 full-copy 不会破坏差异链。它们都不会破坏日志链,因为它们都不会截断日志文件。