一种数据库实例恢复方法和装置制造方法及图纸

技术编号:19543112 阅读:38 留言:0更新日期:2018-11-24 20:30
本发明专利技术公开了一种数据库实例恢复方法和装置。涉及数据库技术,解决了实例恢复时效率低下的问题。该方法包括:在需要进行实例恢复时,读取并解析REDO日志,确定需要重做的数据页;将所述REDO日志划分为多个队列,为每个队列配置独立线程,多个独立线程并行完成针对各自队列中所述需要重做的数据页的重做操作。本发明专利技术提供的技术方案适用于大型通用数据库,实现了高效恢复实例。

A Method and Device for Database Instance Recovery

The invention discloses a database instance recovery method and device. It involves database technology and solves the problem of low efficiency in case recovery. The method includes: reading and parsing REDO logs to determine data pages that need to be redone when instance recovery is needed; dividing the REDO logs into multiple queues, configuring independent threads for each queue, and concurrently completing the redo operations of data pages that need to be redone for each queue. The technical scheme provided by the invention is suitable for large general database and achieves an efficient recovery example.

【技术实现步骤摘要】
一种数据库实例恢复方法和装置
本专利技术涉及数据库技术,尤指一种数据库实例恢复方法和装置。
技术介绍
数据库管理技术作为管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,其最主要的功能之一是安全可靠的保证数据的正确性、有效性和可用性。但是由于各种原因,数据库中的数据存在着被误删、损坏和篡改的危险,而数据一旦被破坏可能造成无法挽回的损失。因此,如何高效地恢复数据、最大限度减少数据丢失成为当今数据库技术研究领域的热点之一。实例恢复(InstanceRecovery)是指在启动数据库时发现文件不同步,自动利用在线重做日志(ONLINEREDOLOG)中的重做记录对陈旧的数据文件进行恢复的过程。实例恢复主要包括两个重要组成部分:根据重做(REDO)日志进行重做和根据回滚(UNDO)日志恢复事务提交前的状态。如K-DB等数据库以数据页为恢复单元,采用基于日志的恢复方式进行实例恢复,其原有的实例恢复基本框架如图1所示,主要包括三部分:确定实例恢复起点(LSN,LogSequenceNumber,RestartLSN);重做REDO日志;回滚未提交事务。实例恢复的起点由StarlLSN确定。为减少恢复时的重做日志量,可设置CheckPoint检查点进程定期回刷脏页,更新StartLSN。数据库在装载脏页时,在脏页的数据页页头会设置页面第一次变脏日志序列号(FirstDirtyLogSequenceNumber,FDLSN),作为当前数据页第一次变为脏页的时间。检查点进程通过扫描缓存内所有脏页的FDLSN,统计出最小的FDLSN作为数据库StartLSN,将其存放在数据库控制文件(ControlFile)中。数据库启动时会根据StartLSN检测数据文件的一致性,判断是否需要进行实例恢复。实例恢复时,由于REDO日志按照LSN顺序进行存储,所以,以StartLSN为起点依次进行每条REDO日志的重做操作,即可完成实例恢复的自动重做部分。最后,根据UNDO回滚段的事务槽中各个事务的相关状态信息,确定活跃事务回滚的起点ULA(UndoLogAddress),开始进行回滚操作。神通数据库中同一事务的UNDO日志通过单项链表的方式进行管理,前一项的UNDO日志地址存储在后一项中,保证了事务回滚过程的有序性。实例恢复过程中,上述串行化重做REDO日志、重复装载数据页、重做已回刷数据对应操作等操作方式造成了恢复时性能的下降。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种数据库实例恢复方法和装置,将多线程并行处理思想和实例恢复的各个阶段进行融合,解决了实例恢复时效率低下的问题。为了达到本专利技术目的,本专利技术提供了一种数据库实例恢复方法,包括:在需要进行实例恢复时,读取并解析REDO日志,确定需要重做的数据页;将所述REDO日志划分为多个队列,为每个队列配置独立线程,多个独立线程并行完成针对各自队列中所述需要重做的数据页的重做操作。优选的,所述在需要进行实例恢复时,读取并解析REDO日志,确定需要重做的数据页的步骤之前,还包括:在需要写入UNDO日志时,生成与所述UNDO日志实质涉及修改操作对应的REDO日志。优选的,所述在需要进行实例恢复时,读取并解析REDO日志,确定需要重做的数据页的步骤包括:多线程并行读取REDO日志,提取所述REDO日志中的物理日志记录(PLR);根据所述PLR的标示符,对所述PLR进行翻译,转换得到各PLR对应的日志记录(LR);将所述LR进行链接,存放在新日志结果节点(NLRN)数据结构中;将所述NLRN按照事务日志序列号(LSN)的顺序排序,得到日志结果节点LRN链表;依次检查、解析所述LRN链表中的节点,得到所述需要重做的数据页的标识ID;构建脏页表,在所述脏页表中保存所述需要重做的数据页的标识(ID)。优选的,所述将所述REDO日志划分为多个队列,为每个队列配置独立线程,多个独立线程并行完成针对所述需要重做的数据页的重做操作的步骤包括:按照所述LSN的顺序将REDO日志写入多个队列,每个队列配置有独立的子线程;每个子线程循环遍历对应的队列,根据队列中的REDO日志进行重做操作。优选的,将所述REDO日志划分为多个队列,为每个队列配置独立线程,多个独立线程并行完成针对所述需要重做的数据页的重做操作的步骤之前,还包括:将所述需要重做的数据页提取至缓存中。优选的,所述将部分或全部所述需要重做的数据页提取至缓存中的步骤包括:对所述脏页表中的数据页进行排序,合并连续的数据页,形成预取队列;将所述预取队列中的数据页提取至缓存中。优选的,所述将所述预取队列中的数据页提取至缓存中的步骤包括:根据预置的队列最大预取空间,将所述预取队列中的数据页一次或分多次提取至缓存中。本专利技术还提供了一种数据库实例恢复装置,包括:页面筛选模块,用于在需要进行实例恢复时,读取并解析重做REDO日志,确定需要重做的数据页;重做模块,用于将所述REDO日志划分为多个队列,为每个队列配置独立线程,多个独立线程并行完成针对各自队列中所述需要重做的数据页的重做操作。优选的,该装置还包括:数据预取模块,用于将所述需要重做的数据页提取至缓存中。优选的,该装置还包括:回滚处理模块,用于在需要写入回滚UNDO日志时,生成与所述UNDO日志实质涉及修改操作对应的REDO日志本专利技术提供了一种数据库实例恢复方法,在需要进行实例恢复时,读取并解析REDO日志,确定需要重做的数据页,然后将所述REDO日志划分为多个队列,为每个队列配置独立线程,多个独立线程并行完成针对各自队列中所述需要重做的数据页的重做操作。解决了实例恢复时效率低下的问题,实现了高效恢复实例。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本专利技术技术方案的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术的技术方案,并不构成对本专利技术技术方案的限制。图1为实例恢复基本框架示意图;图2为本专利技术的一实施例提供的一种数据库实例恢复方法的流程示意图;图3为图2中步骤202的具体流程示意图;图4为基于多线程并行的读取日志实现原理示意图;图5为基于多线程并行的解析日志的原理示意图;图6为预取脏页的流程示意图;图7为并行REDO开始时的线程状态示意图;图8为并行REDO中的子线程等待状态示意图;图9为并行REDO中的主线程等待状态示意图;图10为本专利技术的一实施例提供的一种数据库实例恢复装置的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下文中将结合附图对本专利技术的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。为使本专利技术实施例的目的、技术方案和优点更加清楚,下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。实例恢复过程中,串本文档来自技高网
...

