恢复的三个阶段:分析阶段,重做阶段,最后是撤消阶段

时间:2010-03-06 05:00:38

标签: sql sql-server sql-server-2005 sql-server-2008

SQL Server数据库恢复包括三个阶段:分析阶段,重做阶段,最后是撤消阶段。

任何人都可以清楚解释或在这三个恢复阶段给出一个良好的联系吗?

4 个答案:

答案 0 :(得分:5)

来自Understanding How Restore and Recovery of Backups Work in SQL Server

  

恢复是一个多阶段过程。该   恢复的可能阶段包括   数据副本,重做(前滚),   和撤消(回滚)阶段:

     
      
  • 数据复制阶段涉及复制所有数据,日志和   来自备份媒体的索引页面   数据库的数据库   文件。
  •   
  • 重做阶段将记录的事务应用于从中复制的数据   备份以前滚该数据
      到恢复点。在此刻,   数据库通常是未提交的   交易并且无法使用   州。在这种情况下,撤消阶段是   要求作为恢复的一部分   数据库中。
  •   
  • 撤销阶段,即恢复的第一部分,回滚任何一部分   未提交的交易和使   用户可以使用的数据库   在回滚阶段之后,随后   备份无法恢复。
  •   

答案 1 :(得分:1)

您可能会发现此文档很有趣:Simple overview of the SQL Server Recovery Process

  

恢复阶段

     

恢复算法有3个阶段,基于事务日志中的最后一个检查点。

     

第1阶段:分析。从事务日志中的最后一个检查点开始。此过程确定并构造一个脏页表(DPT),该表由SQL Server停止时可能是脏的页组成。活动事务表是在SQL Server停止时由未提交的事务构建的。

     

阶段2:重做。此阶段将数据库返回到SQL服务停止时的状态。此前向传递的起点是最早的未提交事务。 DPT中的最小日志序列名称(每个日志记录用LSN标记)是SQL Server第一次期望必须重做页面上的操作,重新启动从最旧的打开事务开始的记录操作,以便可以获得必要的锁。

     

第3阶段:撤消:此处显示活动事务的列表(在SQL Server stoopped时未提交),在第1阶段中识别的位置将单独回滚。 SQL Server遵循每个事务的事务日志中的条目之间的链接。撤消SQL Server停止时未提交的任何事务。

恢复数据库时可以进行恢复,但也可以在数据库启动时完成恢复(崩溃恢复)。

答案 2 :(得分:1)

  

恢复阶段:

恢复是一个多阶段过程。还原的可能阶段包括数据复制,重做(前滚)和撤消(回滚)阶段

  • 数据复制阶段涉及复制所有数据,日志和索引 从数据库的备份媒体到数据库文件的页面。
  • 重做阶段将记录的事务应用于复制的数据 从备份到将数据前滚到恢复点。在 在这一点上,数据库通常具有未提交的事务并且是 处于无法使用的状态。在这种情况下,需要撤销阶段作为一部分 恢复数据库。
  • 撤消阶段,这是恢复的第一部分,回滚任何部分 未提交的事务并使数据库可供用户使用。 回滚阶段后,无法恢复后续备份。

有关详细信息,请参阅以下链接:

https://technet.microsoft.com/en-us/library/ms191455(v=sql.105).aspx

https://community.emc.com/docs/DOC-13849

答案 3 :(得分:0)

关于重做和提交之间的区别: 提交只是意味着您已生成指示事务完成的日志记录并将其刷新到磁盘(现在它是一个持久数据)。这并不意味着您在事务中更改的数据将写入磁盘。根据缓冲区和检查点的压力,数据将被异步刷新。

因此,当SQL崩溃并重新启动时,您刚刚丢失了所有未刷新的数据更改。因此,您现在必须重做自上次刷新以来的所有日志记录。这是恢复中的重做阶段(阶段2)。在完成此操作之前,您的数据库将无法使用。