2.4备份文件结构
(1)备份原理
数据库备份的基本原理是对数据文件或回滚文件中的数据页拷贝到备份文件中。完全备份是将所有使用了的页都拷贝到完全备份文件中来。增量备份则是将上一次备份后修改过的页拷贝到增量备份文件中。
增量备份时,如何确定哪些页是上次修改过的?这涉及到两个问题。其一、每个数据页上有一个LSN,标识该数据页最后一次修改时的LSN。这个LSN由物理事务提交时设置。其二、备份时,系统做同步检查点,停止所有工作线程,此时产生一个检查点LSN(接下来会做介绍),该LSN会记录在备份文件头上。这样,在增量备份时,取出基备份的LSN,然后只备份那些页LSN大于基备份LSN的数据页即可。
(2)备份文件结构
文件头中记录了库控制信息(页大小、簇大小等等)和备份文件的信息。备份文件信息则是记录了备份的数据文件的基本信息,包括数据文件的大小,名称,文件组和在备份文件中的偏移等。控制文件信息就是对用户库的库控制文件的拷贝。数据文件信息就是对数据页的拷贝。
2.5检查点技术
检查点是系统恢复时重做的起点,主要目的是缩短恢复的时间。
(1) 检查点原理
系统做检查点时,进行如下操作:
a)将位于主存的所有日志记录输出到稳定存储器上
b)将所有修改了的缓冲块(数据页)输出到磁盘上
c)将一个日志记录输出到稳定存储器上。
达梦中第三步没有专门的日志记录,而是将检查点的LSN写到日志文件头上。检查点LSN在第一步中获得,是当前写到磁盘上日志的最大LSN。
(2) 检查点类型
同步检查点:停止系统所有工作线程,然后进行检查点操作。工作线程必须检查点结束后才能继续运行。检查点可能花费比较长的时间,因为其主要操作时刷日志和刷脏页。这样同步检查点对系统吞吐量会有一定的影响。
异步检查点:检查点时,工作线程可以继续运行。和同步检查点不同的是,检查点线程刷脏页(更新的页)时,需要对脏页上读锁。异步检查点持续时间可能比同步检查点长,但降低了对系统性能的影响。
备份时使用的是同步检查点,简化了备份恢复逻辑。如果使用异步检查点则使备份恢复逻辑变复杂。