本文主要来源于Microsoft《SQL Server 2008 R2联机丛书》。转裁请注明出处。
一、完整备份
“完整备份”包含特定数据库(或者一组特定的文件组或文件)中的所有数据,以及可以恢复这些数据的足够的日志。
二、差异备份
“差异备份”基于数据的最新完整备份。这称为差异的“基准”或者差异基准。差异基准是读/写数据的完整备份。差异备份仅包含自建立差异基准后发生更改的数据。通常,建立基准备份之后很短时间内执行的差异备份比完整备份的基准更小,创建速度也更快。因此,使用差异备份可以加快进行频繁备份的速度,从而降低数据丢失的风险。通常,一个差异基准会由若干个相继的差异备份使用。还原时,首先还原完整备份,然后再还原最新的差异备份。
经过一段时间后,随着数据库的更新,包含在差异备份中的数据量会增加。这使得创建和还原备份的速度变慢。因此,必须重新创建一个完整备份,为另一系列的差异备份提供新的差异基准。
每个数据备份都包括部分事务日志,以便备份可以恢复到该备份的结尾。
第一次数据备份之后,在完整恢复模式或大容量日志恢复模式下,需要定期进行“事务日志备份”(或“日志备份”)。每个日志备份都包括创建备份时处于活动状态的部分事务日志,以及先前日志备份中未备份的所有日志记录。
三、事务日志备份(仅用于完整恢复模式或大容量日志恢复模式)
在完整恢复模式或大容量日志恢复模式下,需要定期进行“事务日志备份”(或“日志备份”)。每个日志备份都包括创建备份时处于活动状态的部分事务日志,以及先前日志备份中未备份的所有日志记录。不间断的日志备份序列包含数据库的完整(即连续不断的)日志链。在完整恢复模式下(或者在大容量日志恢复模式下的某些时候),连续不断的日志链让您可以将数据库还原到任意时间点。
在创建第一个日志备份之前,您必须先创建一个完整备份(如数据库备份)。因此,定期备份事务日志十分有必要,这不仅可以使工作丢失的可能性降到最低,而且还能截断事务日志。
四、尾日志备份(仅用于完整恢复模式或大容量日志恢复模式)
对于大多数情况,在完整恢复模式或大容量日志恢复模式下,SQL Server 2005 及更高版本要求您备份日志结尾以捕获尚未备份的日志记录。还原操作之前对日志尾部执行的日志备份称为“结尾日志备份”。
SQL Server 2005 及更高版本通常要求您在开始还原数据库前执行结尾日志备份。结尾日志备份可以防止工作丢失并确保日志链的完整性。将数据库恢复到故障点时,结尾日志备份是恢复计划中的最后一个相关备份。如果无法备份日志尾部,则只能将数据库恢复为故障前创建的最后一个备份。
并非所有还原方案都要求执行结尾日志备份。如果先前的日志备份中包含恢复点,或者您准备移动或替换(覆盖)数据库,并且在最新备份后不需要将该数据库恢复到某一时间点,则无需使用结尾日志备份。并且,如果日志文件受损且无法创建结尾日志备份,则必须在不使用结尾日志备份的情况下还原数据库。最新日志备份后提交的任何事务都将丢失。
如果数据库处于联机状态,每当您准备对数据库执行的下一个操作为还原操作时,请在开始还原顺序之前使用 WITH NORECOVERY 备份日志尾部。注意:为防止出错,必须使用 NORECOVERY 选项。
如果数据库处于脱机状态并且无法启动,请尝试执行结尾日志备份。由于此时不会发生任何事务,所以 WITH NORECOVERY 是可选的。如果数据库受损,请使用 WITH CONTINUE_AFTER_ERROR (“出错时继续”)或 WITH NO_TRUNCATE。
五、部分(文件/文件组)备份(仅用于完整备份或差异备份)
在 SQL Server 2005 中引入了部分备份和部分差异备份。这些备份的设计目的在于:为在简单恢复模式下对包含一些只读文件组的数据库的备份工作提供更多的灵活性。但是,所有恢复模式都支持这些备份。
SQL Server 2008 支持下列类型的文件备份。
(1) 部分备份
备份主文件组、所有读/写文件组以及任何选择指定的只读文件或文件组中的所有完整数据。只读数据库的部分备份仅包含主文件组。
(2)部分差异备份
这种备份仅包含自同一组文件组的最新部分备份以来发生了修改的数据区。
可以分别备份和还原数据库中的文件。使用文件备份使您能够只还原损坏的文件,而不用还原数据库的其余部分,从而加快了恢复速度。例如,如果数据库由位于不同磁盘上的若干个文件组成,在其中一个磁盘发生故障时,只需还原故障磁盘上的文件。但计划和还原文件备份可能会十分复杂;因此,只有在文件备份能够为您的还原计划带来明显价值时,才应使用这种备份方式。
SQL Server 支持下列类型的文件备份。
(1)文件备份
一个或多个文件或文件组中所有数据的完整备份。
重要提示: 在简单恢复模式下,文件备份基本上仅限于只读辅助文件组。您可以创建读/写文件组的文件备份,但必须先将文件组设置为只读,并执行差异只读文件备份,然后才能还原读/写文件备份。
(2)差异文件备份
一个或多个文件的备份,包含自每个文件的最新完整备份之后发生了更改的数据区。
注意: 在简单恢复模式下,此备份假定自完整备份之后已经将数据更改为只读。
六、备份选项
1、仅复制备份
通常,进行备份会更改数据库并影响其后备份的还原方式。但是,有时需要针对特殊目的执行备份,同时不影响数据库的整体备份和还原过程。为此,SQL Server 2005 中引入了仅复制备份。这种备份独立于 SQL Server 备份的正常顺序,可用于完整备份(所有恢复模式)和日志备份(仅限于完整恢复模式和大容量日志恢复模式)。
事务日志从不在仅复制备份后出现截断。仅复制备份记录在 backupset 表的 is_copy_only 列中。
2、备份压缩
SQL Server 2008 Enterprise 中引入了备份压缩。从 SQL Server 2008 R2 开始,SQL Server 2008 R2 Standard 和所有更高版本都支持备份压缩。SQL Server 2008 的每个版本和更高版本都可以还原已压缩的备份。
压缩的备份具有以下限制条件:
压缩的备份和未压缩的备份不能共存于一个介质集中。
早期版本的 SQL Server 无法读取压缩的备份。
NTbackup 无法共享包含压缩的 SQL Server 备份的磁带。
因为相同数据的压缩的备份比未压缩备份小,所以压缩备份所需的设备 I/O 通常较少,因此通常可大大提高备份速度。默认情况下,压缩会显著增加 CPU 的使用,并且压缩进程所消耗的额外 CPU 可能会对并发操作产生不利影响。