一种内存数据库的并行恢复方法技术

技术编号:4361899 阅读:205 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种内存数据库的并行恢复方法,包括以下步骤:a.日志导入到缓存采用多个任务,通过日志系统并行的读取日志,这些读取日志的任务按照一定的协议,将日志按照原日志文件中的顺序被重新组织在内存中;b.这个日志序列被分配模块按照一个均衡负载的算法分配给多个队列,并且这个分配工作还遵守日志同步的两个规则;c.多个任务并发执行日志恢复,它们从各自对应的队列中取得日志,然后执行日志恢复,多日志恢复任务间也遵守日志同步的两个规则。该方法采用日志导入任务的调度算法、并行恢复任务的调度算法、恢复任务负载均衡算法、日志文件导入任务数与恢复任务数自适应的平衡算法,可以实现内存数据库的快速恢复。

【技术实现步骤摘要】

本专利技术涉及内存数据库备份恢复
,尤其涉及内存数据库的并行恢复

技术介绍
现有的内存数据库一般采用检査点映像和日志进行恢复,这种方法以检査点映像为恢复 基础,在该基础上执行日志恢复对检査点映像进行修正,直至得到数据库崩溃前的完整一致 映像。数据库检査点映像是数据库定期的对数据库的内存映像进行备份,形成的备份文件, 恢复时就将该备份文件装载到内存作为恢复的基础。日志是数据库记录日常事务操作的序列 。多个事务的日志序列可能是交错的,事务并发进行,但是事务的日志串行的记录。在恢复 时由于日志串行的恢复使得数据库最终能正确的恢复出数据库映像。该方法速度较慢,进行 大量的数据恢复需要耗费大量的时间。随着计算机配置的内存越来越大和内存数据库数据量的不断增加,内存数据库的体积也 越来越大。按照现有的数据库恢复方法恢复出整个数据库所需的时间也越来越长。然而内存 数据库应用对数据库恢复时间依旧要求严格,所以内存数据库的快速恢复成为一个亟待解决 的问题。
技术实现思路
本专利技术所要解决的技术问题是提供一种内存数据库的快速并行恢复方法,可以实现内存 数据库的快速恢复。为解决上述技术问题,本专利技术包括以下步骤a.日志导入到缓存采用多个任务,通过日志系统并行的读取日志,这些读取日志的任务按照一定的协议,将日志按照原日志文件中的顺序被重新组织在内存中;b.这个日志序列被分配模块按照一个均衡负载的算法分配给多个 队列,并且这个分配工作还遵守日志同步的两个规则;c.多个任务并发执行日志恢复,它们 从各自对应的队列中取得日志,然后执行日志恢复,多日志恢复任务间也遵守日志同步的两 个规则。按上述方案,所述步骤a采用日志导入任务的调度算法,日志导入部分通过日志系统来读取日志,日志系统提供统一的日志视图,该视图使得通过日志系统来访问日志不必考虑文 件是在磁盘上还是在文件缓存中;日志读取部分采用一种分段读取的方法,它可以控制读取 的任务数,来达到不同的读取速度的要求;该分段读取方法使用的内存缓存区数据结构使得 并行读入的日志在内存重组后仍然保持原来的顺序。按上述方案,所述步骤b采用恢复任务负载均衡算法,将读入到内存缓存的日志按照日 志同步的规则分配给日志执行步骤;均衡算法采用堆的调整方法选择日志恢复任务恢复该日 志;堆的调整方法是从待处理日志队列中选择剩余日志最少的队列,将待处理的日志插入队 列中。按上述方案,所述步骤c采用并行恢复任务的调度算法,日志并行恢复部分依据两种日 志类型总结了两个执行并行恢复的规则,然后依据这两个规则对于不同类型的日志分别执行 并行恢复或串行恢复;并行恢复部分将日志分段,依据规则在每段内进行并行恢复,在段间 保持串行恢复。优选地,还包括一种日志文件导入任务数与恢复任务数自适应的平衡算法,该算法使得 读取的日志和日志的恢复协调的进行,使得内存中日志缓冲区的使用最为有效;它使得缓存 待分配日志缓冲区中缓存的日志数量最小但是又不为空,并使得待处理缓冲区中日志数量为 空。按上述方案,所述读取日志的任务一次读取一个日志文件,每个日志文件中存放的是完 整的日志序列;日志并行读入部分启动多个日志读入任务,开始时每个任务负责最前面的日 志几个日志文件的读入,当这些任务完成自己任务的日志读入任务后再依次读入后面的日志 文件;日志读入任务将日志读入到日志缓存区中,该缓存区采用块链的方式组织。每个任务 自己分配一块内存存放自己的日志,并将块链如缓存区中,部分操作涉及共享数据需要加互 斥锁。按上述方案,所述平衡算法将日志导入任务数设为m,日志恢复任务数设为n , A代表数 据库日志缓冲队列日志量,B代表线程日志缓冲队列日志量;流入A的流量是M,流出B的流量 是N,从A流向B的流量是D, AI=M-D, A0=D-N,初始时111=11=八=8=0。按上述方案,所述m主要依据A中的变化量A I来变化,若A 1>0表明数据库日志缓冲队列 中日志变多,系统已经来不及将这些日志分配处理,所以减少m的数量;n综合考虑各种因素 来调整,若A 0>0表明线程日志缓冲队列日志和变大,恢复线程已经来不及处理这些日志了 ,所以增加n的数量,若AI+AO〈0表明整个系统的输出能力比输入能力强,n数量过大浪费 了系统资源,所以减少n的数量。6按上述方案,所述日志分配模块将部分特殊日志直接进行恢复,接着,日志恢复线程读取其线程日志缓冲队列中的日志,执行恢复。按上述方案,所述日志并行读入部分包括多个日志读入任务和一些数据结构。 该方法采用了日志导入任务的调度算法、并行恢复任务的调度算法、恢复任务负载均衡算法、日志文件导入任务数与恢复任务数自适应的平衡算法,因此可以实现内存数据库的快速恢复。附图说明下面结合附图和具体实施方式对本专利技术的技术方案作进一步具体说明。图l为恢复模块整体结构示意图。图2为日志恢复机制主要流程。图3为日志读入部分流程图。图4为日志分配部分主要流程图。图5为分配算法具体流程图。图6为系统建模图。图7为日志文件导入任务数与恢复任务数自适应的平衡算法流程图。具体实施例方式本专利技术应用在数据库恢复阶段。如图1所示,恢复模块结构包含两个部分装载映像部分和日志恢复部分。这两个部分按照先后顺序分别完成各自的任务,装载映像部分先从数据 库内存映像备份文件中装载映像到数据库内存中,然后日志恢复部分再从日志系统读取日志 进行恢复操作,对数据库内存进行修正,直到恢复出数据库故障前的某个完整一致状态。日 志恢复部分完成了整个数据库恢复的大部分任务,它涉及到磁盘日志文件访问(通过日志系 统)、日志缓冲区队列管理、日志分配算法、日志恢复执行以及系统负荷监控和整个系统的 负载均衡算法等许多方面,是整个数据库恢复的核心。日志恢复部分完成了整个数据库恢复的大部分任务,它涉及到磁盘日志文件访问(通过 日志系统)、日志缓冲区队列管理、日志分配算法、日志恢复执行以及系统负荷监控和整个系统的负载均衡算法等许多方面,是整个数据库恢复的核心。日志恢复部分主要步骤如图2 所示。日志恢复部分执行日志恢复的过程主要有3个步骤首先,日志读入模块通过日志系统从磁盘上的日志文件中读取日志,将日志插入内存中的数据库日志缓冲队列。然后,日志7分配模块从数据库日志缓冲队列中读取日志并按照一定的算法将日志分配给每个日志恢复线 程对应的日志缓冲队列;对于部分特殊日志,日志分配模块将直接对他们进行恢复。接着, 日志恢复线程读取其线程日志缓冲队列中的日志,执行恢复。日志恢复的第一个步骤,即日志并行读入部分,有多个日志读入任务和一些数据结构组 成。该部分维护如下数据结构1) 下一任务位置,用以标识下一个任务从日志系统要读取的文件;2) 最后一个任务号,用以标识当前最后一个任务。 每个日志读取任务自己维护如下几个数据1) 任务号,用以标识该任务;2) 内存日志缓存区日志插入位置,标识该任务对应的缓冲区位置;3) 该任务的前一任务号和后一任务号,将所有任务串成一个链表。每个任务一次读取一个日志文件,每个日志文件中存放的是完整的日志序列。日志并行 读入部分启动多个日志读入任务,开始时每个任务负责最前面的日志几个日志文件的读入, 当这些任务完成自己任务的日志读入任务后再依次读入后面的日本文档来自技高网...

【技术保护点】
一种内存数据库的并行恢复方法,包括以下步骤:a.日志导入到缓存采用多个任务,通过日志系统并行的读取日志,这些读取日志的任务按照一定的协议,将日志按照原日志文件中的顺序被重新组织在内存中;b.这个日志序列被分配模块按照一个均衡负载的算法分配给多个队列,并且这个分配工作还遵守日志同步的两个规则;c.多个任务并发执行日志恢复,它们从各自对应的队列中取得日志,然后执行日志恢复,多日志恢复任务间也遵守日志同步的两个规则。

【技术特征摘要】

【专利技术属性】
技术研发人员:王非卢正新黄本雄王芙蓉吴惠君
申请(专利权)人:华中科技大学
类型:发明
国别省市:83[中国|武汉]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1