数据离线恢复方法、存储介质及设备技术

技术编号:38644999 阅读:13 留言:0更新日期:2023-08-31 18:36
本发明专利技术提供了一种数据离线恢复方法、存储介质及设备。该数据离线恢复方法包括:获取数据文件中待修复的数据块;读取日志文件中与所述数据块对应的page页的日志记录;对所述page页中待修复的日志记录进行重组;修复重组后的日志记录并写入所述数据文件。本发明专利技术的优点是能够数据库服务器不可用的情况下,实现数据的离线恢复,增强了数据库的数据恢复能力。增强了数据库的数据恢复能力。增强了数据库的数据恢复能力。

【技术实现步骤摘要】
数据离线恢复方法、存储介质及设备


[0001]本专利技术涉及数据库
,特别是涉及一种数据离线恢复方法、存储介质及设备。

技术介绍

[0002]主备数据库系统一般包含主数据库、备用数据库及数据备份,当发生故障的时候,主数据库会切换到备用数据库,切换过程中会出现某些场景下的数据丢失,在一些磁盘损毁的场景下,数据库的正常的数据文件也会出现损坏,需要数据库提供数据恢复技术。
[0003]现有的数据恢复技术大体分为两类,依赖数据备份进行数据恢复和依赖日志文件进行数据恢复,即:对现有数据库的数据文件及日志文件整体进行归档,或者采取从日志文件恢复成SQL语句,然后重新执行SQL语句进行数据恢复。
[0004]但是依赖数据备份或者依赖日志文件进行恢复进行恢复,需要在服务器中启动对应的进程,并且查询依赖数据库的组件对日志文件或者备份数据进行解析,都需要数据库处于运行状态。然而某些数据库的数据文件损坏后,会导致数据库服务无法正常启动,造成数据无法修复,因此还有待改善。

技术实现思路

