技术开发 频道

达梦备份恢复原理

  3.达梦恢复原理

  3.1 恢复技术

  (1)事务故障恢复

  直接利用事务本身的回滚段信息,将数据恢复到原值即可。

  (2)系统崩溃恢复

  数据库系统在重新启动过程中,首先从检查点LSN的日志开始从前往后重做日志,然后扫描回滚段,根据回滚段的状态和回滚日志,从后往前进行回滚,最后数据库达到一致性状态。

  (3)磁盘故障恢复

  首先重新初始化库,然后利用最近的备份文件进行还原,并设置好归档日志文件路径,然后系统启动,从最后还原的备份的LSN的日志开始重做,一直到联机日志(如果联机日志存在的话),剩下过程同系统崩溃恢复,最后数据库达到一致性状态。

  3.2 基于时间点恢复

  用户在数据库操作的过程,可能会出现误操作。如果系统默认为自动提交的话,丢失的数据就无法挽回了。在这种情况下,可以利用备份来恢复,并设置恢复时间点为误操作之前,使得数据库恢复到误操作之前的一致性状态。

  基于时间点恢复原理是在日志记录中添加一中时间类型的日志格式。在事务提交时,修改回滚段的状态时,写时间类型日志。在重做日志时,如果碰到时间类型日志的时间大于恢复时间点,就不再重做,这样使得数据库能恢复到时间点时刻的一致性状态。

  3.3 并行恢复

  并行恢复是指用多个线程来进行重做操作,以缩短重做的时间。

  图3.1是达梦并行恢复的结构图。一个线程来进行日志的读取分发,多个REDO线程来进行日志的重做。这样就充分利用了系统的IO性能,达到了缩短恢复时间的目的。

  并行恢复的关键是日志记录分配算法。首先,日志分配算法要保证属于一个数据页上的日志记录按写日志的先后顺序重做。其次,分配算法要尽可能的利用系统的IO性能。我们采用的是按页号(见表2.1)取余的日志记录分配算法,显然,该算法能保证一个数据页上的日志记录被按序重做,并且在一定程度上利用了系统的IO性能。但在数据文件都分布在不同的磁盘驱动器上时,也许利用文件号取余,更能充分利用系统IO性能。

  还有一个问题就是采用多少个REDO线程,能达到最优效果。这个要根据实际情况来配置,如磁盘驱动器的数目和CPU的数目来综合考虑决定。

  4.总结

  本文介绍了达梦数据备份恢复原理,并就其中的具体问题进行了详细描述。针对文章开始提出的三种故障类型讲述了对应的恢复方法。时间点恢复则是因用户误操作而产生,误操作属于人为故障。现在又有人提出可信恢复,系统对所有事务按某种规则进行分析,然后找出可疑事务,并将其取消。这又涉及到如何确定可疑事务和恢复的一致性该如何定义等复杂问题,有待进一步研究。

1
相关文章