【技术保护点】
1.一种数据库实例恢复方法,其特征在于,包括:在需要进行实例恢复时,读取并解析重做REDO日志,确定需要重做的数据页面数据页;将所述REDO日志划分为多个队列,为每个队列配置独立线程,多个独立线程并行完成针对各自队列中所述需要重做的数据页的重做操作。

【技术特征摘要】
1.一种数据库实例恢复方法,其特征在于,包括:在需要进行实例恢复时,读取并解析重做REDO日志,确定需要重做的数据页面数据页;将所述REDO日志划分为多个队列,为每个队列配置独立线程,多个独立线程并行完成针对各自队列中所述需要重做的数据页的重做操作。2.根据权利要求1所述的数据库实例恢复方法,其特征在于,所述在需要进行实例恢复时,读取并解析REDO日志,确定需要重做的数据页的步骤之前,还包括:在需要写入回滚UNDO日志时,生成与所述UNDO日志实质涉及修改操作对应的REDO日志。3.根据权利要求1或2所述的数据库实例恢复方法,其特征在于,所述在需要进行实例恢复时,读取并解析REDO日志,确定需要重做的数据页的步骤包括:多线程并行读取REDO日志,提取所述REDO日志中的物理日志记录PLR;根据所述PLR的标示符,对所述PLR进行翻译,转换得到各PLR对应的日志记录LR;将所述LR进行链接,存放在新日志结果节点NLRN数据结构中;将所述NLRN按照事务日志序列号LSN的顺序排序,得到日志结果节点LRN链表;依次检查、解析所述LRN链表中的节点,得到所述需要重做的数据页的标识ID;构建脏页表,在所述脏页表中保存所述需要重做的数据页的标识ID。4.根据权利要求3所述的数据库实例恢复方法,其特征在于,所述将所述REDO日志划分为多个队列,为每个队列配置独立线程,多个独立线程并行完成针对所述需要重做的数据页的重做操作的步骤包括:按照所述LSN的顺序将REDO日志写入多个队列,每个队...

【专利技术属性】
技术研发人员:王文庆
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1