使用事务日志备份
本主题仅适用于使用完整恢复模式或大容量日志恢复模式的数据库。
本主题介绍了有关如何备份和还原(应用)事务日志的概念。在完整恢复模式和大容量日志恢复模式下,执行例行事务日志备份(“日志备份”)对于恢复数据十分必要。在 SQL Server 2005 及更高版本中,可以在任何完整备份运行的时候备份日志。
在创建第一个日志备份之前,必须先创建完整备份(如数据库备份或一组文件备份中的第一个备份)。仅使用文件备份还原数据库会较复杂。因此,建议您尽可能从完整数据库备份开始。此后,必须定期备份事务日志。这不仅能最小化工作丢失风险,还有助于事务日志的截断。通常,事务日志在每次常规日志备份之后截断。但是,日志截断也可能会延迟。有关详细信息,请参阅可能延迟日志截断的因素。
建议经常进行日志备份,其频率应足够支持您的业务需求,尤其是您对损坏的日志驱动器可能导致的数据丢失的容忍程度。适当的日志备份频率取决于您对工作丢失风险的容忍程度与所能存储、管理和潜在还原的日志备份数量之间的平衡。每 15 到 30 分钟进行一次日志备份可能就已足够。但是如果您的业务要求将工作丢失的风险最小化,请考虑进行更频繁的日志备份。频繁的日志备份还有增加日志截断频率的优点,其结果是日志文件较小。
若要限制需要还原的日志备份的数量,必须定期备份数据。例如,可以制定这样一个计划:每周进行一次完整数据库备份,每天进行若干次差异数据库备份。
注意 |
---|
默认情况下,每个成功的备份操作都会在 SQL Server 错误日志和系统事件日志中添加一个条目。如果非常频繁地备份日志,这些成功消息会迅速累积,从而产生一个巨大的错误日志,这样会使查找其他消息变得非常困难。在这样的情况下,如果您没有任何脚本依赖于这些日志条目,则可以使用跟踪标志 3226 来取消这些条目。有关详细信息,请参阅跟踪标志 (Transact-SQL)。 |
日志链
连续的日志备份序列称为“日志链”。日志链从数据库的完整备份开始。通常,仅当第一次备份数据库时,或者将恢复模式从简单恢复模式切换到完整恢复模式或大容量日志恢复模式之后,才会开始一个新的日志链。
除非在创建完整数据库备份时选择覆盖现有备份集,否则现有的日志链将保持不变。在该日志链保持不变的情况下,便可从媒体集中的任何完整数据库备份还原数据库,然后再还原相应恢复点之前的所有后续日志备份。恢复点可以是上次日志备份的结尾,也可以是任何日志备份中的特定恢复点。
若要将数据库还原到故障点,必须保证日志链是完整的。也就是说,事务日志备份的连续序列必须能够延续到故障点。此日志序列的开始位置取决于您所还原的数据备份类型:数据库备份、部分备份或文件备份。对于数据库备份或部分备份,日志备份序列必须从数据库备份或部分备份的结尾处开始延续。对于一组文件备份,日志备份序列必须从整组文件备份的开头开始延续。
如果只使用了文件备份,则必须从第一个完整文件备份的开头开始备份日志。在第一个完整文件备份之后可以立即开始日志备份。之所以建议在此时开始备份,是因为第一个日志备份会花费较长的时间。这样,在备份日志时,也可以同时备份其他文件。若要只使用文件备份还原数据库,则必须为这组完整文件备份增加一个或多个日志备份,这些日志备份覆盖了第一个文件备份和最后一个文件备份之间的间隔。
注意 |
---|
若要在一组备份中找出开始一个日志链的备份,请查询 backupset 表的 begins_log_chain 列,或者在备份设备上运行 RESTORE HEADERONLY 以查看结果集中的 BeginsLogChain 列。 |
执行定期事务日志备份十分必要。除了允许您还原备份事务外,日志备份将截断日志以删除日志文件中已备份的日志记录。即使不经常备份日志,日志文件也会填满。有关如何处理已满事务日志的信息,请参阅解决事务日志已满的问题(错误 9002)。
重要提示 |
---|
如果日志备份丢失或损坏,则可通过创建完整数据库备份或差异数据库备份并随后备份事务日志来开始一个新的日志链。如果要将数据库还原到事务日志备份内的某个时点,则建议您保留丢失的日志备份之前的事务日志备份。有关如何保护备份的信息,请参阅备份和还原的安全注意事项。 |
如何使用日志备份?
还原日志备份将前滚事务日志中记录的更改,使数据库恢复到开始执行日志备份操作时的状态。还原数据库时,必须还原在所还原完整数据库备份之后创建的日志备份,或者从您还原的第一个文件备份的开始处进行还原。通常情况下,在还原最新数据或差异备份后,必须还原一系列日志备份直到到达恢复点。然后恢复数据库。这将回滚所有在恢复开始时未完成的事务并使数据库联机。恢复数据库后,不得再还原任何备份。
重要提示 |
---|
若要防止在脱机还原之前或发生故障之后工作丢失,建议您备份日志尾部以捕获任何尚未备份的日志记录。有关详细信息,请参阅结尾日志备份。 |