13.1 数据库还原的过程

13.1 数据库还原的过程


13.1.1 恢复点

  “恢复点”是用户指定将数据集恢复到的点。

(1) 简单恢复模式

  在简单恢复模式下,恢复点是执行完整备份或差异备份的完成时间点。


(2) 完整恢复模式

  在完整恢复模式下,可以将恢复点指定为特定时间点、标记的事务或日志序列号。


(3) 大容量日志恢复模式

  在大容量日志恢复模式下,仅当上次日志备份以来尚未执行大容量操作时,才可还原到某个时间点。



13.1.2 还原的3个阶段

  数据库还原的过程主要分为3个阶段。

13.1 数据库还原的过程_第1张图片

(1) 数据复制

  此阶段将从数据库的备份介质将所有数据、日志和索引页复制到数据库文件中。完成这个阶段后,数据库被恢复到备份介质所包含的最后一个检查点。


(2) 重做(前滚)

  此阶段将记录的事务应用到从备份复制的数据,以将这些数据前滚到恢复点。此阶段将使数据库从最后一个检查点前滚到恢复点(recovery point)的最后一笔交易。

  重做(前滚)阶段阶段后,数据库通常有未提交的事务,并处于“正在恢复,不可用”的状态。


(3) 撤消(回滚)

  此阶段将撤消(回滚)任何未提交的事务。 

  撤消(回滚)阶段后,数据库可供用户使用。



13.1.3 还原的过程示例

   以下是一个简化的事务示例:

LSN01 提交事务1

LSN02 检查点

LSN03 执行事务2

LSN04 执行“完整备份1”(备份导致检查点)

LSN05 执行事务3

LSN06 检查点

LSN07 提交事务2

LSN08 执行“事务日志备份1”(恢复点)


   恢复过程如下:

 (1)第一阶段:将通过备份介质“完整备份1”,恢复到LSN04(即备份介质所包含的最后一个检查点)。这个过程主要是以“区”为单位直接将数据页面复制到数据库文件中。

 (2)第二阶段:根据备份介质“事务日志备份1”的记录,前滚到LSN08(即数据库的“恢复点”)。此阶段后,LSN05和LSN07都被执行,被回写到数据页面,但此时尚不确定LSN05事务是否被提交,因此,此时数据库的状态为“正在恢复,不可使用”,需要等待后续阶段。

 (3)第三阶段,在备份介质“事务日志备份1”中没有发现LSN05被提交的日志记录,因此需要回滚未提交的事务,即撤消LSN05。此阶段后,数据库可正常使用,且恢复到“恢复点”。


   完成上述3个阶段后,事务2被提交(根据根据LSN07),事务3被回滚(因为事务3在LSN08时未提交)。



13.1.4 恢复状态

  “还原”是指从备份复制数据并将记录的事务应用于该数据以使其回滚到目标恢复点的过程。回滚未提交的事务(如果有)并使数据库处于联机状态的过程称为“恢复”。

  根据还原过程中是否执行了第三阶段为标志,数据库的恢复状态有三种:

13.1 数据库还原的过程_第2张图片


(1) WITH RECOVERY

  “恢复模式”通过回滚未提交的事务,使数据库处于可以使用的状态。

  这是默认的选项。在 T-SQL 语句中可以省略。


(2) WITH NORECOVERY

  “无恢复模式”不对数据库执行任何操作,不回滚未提交的事务。数据库处于“正在还原”状态。


(3) WITH STANDBY

  “备用模式”回滚未提交的事务,但将回滚操作保存在备用文件中。数据库处于“正在还原,只读”状态,可以提供只读访问。

  需要指定一个备用文件。




本文出自 “SQL Server 管理员指南” 博客,谢绝转载!

你可能感兴趣的:(数据库,还原)