在大容量日志恢复模式下备份
本主题与对通常使用完整恢复模式的 SQL Server 数据库执行的大容量操作优化有关。
大容量日志恢复模式是一种特殊用途的恢复模式,只应偶尔用于提高某些大规模大容量操作(如大量数据的大容量导入)的性能。完整恢复模式下有关备份的许多说明也适用于大容量日志恢复模式。本主题仅介绍对于大容量日志恢复模式需要特别注意的事项。
注意 |
---|
有关在大容量日志恢复模式下对哪些操作进行最小方式记录的信息,请参阅可以尽量减少日志量的操作。 |
建议尽量减少大容量日志恢复模式的使用。最好的方法是在一组大容量操作之前切换到大容量日志恢复模式,执行操作,然后立即切换回完整恢复模式。有关详细信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项。
大容量日志恢复模式的工作原理
与完整恢复模式(完全记录所有事务)相比,大容量日志恢复模式只对大容量操作进行最小记录(尽管会完全记录其他事务)。大容量日志恢复模式保护大容量操作不受媒体故障的危害,提供最佳性能并占用最小日志空间。
但是,大容量日志恢复模式会增加这些大容量复制操作丢失数据的风险,因为大容量日志操作阻止再次捕获对每个事务逐一所做的更改。如果日志备份包含大容量日志操作,则无法还原到该日志备份中的时点,而只能还原整个日志备份。
在大容量日志恢复模式下,如果日志备份覆盖了任何大容量操作,则日志备份包含由大容量操作所更改的日志记录和数据页。这对于捕获大容量日志操作的结果至关重要。合并的数据区可使日志备份变得非常庞大。此外,备份日志需要访问包含大容量日志事务的数据文件。如果无法访问任何受影响的数据库文件,则事务日志将无法备份,并且在此日志中提交的所有操作都会丢失。
为跟踪数据页,日志备份操作依赖于位图页的大容量更改,位图页针对每个区包含一位。对于自上次日志备份后由大容量日志操作所更新的每个区,在位图中将每个位都设置为 1。数据区将复制到日志中,后跟日志数据。下图显示了日志备份的构造方式。
重要提示 |
---|
在完整或大容量日志恢复模式下,如果没有其他因素使日志记录保持为活动状态,则到进行第一次完整备份时,自动检查点才会截断事务日志的未使用部分。第一次完整备份后,截断要求备份事务日志。有关截断延迟因素的信息,请参阅可能延迟日志截断的因素。 |
大容量日志恢复模式下的备份限制
在大容量日志恢复模式下,存在下列备份限制:
执行日志备份之前,如果将包含大容量日志更改的文件组设置为只读,则只要文件组保持只读,所有后续的日志备份将包含由大容量日志操作所更改的区数。这样的日志备份将更大,而且比在完整恢复模式下需要花费更长的时间来完成。
若要避免此类情况,请在将文件组设置为只读之前,将数据库切换到完整恢复模式并备份日志。然后再将文件组设置为只读。
如果在上次日志备份之后执行了大容量操作,则数据库中将存在大容量更改。在此情况下,执行日志备份时,所有文件必须处于联机状态或不起作用。这是因为对包含大容量日志操作的日志进行备份要求能访问包含大容量日志事务的数据文件。
有关还原限制的信息,请参阅在大容量日志恢复模式下进行还原。
大容量日志事务操作后将数据库设置为只读
在大容量日志恢复模式下,日志备份在数据库包含大容量日志更改的情况下可以正常运行。但是,如果读/写数据库在大容量日志操作后更改为提供只读访问,则后续日志备份可能会捕获一些不必要的数据。这是因为无法更新数据文件来跟踪大容量日志操作所更改的数据区。所有后续日志备份包含的信息都相同。
最佳方法 在将数据库更改为只读之前,切换到完整恢复模式并创建日志备份。然后将数据库更改为只读。实际上,为只读数据库创建日志备份的意义不大。相反,在数据库变为只读之后,可以执行完整数据库备份,也可以执行一整套文件的备份。有关如何切换恢复模式的信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项。
注意 |
---|
有关如何备份只读数据库的信息,请参阅备份只读数据库。 |