在完整恢复模式下备份
完整恢复模式使用日志备份在最大范围内防止出现故障时丢失数据,这种模式需要备份和还原事务日志(“日志备份”)。使用日志备份的优点是允许您将数据库还原到日志备份中包含的任何时点(“时点恢复”)。可以使用一系列日志备份将数据库前滚到其中一个日志备份中包含的任意时点。请注意,为了最大程度地缩短还原时间,可以对相同数据进行一系列差异备份以补充每个完整备份。
假定可以在发生严重故障后备份活动日志,则可将数据库一直还原到没有发生数据丢失的故障点处。使用日志备份的缺点是它们需要使用存储空间并会增加还原时间和复杂性。
注意 |
---|
如果使用日志备份的好处不足以抵消为管理备份所带来的开销,则建议使用简单恢复模式。 |
对于定期使用完整恢复模式的数据库,可以通过暂时使用大容量日志恢复模式来优化某些大容量操作。大容量日志恢复模式会带来多种限制,因此不适合用于日常使用。有关详细信息,请参阅在大容量日志恢复模式下备份。
备份策略示例
下图显示了在完整恢复模式下的最简单的备份策略。在此图中,已完成了完整数据库备份 Db_1 以及两个例行日志备份 Log_1 和 Log_2。在 Log_2 日志备份后的某个时间,数据库出现数据丢失。在还原这三个备份前,数据库管理员必须备份活动日志(日志尾部)。然后还原 Db_1、Log_1 和 Log_2,而不恢复数据库。接着数据库管理员还原并恢复结尾日志备份 (Tail)。这将把数据库恢复到故障点,从而恢复所有数据。
最大程度地降低工作丢失的风险
在第一个完整数据库备份完成并且常规日志备份开始之后,潜在的工作丢失风险的存在时间仅为数据库损坏时以及执行最新的常规日志备份时。因此,建议经常执行日志备份,以将工作丢失的风险限定在业务要求所允许的范围内。
下图显示的备份策略使用差异数据库备份来补充完整数据库备份和日志备份。事务日志备份可缩短潜在的工作丢失风险的存在时间,使该风险仅在最新日志备份 t14 之后存在。进行一系列差异备份(三次备份)来减少在出现故障时需要还原的事务日志数。第三个差异备份很大,足以使下一个备份成为完整数据库备份。该数据库备份将成为新的差异基准。
在此图中的第一个数据库备份创建之前,数据库存在潜在的工作丢失风险(从时间 t0 到时间 t1)。该备份建立之后,例行日志备份将工作丢失的风险降为丢失自最近日志备份之后所做的更改(在此图中,最近备份的时间为 t14)。如果在最新备份后出现故障,数据库管理员将尝试备份日志尾部(尚未备份的日志)。如果结尾日志备份成功,则数据库管理员可以通过将数据库还原到故障点来避免任何工作丢失。
有关差异数据库备份的信息,请参阅使用差异备份。
大容量操作和完整恢复模式
通过记录所有操作(包括大容量操作,如 SELECT INTO、CREATE INDEX)和大容量加载数据,可以使用完整恢复模式将数据库恢复到故障点或某个较早的时点(称为“时点还原”)。
在大容量加载数据和提高性能超过可能的数据丢失风险时,许多使用完整恢复模式的用户会临时切换到大容量日志恢复模式。大容量日志恢复模式按最小方式记录大容量操作(尽管会完整记录其他事务)。有关大容量日志恢复模式的详细信息,请参阅在大容量日志恢复模式下备份
注意 |
---|
在 SQL Server 2005 和更高版本中,从不要求使用 sp_dboption 的 select into/bulkcopy 数据库选项并应始终避免使用此选项。应当改用 ALTER DATABASE。在 SQL Server 以后的版本中,将删除 sp_dboption 存储过程。 |
使用备份还原数据库
还原数据库的过程需要一个还原操作顺序(“还原顺序”)。还原顺序从至少还原一个完整备份开始,后面可跟对应的差异备份。
每个完整备份和差异备份包含的日志记录刚好足够用来恢复数据库。但通常需要按顺序还原后续的日志备份,并以结尾日志备份结束(如果有)。因此,开始还原数据库之前,必须创建一个结尾日志备份。结尾日志备份允许您将数据库还原到故障点。还原上一个日志备份时,必须恢复数据库。
注意 |
---|
在完整恢复模式或大容量日志恢复模式下,SQL Server 2005 Enterprise Edition 及更高版本支持在数据库处于联机状态时还原文件和/或页面。这称为“联机还原”。无论数据库处于脱机还是联机状态,还原文件或页面的 RESTORE 语法都相同。 |
有关详细信息,请参阅还原与恢复概述 (SQL Server)。