[0005]本专利技术的一个目的是要提供一种克服上述问题或者至少部分地解决上述问题的数据离线恢复方法、存储介质及设备。
[0006]本专利技术的一个进一步的目的是要提高数据恢复的便捷性。
[0007]特别地,根据本专利技术的第一方面,本专利技术提供了一种数据离线恢复方法,包括:
[0008]获取数据文件中待修复的数据块;
[0009]读取日志文件中与所述数据块对应的page页的日志记录;<br/>[0010]对所述page页中待修复的日志记录进行重组;
[0011]修复重组后的日志记录并写入所述数据文件。
[0012]可选地,读取日志文件中与所述数据块对应的page页的日志记录的步骤包括:
[0013]根据所述数据块的大小计算page页的偏移量;
[0014]基于所述偏移量从所述日志文件中查找所述page页;
[0015]读取所述page页的长度,并获取待修复的日志记录;
[0016]计算所述page页的页面边界;
[0017]读取所述页面边界内的所有页面。
[0018]可选地,计算所述page页的页面边界的步骤包括:
[0019]查找第一条日志记录标记的指针;
[0020]根据所述数据块的大小计算所述数据文件中的偏移量;
[0021]基于所述第一条日志记录标记的指针和所述数据文件中的偏移量计算出所述page页的页面边界。
[0022]可选地,对所述page页中待修复的日志记录进行重组的步骤包括:
[0023]根据日志资源类型和日志类型对所述日志记录进行分类;
[0024]忽略所述日志记录的页头并重组为待写入的数据。
[0025]可选地,所述日志资源类型包括第一堆类型、第二堆类型和XACT类型;
[0026]所述日志类型包括增、删、改、热修改、确认、锁、到位、清理、页冻结、可见、锁修改、批量插入、提交和放弃。
[0027]可选地,当所述日志资源类型为第一堆类型时,修复重组后的日志记录并写入所述数据文件的步骤包括:
[0028]若所述日志类型为增,则读取所述日志文件中的page页,更换所述日志记录的头部信息,向所述数据文件中追加数据;
[0029]若所述日志类型为删,则读取所述日志文件中的page页,更新xmax和xmin字段;
[0030]若所述日志类型为改或者热修改,则原数据保留,更新xmax和xmin字段,向所述数据文件追加新数据;
[0031]若所述日志类型为确认,则根据元组偏移量获取页面标识符,获取元组的头部信息,重设所述数据块的id和偏移量,重设页面中的序列号;
[0032]若所述日志类型为锁,当元组被锁定时,清除热更新位,重设所述数据块的id和偏移量,重设xmax和cmax标记位;
[0033]若所述日志类型为到位,则在其原位置采用新数据覆盖旧数据。
[0034]可选地,当所述日志资源类型为第二堆类型时,修复重组后的日志记录并写入所述数据文件的步骤包括:
[0035]若所述日志类型为清理,则获取死亡的item的个数及已经重定向的item的个数,更新所有重定向指针,更新所有已死的行指针,更新所有当前未使用的行指针和修复碎片;
[0036]若所述日志类型为页冻结,则遍历所有冻结元组,设置xvac字段,将冻结的信息写入页面;
[0037]若所述日志类型为可见,则将页面中对应的映射位重置;
[0038]若所述日志类型为锁修改,则获取被锁定的元组在页面上的偏移量,通过日志记录的infomask值修复元组头部的infomask值,将页头中的xmax值设置为日志记录中的xmax值;
[0039]若所述日志类型为批量插入,则循环遍历需要遍历的元组的个数次,取出数据,重新设置头部信息,然后进行插入。
[0040]可选地,当所述日志资源类型为XACT类型时,修复重组后的日志记录并写入所述数据文件的步骤包括:
[0041]若所述日志类型为提交,则解析提交的日志记录,遍历子事务,查找对应的事务id,记录作为结束标志符;
[0042]若所述日志类型为放弃,则解析取消的日志记录,遍历子事务,查找对应的事务id,记录作为结束标志符。
[0043]根据本专利技术的另一个方面,本专利技术提供了一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现上述中任一项所述的数据离线恢复方法。
[0044]根据本专利技术的又一个方面,本专利技术提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现上述中任一项所述的数据离线恢复方法。
[0045]本专利技术的数据离线恢复方法,首先获取数据文件中待修复的数据块,再读取日志文件中与数据块对应的page页的日志记录,然后对page页中待修复的日志记录进行重组,最后修复重组后的日志记录并写入数据文件。本专利技术基于预写式日志记录的信息,在内存中对待修复的日志进行重放,在数据库服务器不可用的情况下,实现数据的离线恢复,增强了数据库的数据恢复能力。
[0046]进一步地,本专利技术的数据离线恢复方法,在对page页中待修复的日志记录进行重组的过程中,先根据日志资源类型和日志类型对日志记录进行分类,然后忽略日志记录的页头并重组为待写入的数据。此种方式可以实现数据的批量修复,提高了数据恢复的便捷性。
[0047]根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。
附图说明
[0048]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据离线恢复方法,包括:获取数据文件中待修复的数据块;读取日志文件中与所述数据块对应的page页的日志记录;对所述page页中待修复的日志记录进行重组;修复重组后的日志记录并写入所述数据文件。2.根据权利要求1所述的数据离线恢复方法,其中,读取日志文件中与所述数据块对应的page页的日志记录的步骤包括:根据所述数据块的大小计算page页的偏移量;基于所述偏移量从所述日志文件中查找所述page页;读取所述page页的长度,并获取待修复的日志记录;计算所述page页的页面边界;读取所述页面边界内的所有页面。3.根据权利要求2所述的数据离线恢复方法,其中,计算所述page页的页面边界的步骤包括:查找第一条日志记录标记的指针;根据所述数据块的大小计算所述数据文件中的偏移量;基于所述第一条日志记录标记的指针和所述数据文件中的偏移量计算出所述page页的页面边界。4.根据权利要求1所述的数据离线恢复方法,其中,对所述page页中待修复的日志记录进行重组的步骤包括:根据日志资源类型和日志类型对所述日志记录进行分类;忽略所述日志记录的页头并重组为待写入的数据。5.根据权利要求4所述的数据离线恢复方法,其中,所述日志资源类型包括第一堆类型、第二堆类型和XACT类型;所述日志类型包括增、删、改、热修改、确认、锁、到位、清理、页冻结、可见、锁修改、批量插入、提交和放弃。6.根据权利要求5所述的数据离线恢复方法,其中,当所述日志资源类型为第一堆类型时,修复重组后的日志记录并写入所述数据文件的步骤包括:若所述日志类型为增,则读取所述日志文件中的page页,更换所述日志记录的头部信息,向所述数据文件中追加数据;若所述日志类型为删,则读取所述日志文件中的page页,更新xmax和xmin字段;若所述日志类型为改或者热修改,则原数据保留,更新xmax和xmin字段,向所述数据文件追加新数据;若所述日志类型为确认,则根据元组偏移量...

【专利技术属性】
技术研发人员:黄德敏李翔
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

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

1