CN110058969A - 一种数据恢复方法及装置 - Google Patents
一种数据恢复方法及装置 Download PDFInfo
- Publication number
- CN110058969A CN110058969A CN201910312573.0A CN201910312573A CN110058969A CN 110058969 A CN110058969 A CN 110058969A CN 201910312573 A CN201910312573 A CN 201910312573A CN 110058969 A CN110058969 A CN 110058969A
- Authority
- CN
- China
- Prior art keywords
- data
- segment point
- point data
- leaf segment
- leaf
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Abstract
本申请公开了一种数据恢复方法及装置,所述方法包括:获取以树结构存储内容数据的损坏文件,所述内容数据存储于所述树结构的叶节点数据;遍历所述树结构中的叶节点数据;当遍历到无效叶节点数据时,跳过所述无效叶节点数据;当遍历到有效叶节点数据时,对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,得到所述损坏文件中的内容恢复数据。利用本申请实施例提供的技术方案可以恢复遭遇损坏的文件中仍然有效的部分数据,降低用户的损失,提高用户体验。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据恢复方法及装置。
背景技术
目前,在数据库恢复,电子数据取证行业对数据库的恢复需求愈发迫切。以MySql为例,MySql的默认存储引擎是InnoDB,相应的,当用于存储Innodb表数据的ibd文件因人为损坏,病毒破坏,磁盘坏道等导致数据文件损坏时,如何能够恢复ibd文件是一个亟需解决的问题。
现有技术,服务器主数据库的ibd文件损坏后,常规的处理方案是切换到备用数据库,使用备用数据库的ibd文件继续工作,但当主备库ibd文件都出现坏块时,MySQL将直接终止服务,ibd文件中的仍然有效的数据无法被恢复,造成巨大的损失,用户体验差。因此,需要提供更可靠或更有效的方案,以恢复损坏文件中有效的部分数据,以降低用户的损失。
发明内容
本申请提供了一种数据恢复方法及装置,可以恢复遭遇损坏的文件中仍然有效的部分数据,降低用户的损失,提高用户体验。
一方面,本申请提供了一种数据恢复方法,所述方法包括:
获取以树结构存储内容数据的损坏文件,所述内容数据存储于所述树结构中按序排列的叶节点数据;
确定所述树结构中的初始有效叶节点数据;
基于所述初始有效叶节点数据遍历所述树结构中的非初始叶节点数据;
对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,得到所述损坏文件中的内容恢复数据。
另一方面提供了一种数据恢复装置,所述装置包括:
损坏文件获取模块,用于获取以树结构存储内容数据的损坏文件,所述内容数据存储于所述树结构中按序排列的叶节点数据;
初始有效叶节点数据确定模块,用于确定所述树结构中的初始有效叶节点数据;
叶节点数据遍历模块,用于基于所述初始有效叶节点数据遍历所述树结构中的非初始叶节点数据;
第一解析处理模块,用于对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,得到所述损坏文件中的内容恢复数据。
另一方面提供了一种数据恢复服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的数据恢复方法。
另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述的数据恢复方法。
另一方面,本申请还提供了一种数据恢复方法,所述方法包括:
获取损坏文件的页数据;
获取所述损坏文件的树结构的层次信息,所述树结构包括存储有所述损坏文件中内容数据的叶节点数据;
遍历所述损坏文件的页数据;
当遍历到的有效页数据在树结构中的层次信息为叶节点时,对所述有效页数据进行解析处理,得到所述损坏文件中的内容恢复数据。
另一方面提供了一种数据恢复装置,所述装置包括:
页数据获取模块,用于获取损坏文件的页数据;
层次信息获取模块,用于获取所述损坏文件的树结构的层次信息,所述树结构包括存储有所述损坏文件中内容数据的叶节点数据;
页数据遍历模块,用于遍历所述损坏文件的页数据;
第二解析处理模块,用于当所述页数据遍历模块遍历到的有效页数据在树结构中的层次信息为叶节点时,对所述有效页数据进行解析处理,得到所述损坏文件中的内容恢复数据。
另一方面提供了一种数据恢复服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的数据恢复方法。
另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述的数据恢复方法。
本申请提供的数据恢复方法及装置,具有如下技术效果:
本申请在文件损坏时,结合存储损坏文件中内容数据的树结构的结构特性,先获取树结构中的初始有效叶节点数据,然后,基于所述初始有效叶节点数据遍历所述树结构中存储有内容数据的全部叶节点数据;并对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,以恢复损坏文件中的未损坏部分的内容数据。利用本说明书实施例提供的技术方案可以恢复遭遇损坏的ibd文件等中仍然有效的部分数据,降低用户的损失,提高用户体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种应用环境的示意图;
图2是本申请实施例提供的一种数据恢复方法的流程示意图;
图3是本申请实施例提供的一种树结构的具体结构的示意图;
图4是本申请实施例提供的一种确定所述树结构中的初始有效叶节点数据的流程示意图;
图5是本申请实施例提供的一种基于所述初始有效叶节点数据遍历所述树结构中的非初始叶节点数据的流程示意图;
图6是本申请实施例提供的一种跳过无效叶节点数据的流程示意图;
图7是本申请实施例提供的另一种跳过无效叶节点数据的示意图;
图8是本申请实施例提供的一种遍历树结构的流程示意图;
图9是本申请实施例提供的另一种数据恢复方法的流程示意图;
图10是本申请实施例提供的另一种数据恢复方法的流程示意图;
图11是本申请实施例提供的另一种数据恢复方法的流程示意图;
图12是本申请实施例提供的一种数据恢复装置的结构示意图;
图13是本申请实施例提供的另一种数据恢复装置的结构示意图;
图14是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,图1是本申请实施例提供的一种应用环境的示意图,如图1所示,该应用环境可以至少包括网络节点01、主数据库02和备用数据库03。
具体的,网络节点01可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。
具体的,所述主数据库02和所述备用数据库03可以包括但不限于关系型数据库MySQL。
在实际应用中,所述主数据库02和所述备用数据库03可以为所述网络节点01侧的两个数据库。
以下介绍本申请一种数据恢复方法,图2是本申请实施例提供的一种数据恢复方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
S201:获取以树结构存储内容数据的损坏文件。
本说明书实施例中,所述损坏文件可以包括部分内容数据被损坏的文件,具体的,所述损坏文件可以包括一页一页的页数据,例如损坏的ibd文件。具体,当所述损坏文件包括ibd文件时,损坏文件的内容数据可以包括Innodb表数据中每行的内容数据。
本说明书实施例中,树结构可以包括损坏文件存储一页一页的数据的结构,一般的,以树结构存储内容数据的损坏文件可以包括多层数据,上下两层数据之间存在父子关系。具体的,以树结构存储内容数据的损坏文件可以包括三层数据,依次为第一层的根节点数据,第二层的内节点数据和第三层的叶节点数据。相应的,第二层的内节点数据与第三层的叶节点数据之间存在父子关系;第二层的内节点数据为第三层的叶节点数据的父节点数据,第三层的叶节点数据与第二层的内节点数据的子节点数据。父节点数据中可以存储有子节点数据的位置信息。
本说明书实施例中,所述根节点数据可以包括第一节点指针数据,第一节点指针数据表征所述根节点数据的下一层(第二层)的内节点数据(子节点数据)的位置信息,所述内节点数据可以包括第二节点指针数据,所述第二节点指针数据可以表征所述内节点数据的下一层(第三层)的叶节点数据(子节点数据)的位置信息,所述叶节点数据存储有所述损坏文件的内容数据。具体的,所述树结构可以包括但不限于B+树结构。
在一个具体的实施例中,如图3所示,以ibd文件以B+树结构存储内容数据为例,ibd文件一个页数据对应B+树结构中一个节点数据,从图中可见,所述树结构的第一层为一个根节点数据,该根节点数据对应着两个内节点数据,相应的,该根节点数据中记录中两个内节点数据的位置信息:第一节点指针数据A和第一节点指针数据B),根据第一节点指针数据A和第一节点指针数据B可以分别定位到内节点数据,图中,每个内节点数据各对应着四个叶节点数据,相应的,两个内节点数据中分别记录着各自所对应的叶节点数据的位置信息:第二节点指针数据A1、第二节点指针数据A2、第二节点指针数据A3、第二节点指针数据A4,以及第二节点指针数据B1、第二节点指针数据B2、第二节点指针数据B3、第二节点指针数据B4;进一步的,根据这些第二节点指针数据可以定位到相应的叶节点数据为:A10、A20、A30、A40、B10、B20、B30、B40。
上述图中可见,第一层的根节点数据和第二层的内节点数据中存储都是下一层数据的位置信息。
在实际应用中,树结构中的叶节点数据间往往具有一定的顺序性,相应的,如图3所示,按序排序后的叶节点数据为叶节点数据依次为A10、A20、A30、A40、B10、B20、B30、B40,叶节点数据还可以包括双向链表指针数据(图3中两个叶节点数据间双向箭头),该双向链表指针数据包括第一链表指针数据和第二链表指针数据,如图3中叶节点数据A20和A30之间的双向链表指针数据为例,由A20指向A30的为A20的第一链表指针数据,相应的,所述第一链表指针数据可以表征当前叶节点数据的下一叶节点数据的位置信息。由A30指向A20的为A30的第二链表指针数据,相应的,所述第二链表指针数据可以表征当前叶节点数据的上一叶节点数据的位置信息。
本说明书实施例中,在需要恢复损坏文件中部分未损坏的内容数据时,通过获取以树结构存储内容数据的损坏文件,以便可以基于树结构快速定位到损坏文件中的内容数据,提高数据恢复处理的效率。
S203:确定所述树结构中的初始有效叶节点数据。
本说明书实施例中,树结构中的叶节点数据存储有损坏文件的内容数据,相应的,可以确定所述树结构中的初始有效叶节点数据;具体的,如图4所示,确定所述树结构中的初始有效叶节点数据可以包括:
S2031:确定所述树结构中的根节点数据。
在实际应用中,树结构中的根节点数据一般位于损坏文件中的固定位置,以ibd文件为例,ibd文件包括一页一页的页数据。假设ibd文件一共是10000页,从第1页到10000页,中间有很多空洞页(存储非内容数据的页)。B+树的根节点数据一般位于第三页(固定位置),相应的,可以直接读取第三页的根节点数据,以得到所述树结构的根节点数据。
S2033:基于所述第一节点指针数据确定所述根节点数据的初始有效内节点数据。
在实际应用中,树结构第二层的内节点数据的位置信息一般会写在根结点数据中的第一节点指针数据,相应的,在确定根节点数据之后,就可以确定内节点数据的位置信息,进而找到内节点数据。
具体的,根节点数据往往对应着多个内节点数据,且多个内节点数据件具有一定的顺序性,相应的,可以按序确定出内节点数据,在确定出内节点数据之后,可以判断该内节点数据是否有效。具体的,判断内节点数据是否有效可以包括:
1)基于内节点数据计算所述内节点数据的校验值。
在实际应用中,内节点数据本身是二进制数据,可以基于读取的内节点数据本身的二进制数据,按照设定的算法来计算该内节点数据的校验值。
2)获取所述内节点数据对应的页头中的初始校验值。
本说明书实施例中,每一内节点数据对应着损坏文件中某一页的页数据。在每一页的页头中往往存储有基于该页的内容(内节点数据)计算得到的初始校验值,这里计算初始校验值的算法与上述计算遍历到的叶节点数据的校验值所采用的算法一致。
3)判断所述校验值与所述初始校验值是否一致。
4)当判断的结果为是时,确定所述叶节点数据为有效叶节点数据。
5)当判断的结果为否时,确定所述叶节点数据为无效叶节点数据。
本说明书实施例中,通过将内节点数据的初始校验值与基于文件损坏后获取到的内节点数据重新计算的校验值进行比较,当两者一致时,可以确定内节点数据未发生变化,相应的,该内节点数据为有效内节点数据;反之,内节点数据发生了变化,所述内节点数据为无效内节点数据。
本说明书实施例中,在按序确定出内节点数据时,可以将确定出的第一个有效内节点数据作为所述初始有效内节点数据。
S2035:基于所述第二节点指针数据确定所述树结构中的初始有效叶节点数据。
在实际应用中,树结构第三层的叶节点数据的位置信息会写在上一层(第二层)的内节点数据中的第二节点指针数据,相应的,在确定初始有效内节点数据之后,可以确定出叶节点数据的位置信息,进而找到叶节点数据,这里结合图3所示的,内节点数据中可以包括多个叶节点数据的位置信息(第二节点指针数据),一般的,内节点数据中多个第二节点指针数据间也存在一定的顺序性,且第二节点指针数据间的顺序与叶节点数据间的顺序一致。相应的,可以按序获取第二节点指针数据对应的叶节点数据,在确定出叶节点数据之后,可以判断该叶节点数据是否有效。具体的,判断叶节点数据是否有效可以包括:
1)基于叶节点数据计算所述叶节点数据的校验值。
本说明书实施例中,叶节点数据本身可以是二进制数据,可以基于读取的叶节点数据本身的二进制数据按照设定的算法来计算该叶节点数据的校验值。
2)获取所述叶节点数据对应的页头中的初始校验值。
本说明书实施例中,树结构中的叶节点数据也对应着损坏文件中的每一页,在每一页的页头中往往存储有基于该页的内容(叶节点数据)计算得到的初始校验值,这里计算初始校验值的算法与上述计算遍历到的叶节点数据的校验值所采用的算法一致。
3)判断所述校验值与所述初始校验值是否一致。
4)当判断的结果为是时,确定所述叶节点数据为有效叶节点数据。
5)当判断的结果为否时,确定所述叶节点数据为无效叶节点数据。
本说明书实施例中,通过将叶节点数据的初始校验值与基于遍历到的叶节点数据重新计算的校验值进行比较,当两者一致时,可以确定叶节点数据为发送变化,相应的,该叶节点数据为有效叶节点数据;反之,叶节点数据发生了变化,所述叶节点数据为无效叶节点数据。
本说明书实施例中,在按序确定出叶节点数据时,可以将确定出的第一个有效叶节点数据作为所述初始有效内节点数据。
S205:基于所述初始有效叶节点数据遍历所述树结构中的非初始叶节点数据。
本说明书实施例中,基于树结构的结构特性,可以查找到存储有损坏文件的内容数据的叶节点数据,以便可以直接对损坏文件的内容数据是否损坏进行判断。
具体的,所述非初始叶节点数据可以包括树结构中除了初始有效叶节点数据以外的叶节点数据。在实际应用中,叶节点数据中链表指针数据可以表征当前叶节点数据的上一和下一叶节点数据的位置信息,相应的,在得到初始有效叶节点数据之后,可以结合叶节点数据中的链表指针数据来依次获取上一和下一叶节点数据。
具体的,如图5所示,所述基于所述初始有效叶节点数据遍历所述树结构中的非初始叶节点数据可以包括:
S2051:判断所述初始有效叶节点数据之前是否存在未遍历叶节点数据。
S2053:若否,基于第一链表指针数据依次遍历所述初始有效叶节点数据之后的叶节点数据。
具体的,所述基于第一链表指针数据依次遍历所述初始有效叶节点数据之后的叶节点数据可以包括:
1)在遍历到每一叶节点数据时,判断所述叶节点数据是否有效。
具体的,这里判断叶节点数据是否有效,可以参见上述相关步骤,在此不再赘述。
2)当遍历到有效叶节点数据时,基于所述有效叶节点数据的第一链表指针数据遍历所述有效叶节点数据的下一叶节点数据。
在实际应用中,当叶节点数据为有效叶节点数据时,该有效叶节点数据中的第一链表指针数据也有效,相应的,可以直接基于第一链表指针数据确定出下一叶节点数据。
3)当遍历到无效叶节点数据时,跳过所述无效叶节点数据。
本说明书实施例中,当遍历到无效叶节点数据时,可以跳过该无效叶节点数据。具体的,结合图6,介绍本说明书几种跳过无效叶节点数据的实施例。具体的,可以包括:
S601:当遍历到无效叶节点数据时,判断所述无效叶节点数据的第一链表指针数据是否有效。
在实际应用中,叶节点数据是否有效是基于全部的叶节点数据来确定的,相应的,当确定书叶节点数据为无效叶节点数据时,该叶节点数据中可能存在部分数据被损坏,被损坏的部分数据可能包括第一链表指针数据,也可能不包括第一链表指针数据,相应的,可以对第一链表指针数据是否有效进行判断。
本说明书实施例中,判断某一叶节点数据X的第一链表指针数据是否有效,可以判断该叶节点数据X的第一链表指针数据所指向叶节点数据的第二链表指针数据所指向的是否为该某一叶节点数据X,若是,可以确定该叶节点数据X的第一链表指针数据有效;反之,确定该叶节点数据X的第一链表指针数据无效。
S603:当判断的结果为是时,基于所述第一链表指针数据跳转至所述无效叶节点数据的下一叶节点数据。
具体的,当第一链表指针数据有效,可以获取该第一链表指针数据所对应的下一叶节点数据的位置信息,进而跳过当前的无效叶节点数据,遍历下一叶节点数据。
S605:当判断的结果为否时,跳回至所述无效叶节点数据的上一有效叶节点数据的内节点数据,所述内节点数据包括表征所述内节点数据叶节点数据的位置信息的第二节点指针数据。
本说明书实施例中,当第一链表指针数据无效时,可以直接跳回到当前的无效叶节点数据的上一有效叶节点数据的父节点数据,这里叶节点数据的父节点数据即为内节点数据。
S607:基于内节点数据中的第二节点指针数据跳转至所述无效叶节点数据的下一叶节点数据。
本说明书实施例中,内节点数据中包括按序排列的多个叶节点数据的位置信息(第二节点指针数据),相应的,可以直接基于内节点数据中第二节点指针数据跳过该无效叶节点数据,遍历该无效叶节点数据的下一叶节点数据。
在另一些实施例中,如图6所示,在跳回至所述无效叶节点数据的上一有效叶节点数据的内节点数据之前,所述方法还可以包括:
S609:判断所述无效叶节点数据的上一有效叶节点数据的内节点数据是否有效。
在实际应用中,内节点数据也存在损坏的情况,相应的,在跳回至所述无效叶节点数据的上一有效叶节点数据的内节点数据之前,可以对无效叶节点数据的上一有效叶节点数据的内节点数据是否有效进行判断。当判断出无效叶节点数据的上一有效叶节点数据的内节点数据为有效内节点数据时,可以执行S605。反之,执行步骤S611。
S611:若否,跳转至所述上一有效叶节点数据的内节点数据之后的有效内节点数据。
本说明书实施例中,当无效叶节点数据的上一有效叶节点数据的内节点数据为无效内节点数据时,可以跳转至所述上一有效叶节点数据的内节点数据之后的有效内节点数据。具体的,可以跳回至根节点数据,进而根据根节点数据中的第一节点指针数据来确定上一有效叶节点数据的内节点数据之后的有效内节点数据。
S613:基于所述第二节点指针数据确定所述树结构中的初始有效叶节点数据。
本说明书实施例中,有效内节点数据包括表征所述有效内节点对应的叶节点数据的位置信息的第二节点指针数据,相应的,可以基于所述第二节点指针数据重新确定树结构中的初始有效叶节点数据,使劲跳过该无效叶节点数据。具体的,这里重新确定树结构中的初始有效叶节点数据可以参见上述相关步骤在此不再赘述。
在另一些实施例中,结合图5所述,当判断出所述初始有效叶节点数据之前存在未遍历叶节点数据时,所述方法还可以包括:
S2055:基于第二链表指针数据依次遍历所述初始有效叶节点数据之前的未遍历叶节点数据。
具体的,所述基于第一链表指针数据依次遍历所述初始有效叶节点数据之后的叶节点数据可以包括:
1)在遍历到每一叶节点数据时,判断所述叶节点数据是否有效。
具体的,这里判断叶节点数据是否有效,可以参见上述相关步骤,在此不再赘述。
2)当遍历到有效叶节点数据时,基于所述有效叶节点数据的第二链表指针数据遍历所述有效叶节点数据的上一叶节点数据。
在实际应用中,当叶节点数据为有效叶节点数据时,该有效叶节点数据中的第二链表指针数据也有效,相应的,可以直接基于第二链表指针数据确定出上一叶节点数据。
3)当遍历到无效叶节点数据时,跳过所述无效叶节点数据。
本说明书实施例中,当遍历到无效叶节点数据时,可以跳过该无效叶节点数据。具体的,结合图7,介绍本说明书几种跳过无效叶节点数据的实施例。具体的,可以包括:
S701:当遍历到无效叶节点数据时,判断所述无效叶节点数据的第二链表指针数据是否有效。
在实际应用中,叶节点数据是否有效是基于全部的叶节点数据来确定的,相应的,当确定书叶节点数据为无效叶节点数据时,该叶节点数据中可能存在部分数据被损坏,被损坏的部分数据可能包括第二链表指针数据,也可能不包括第二链表指针数据,相应的,可以对第二链表指针数据是否有效进行判断。
本说明书实施例中,判断某一叶节点数据X的第二链表指针数据是否有效,可以判断该叶节点数据X的第二链表指针数据所指向叶节点数据的第一链表指针数据所指向的是否为该某一叶节点数据X,若是,可以确定该叶节点数据X的第二链表指针数据有效;反之,确定该叶节点数据X的第二链表指针数据无效。
S703:当判断的结果为是时,基于所述第二链表指针数据跳转至所述无效叶节点数据的上一叶节点数据。
具体的,当第二链表指针数据有效,可以获取该第二链表指针数据所对应的上一叶节点数据的位置信息,进而跳过当前的无效叶节点数据,遍历上一叶节点数据。
S705:当判断的结果为否时,跳回至所述无效叶节点数据的下一有效叶节点数据的内节点数据,所述内节点数据包括表征所述内节点数据的叶节点数据的位置信息的第二节点指针数据。
本说明书实施例中,当第二链表指针数据无效时,可以直接跳回到当前的无效叶节点数据的下一有效叶节点数据的父节点数据,这里叶节点数据的父节点数据即为内节点数据。
S707:基于内节点数据中的第二节点指针数据跳转至所述无效叶节点数据的上一叶节点数据。
本说明书实施例中,内节点数据中包括按序排列的多个叶节点数据的位置信息(第二节点指针数据),相应的,可以直接基于内节点数据中第二节点指针数据跳过该无效叶节点数据,遍历该无效叶节点数据的上一叶节点数据。
在另一些实施例中,如图7所示,在跳回至所述无效叶节点数据的下一有效叶节点数据的内节点数据之前,所述方法还可以包括:
S709:判断所述无效叶节点数据的下一有效叶节点数据的内节点数据是否有效。
在实际应用中,内节点数据也存在损坏的情况,相应的,在跳回至所述无效叶节点数据的下一有效叶节点数据的内节点数据之前,可以对无效叶节点数据的下一有效叶节点数据的内节点数据是否有效进行判断。
S711:若否,跳转至所述下一有效叶节点数据的内节点数据之后的有效内节点数据。
本说明书实施例中,当无效叶节点数据的下一有效叶节点数据的内节点数据为无效内节点数据时,可以跳转至所述下一有效叶节点数据的内节点数据之后的有效内节点数据。具体的,可以跳回至根节点数据,进而根据根节点数据中的第一节点指针数据来确定下一有效叶节点数据的内节点数据之前的有效内节点数据。
S713:基于所述第二节点指针数据确定所述树结构中的初始有效叶节点数据。
具体的,这里重新确定树结构中的初始有效叶节点数据可以参见上述相关步骤在此不再赘述。
在一个具体的实施例中,如图8所示,从图8可见,基于有效根节点数据3中的第一节点指针数据可以按序先确定出内节点数据36,在判断出内节点数据36为无效内节点数据后,可以确定出下一内节点数据37,在确定出内节点数据37有效时,可以将内节点数据37作为初始有效内节点数据;接着,可以基于该初始有效内节点数据37中的第二节点指针数据按序先确定出叶节点数据592,在判断出叶节点数据592为初始有效叶节点数据时,由于该初始有效叶节点数据592之前和之后都存在叶节点数据,相应的,可以基于第一链表指针数据依次遍历初始有效叶节点数据592之后的叶节点数据;另外,可以基于第二链表指针数据依次遍历初始有效叶节点数据592之前的叶节点数据。
进一步的,结合图8可见,当第一链表指针数据被损坏时,路径100中,在遍历到无效叶节点数据600时,由于第一链表指针数据无效,故而需要跳回至无效叶节点数据的上一有效叶节点数据的父节点数据(内节点数据37),进而基于父节点数据中的第二节点指针数据跳过无效叶节点数据。路径100中,在遍历到无效叶节点数据611和612时,由于第一链表指针数据有效,故而可以直接通过第一链表指针数据跳过无效叶节点数据611和612。
进一步的,结合图8可见,在遍历到无效叶节点数据1720时,由于第一链表指针数据无效,且该无效叶节点数据1720的上一有效叶节点数据的父节点数据(内节点数据38)也无效,相应的,可以重新确定内节点数据39为初始有效内节点数据,进而重新确定出初始有效叶节点数据1722。然后,再基于该初始有效叶节点数据1722遍历所述树结构中剩余的叶节点数据。
本说明书实施例中,在遍历存储有损坏文件内容数据的叶节点数据时,遇到无效叶节点数据时,结合树结构中的结构特性可以直接跳过无效叶节点数据。
S207:对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,得到所述损坏文件中的内容恢复数据。
在实际应用中,当遍历到有效叶节点数据时,由于损坏文件的内容数据是按照一定格式存储在叶节点数据中的,相应的,可以结合内容数据存储格式解析有效叶节点数据,得到其中的内容数据,进而实现对损坏文件中未损坏部分内容的恢复。
由以上述本说明书实施例提供的技术方案可见,本说明书在文件损坏时,结合存储损坏文件中内容数据的树结构的结构特性,先获取树结构中的初始有效叶节点数据,然后,基于所述初始有效叶节点数据遍历所述树结构中存储有内容数据的全部叶节点数据;并对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,以恢复损坏文件中的未损坏部分的内容数据。利用本说明书实施例提供的技术方案可以恢复遭遇损坏的ibd文件等中仍然有效的部分数据,降低用户的损失,提高用户体验。
在一些实施例中,在步骤S207之后,如图9所示,所述方法还可以包括:
S209:基于预设数据结构信息将所述内容恢复数据转换成结构化查询数据。
在实际应用中,内容数据往往以SQL(Structured Query Language,结构化查询语言)写入数据库中,且文件的内容数据间也往往存在相应的数据结构信息,本说明书实施例中,可以基于预设数据结构信息将所述内容恢复数据转换成结构化查询数据。具体的,所述预设数据结构信息可以为损坏文件所对应的未损坏文件的数据结构信息。
在实际应用中,主数据库中和备用数据库中往往会存储有同一份文件,相应的,所述损坏文件可以包括主数据库中的第一损坏文件和/或备份数据库中的第二损坏文件。
在实际应用中,当主数据和备用数据中同一份文件均发生损坏时,由于在不同的数据库中,文件的损坏情况往往不同,相应的,当所述损坏文件包括主数据库中的第一损坏文件和备份数据库中的第二损坏文件时,且所述第一损坏文件与所述第二损坏文件包括同一目标文件(第一损坏文件和第二损坏文件未损坏前的文件)所对应的具有不同无效叶节点数据的损坏文件时,可以基于两个数据库中损坏文件的内容恢复数据来恢复完整的损坏文件,具体的,如图10所示,所述方法可以包括:
S1001:获取以树结构存储内容数据的损坏文件,所述损坏文件包括主数据库中的第一损坏文件和备用数据库中的第二损坏文件。
S1003:分别确定第一损坏文件的树结构中的初始有效叶节点数据和第二损坏文件的树结构中的初始有效叶节点数据。
S1005:分别基于第一损坏文件和第二损坏文件的初始有效叶节点数据遍历树结构中的非初始叶节点数据。
S1007:对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,得到所述第一损坏文件中的内容恢复数据和第二损坏文件中的内容恢复数据。
S1009:基于预设数据结构信息将所述第一损坏文件中的内容恢复数据和所述第二损坏文件中的内容恢复数据分别转换成结构化查询数据。
S1011:基于第一损坏文件对应的结构化查询数据和第二损坏文件对应的结构化查询数据,生成目标文件对应的结构化查询数据。
在实际应用中,由于第一损坏文件和第二损坏文件对应的损坏内容数据不同,相应的,可以基于第一损坏文件对应的结构化查询数据和第二损坏文件对应的结构化查询数据,还原得到目标文件对应的结构化查询数据。
S1013:基于所述目标文件的预设数据结构信息将所述目标文件对应的结构化查询数据转换成所述目标文件。
具体的,在得到目标文件对应的结构化查询数据之后,可以结合目标文件的预设数据结构信息,将结果化查询数据转换成目标文件,实现对损坏文件的完整恢复。
由以上本说明书实施例提供的技术方案可见,本说明书实施例中存储损坏文件中内容数据的树结构的结构特性,获取主备数据库中具有不同损坏情况的损坏文件,遍历树结构中存储有内容数据的全部叶节点数据,并对全部有效叶节点数据进行解析处理,实现对准备数据库中损坏文件中未损坏部分的内容数据的恢复,然后,将内容数据转换成结构化查询数据,并基于主备两个数据库中损坏文件所对应的结构化查询数据还原成目标文件的结构化查询数据,并结合数据结构信息实现对损坏文件的完整恢复。
本申请还提供另一种数据恢复方法,图11是本申请实施例提供的另一种数据恢复方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图11所示,所述方法可以包括:
S1101:获取损坏文件的页数据。
本说明书实施例中,所述损坏文件可以包括部分内容数据被损坏的文件,具体的,所述损坏文件可以包括一页一页的页数据。例如损坏的ibd文件。本说明书实施例中,可以直接获取损坏文件全部的页数据;损坏文件的页数据包括存储有内容数据的页数据和存储非内容数据的页数据。
S1103:获取所述损坏文件的树结构的层次信息,所述树结构包括存储有所述损坏文件中内容数据的叶节点数据。
本说明书实施例中,所述损坏文件的树结构可以参见上述相关描述,在此不再赘述。具体的,如上所述,树结构可以包括三层数据,分别为:第一层的根节点数据、第二层的内节点数据和第三层的叶节点数据。本说明书实施例中,树结构的层次信息可以表征树结构中的数据属于内一层的节点数,具体的,所述层次信息可以包括根节点、内节点和叶节点。相应的,当树结构中根节点数据的层次信息为根节点,内节点数据的层次信息为内节点,叶节点数据的层次信息为叶节点。
S1105:遍历所述损坏文件的页数据。
本说明书实施例中,由于损坏文件本身就是由一页一页的页数据组成,相应的,可以按序依次遍历损坏文件的每一页的页数据。
S1107:当遍历到的有效页数据在树结构中的层次信息为叶节点时,对所述有效页数据进行解析处理,得到所述损坏文件中的内容恢复数据。
本说明书实施例中判断页数据是否有效与上述判断叶节点数据是否有效的方式一致,在此不再赘述。
在实际应用中,存储页数据对应着树结构中的叶节点数据时,该页数据在树结构中的层次信息为叶节点时,即该页数据为存储有内容数据的页数据,相应的,对所述有效页数据进行解析处理,得到所述损坏文件中的内容恢复数据。具体的,当页数据对应着树结构中的叶节点数据时,页数据即为树结构中的叶节点数据,相应的,对页数据的解析处理可以参见上述对叶节点数据的解析处理的相关描述,在此不再赘述。
进一步的,为了将恢复后的内容恢复数据直接写入数据库,可参见上述将内容恢复数据转换成结构化查询数据的相关描述,实现内容恢复数据的入库。
进一步的,上述图11所对应实施例中的损坏文件也可以包括主数据库中的第一损坏文件和/或备份数据库中的第二损坏文件。相应的,可以结合上述同一目标文件对应的主备数据库中不同损坏情况的损坏文件实现对损坏文件的完整恢复。具体的恢复步骤可以参见上述相关步骤,再次不再赘述。
由以上本说明书实施例提供的技术方案可见,本说明书通过在文件损坏时,直接遍历损坏文件的全部页数据,同时,结合树结构中只有叶节点数据存储有损坏文件的内容数据的特性,直接对获取的与叶节点数据对应的有效页数据进行解析处理,可以恢复损坏文件中的未损坏部分的内容数据。利用本说明书实施例提供的技术方案可以恢复遭遇损坏的ibd文件等中仍然有效的部分数据,降低用户的损失,提高用户体验。
本申请实施例还提供了一种数据恢复装置,如图12所示,所述装置包括:
损坏文件获取模块1210,可以用于获取以树结构存储内容数据的损坏文件,所述内容数据存储于所述树结构中按序排列的叶节点数据;
初始有效叶节点数据确定模块1220,可以用于确定所述树结构中的初始有效叶节点数据;
叶节点数据遍历模块1230,可以用于基于所述初始有效叶节点数据遍历所述树结构中的非初始叶节点数据;
第一解析处理模块1240,可以用于对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,得到所述损坏文件中的内容恢复数据。
在一些实施例中,所述初始有效叶节点数据确定模块1220可以包括:
根节点数据确定单元,用于确定所述树结构中的根节点数据,所述根节点数据包括表征所述根节点的内节点数据的位置信息的第一节点指针数据;
初始有效内节点数据确定单元,用于基于所述第一节点指针数据确定所述根节点数据的初始有效内节点数据,所述初始有效内节点数据包括表征所述初始有效内节点对应的叶节点数据的位置信息的第二节点指针数据;
第一初始有效叶节点数据确定单元,用于基于所述第二节点指针数据确定所述树结构中的初始有效叶节点数据。
在一些实施例中,所述叶节点数据遍历模块1230可以包括:
第一判断单元,用于判断所述初始有效叶节点数据之前是否存在未遍历叶节点数据;
第一遍历单元,用于当第一判断单元判断的结果为否时,基于第一链表指针数据依次遍历所述初始有效叶节点数据之后的叶节点数据,所述第一链表指针数据表征当前叶节点数据的下一叶节点数据的位置信息;
在一些实施例中,所述第一遍历单元可以包括:
第二判断单元,用于在遍历到每一叶节点数据时,判断所述叶节点数据是否有效;
第二遍历单元,用于当遍历到有效叶节点数据时,基于所述有效叶节点数据的第一链表指针数据遍历所述有效叶节点数据的下一叶节点数据;
第一叶节点跳过单元,用于当遍历到无效叶节点数据时,跳过所述无效叶节点数据。
在一些实施例中,所述第一叶节点跳过单元包括:
第三判断单元,用于当遍历到无效叶节点数据时,判断所述无效叶节点数据的第一链表指针数据是否有效;
第一跳转单元,用于当所述第三判断单元判断的结果为是时,基于所述第一链表指针数据跳转至所述无效叶节点数据的下一叶节点数据;
第二跳转单元,用于当所述第三判断单元判断的结果为否时,跳回至所述无效叶节点数据的上一有效叶节点数据的内节点数据,所述内节点数据包括表征所述内节点数据叶节点数据的位置信息的第二节点指针数据;
第三跳转单元,用于基于内节点数据中的第二节点指针数据跳转至所述无效叶节点数据的下一叶节点数据。
在一些实施例中,所述第一叶节点跳过单元还可以包括:
第四判断单元,用于在跳回至所述无效叶节点数据的上一有效叶节点数据的内节点数据之前,判断所述无效叶节点数据的上一有效叶节点数据的内节点数据是否有效;
第三跳转单元,用于当第四判断单元判断的结果为否时,跳转至所述上一有效叶节点数据的内节点数据之后的有效内节点数据,所述有效内节点数据包括表征所述有效内节点对应的叶节点数据的位置信息的第二节点指针数据;
第二初始有效叶节点数据确定单元,用于基于所述第二节点指针数据确定所述树结构中的初始有效叶节点数据。
在一些实施例中,所述叶节点数据遍历模块1230还可以包括:
第三遍历单元,用于当判断出所述初始有效叶节点数据之前存在未遍历叶节点数据时,基于第二链表指针数据依次遍历所述初始有效叶节点数据之前的未遍历叶节点数据,所述第二链表指针数据表征所述当前叶节点数据的上一叶节点数据的位置信息。
在一些实施例中,所述第三遍历单元可以包括:
第五判断单元,用于在遍历到每一叶节点数据时,判断所述叶节点数据是否有效;
第四遍历单元,用于当遍历到有效叶节点数据时,基于所述有效叶节点数据的第二链表指针数据遍历所述有效叶节点数据的上一叶节点数据;
第二叶节点跳过单元,用于当遍历到无效叶节点数据时,跳过所述无效叶节点数据。
在一些实施例中,所述第二叶节点跳过单元包括:
第六判断单元,用于当遍历到无效叶节点数据时,判断所述无效叶节点数据的第二链表指针数据是否有效;
第四跳转单元,用于当所述第六判断单元判断的结果为是时,基于所述第二链表指针数据跳转至所述无效叶节点数据的上一叶节点数据;
第五跳转单元,用于当所述第六判断单元判断的结果为否时,跳回至所述无效叶节点数据的下一有效叶节点数据的内节点数据,所述内节点数据包括表征所述内节点数据的叶节点数据的位置信息的第二节点指针数据;
第六跳转单元,用于基于内节点数据中的第二节点指针数据跳转至所述无效叶节点数据的上一叶节点数据。
在一些实施例中,所述第二叶节点跳过单元还可以包括:
第七判断单元,用于在跳回至所述无效叶节点数据的下一有效叶节点数据的内节点数据之前,判断所述无效叶节点数据的下一有效叶节点数据的内节点数据是否有效;
第七跳转单元,用于当所述第七判断单元判断的结果为否时,跳转至所述下一有效叶节点数据的内节点数据之后的有效内节点数据,所述有效内节点数据包括表征所述有效内节点对应的叶节点数据的位置信息的第二节点指针数据;
第三初始有效叶节点数据确定单元,用于基于所述第二节点指针数据确定所述树结构中的初始有效叶节点数据。
在一些实施例中,所述装置还包括:
第一数据转换模块,用于基于预设数据结构信息将所述内容恢复数据转换成结构化查询数据。
在一些实施例中,当所述损坏文件包括主数据库中的第一损坏文件和备份数据库中的第二损坏文件时,所述第一损坏文件与所述第二损坏文件包括同一目标文件所对应的具有不同无效叶节点数据的损坏文件,所述装置还包括:
结构化查询数据生成模块,用于基于第一损坏文件对应的结构化查询数据和第二损坏文件对应的结构化查询数据,生成目标文件对应的结构化查询数据;
第二数据转换模块,用于基于所述目标文件的预设数据结构信息将所述目标文件对应的结构化查询数据转换成所述目标文件。
所述的装置实施例中的装置与相应的方法实施例基于同样地申请构思。
本申请实施例提供了一种数据恢复服务器,该数据恢复服务器包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的数据恢复方法。
本申请的实施例还提供了一种存储介质,所述存储介质可设置于服务器之中以保存用于实现方法实施例中一种数据恢复方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的数据恢复方法。
本申请实施例还提供了一种数据恢复装置,如图13所示,所述装置可以包括:
页数据获取模块1310,可以用于获取损坏文件的页数据;
层次信息获取模块1320,可以用于获取所述损坏文件的树结构的层次信息,所述树结构包括存储有所述损坏文件中内容数据的叶节点数据;
页数据遍历模块1330,可以用于遍历所述损坏文件的页数据;
第二解析处理模块1340,可以用于当所述页数据遍历模块遍历到的有效页数据在树结构中的层次信息为叶节点时,对所述有效页数据进行解析处理,得到所述损坏文件中的内容恢复数据。
所述的装置实施例中的装置与方法实施例基于同样地申请构思。
本申请实施例提供了一种数据恢复服务器,该数据恢复服务器包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的数据恢复方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请的实施例还提供了一种存储介质,所述存储介质可设置于服务器之中以保存用于实现方法实施例中一种数据恢复方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的数据恢复方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图14是本申请实施例提供的一种数据恢复方法的服务器的硬件结构框图。如图14所示,该服务器1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)1410(处理器1410可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1430,一个或一个以上存储应用程序1423或数据1422的存储介质1420(例如一个或一个以上海量存储设备)。其中,存储器1430和存储介质1420可以是短暂存储或持久存储。存储在存储介质1420的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1410可以设置为与存储介质1420通信,在服务器1400上执行存储介质1420中的一系列指令操作。服务器1400还可以包括一个或一个以上电源1460,一个或一个以上有线或无线网络接口1450,一个或一个以上输入输出接口1440,和/或,一个或一个以上操作系统1421,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口1440可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1400的通信供应商提供的无线网络。在一个实例中,输入输出接口1440包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1440可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图14所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1400还可包括比图14中所示更多或者更少的组件,或者具有与图14所示不同的配置。
由上述本申请提供的数据恢复方法、装置、服务器或存储介质的实施例可见,本申请中在文件损坏时,结合存储损坏文件中内容数据的树结构的结构特性,先获取树结构中的初始有效叶节点数据,然后,基于所述初始有效叶节点数据遍历所述树结构中存储有内容数据的全部叶节点数据;并对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,以恢复损坏文件中的未损坏部分的内容数据。利用本说明书实施例提供的技术方案可以恢复遭遇损坏的ibd文件等中仍然有效的部分数据,降低用户的损失,提高用户体验。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种数据恢复方法,其特征在于,所述方法包括:
获取以树结构存储内容数据的损坏文件,所述内容数据存储于所述树结构中按序排列的叶节点数据;
确定所述树结构中的初始有效叶节点数据;
基于所述初始有效叶节点数据遍历所述树结构中的非初始叶节点数据;
对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,得到所述损坏文件中的内容恢复数据。
2.根据权利要求1所述的方法,其特征在于,所述确定所述树结构中的初始有效叶节点数据包括:
确定所述树结构中的根节点数据,所述根节点数据包括表征所述根节点的内节点数据的位置信息的第一节点指针数据;
基于所述第一节点指针数据确定所述根节点数据的初始有效内节点数据,所述初始有效内节点数据包括表征所述初始有效内节点对应的叶节点数据的位置信息的第二节点指针数据;
基于所述第二节点指针数据确定所述树结构中的初始有效叶节点数据。
3.根据权利要求1所述的方法,其特征在于,所述基于所述初始有效叶节点数据遍历所述树结构中的非初始叶节点数据包括:
判断所述初始有效叶节点数据之前是否存在未遍历叶节点数据;
若否,基于第一链表指针数据依次遍历所述初始有效叶节点数据之后的叶节点数据,所述第一链表指针数据表征当前叶节点数据的下一叶节点数据的位置信息。
4.根据权利要求3所述的方法,其特征在于,所述基于第一链表指针数据依次遍历所述初始有效叶节点数据之后的叶节点数据包括:
在遍历到每一叶节点数据时,判断所述叶节点数据是否有效;
当遍历到有效叶节点数据时,基于所述有效叶节点数据的第一链表指针数据遍历所述有效叶节点数据的下一叶节点数据;
当遍历到无效叶节点数据时,跳过所述无效叶节点数据。
5.根据权利要求4所述的方法,其特征在于,所述当遍历到无效叶节点数据时,跳过所述无效叶节点数据包括:
当遍历到无效叶节点数据时,判断所述无效叶节点数据的第一链表指针数据是否有效;
当判断的结果为是时,基于所述第一链表指针数据跳转至所述无效叶节点数据的下一叶节点数据;
当判断的结果为否时,跳回至所述无效叶节点数据的上一有效叶节点数据的内节点数据,所述内节点数据包括表征所述内节点数据叶节点数据的位置信息的第二节点指针数据;
基于内节点数据中的第二节点指针数据跳转至所述无效叶节点数据的下一叶节点数据。
6.根据权利要求5所述的方法,其特征在于,在跳回至所述无效叶节点数据的上一有效叶节点数据的内节点数据之前,所述方法还包括:
判断所述无效叶节点数据的上一有效叶节点数据的内节点数据是否有效;
若否,跳转至所述上一有效叶节点数据的内节点数据之后的有效内节点数据,所述有效内节点数据包括表征所述有效内节点对应的叶节点数据的位置信息的第二节点指针数据;
基于所述第二节点指针数据确定所述树结构中的初始有效叶节点数据。
7.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当判断出所述初始有效叶节点数据之前存在未遍历叶节点数据时,基于第二链表指针数据依次遍历所述初始有效叶节点数据之前的未遍历叶节点数据,所述第二链表指针数据表征所述当前叶节点数据的上一叶节点数据的位置信息。
8.根据权利要求7所述的方法,其特征在于,所述基于第二链表指针数据依次遍历所述初始有效叶节点数据之前的未遍历叶节点数据包括:
在遍历到每一叶节点数据时,判断所述叶节点数据是否有效;
当遍历到有效叶节点数据时,基于所述有效叶节点数据的第二链表指针数据遍历所述有效叶节点数据的上一叶节点数据;
当遍历到无效叶节点数据时,跳过所述无效叶节点数据。
9.根据权利要求8所述的方法,其特征在于,所述当遍历到无效叶节点数据时,跳过所述无效叶节点数据包括:
当遍历到无效叶节点数据时,判断所述无效叶节点数据的第二链表指针数据是否有效;
当判断的结果为是时,基于所述第二链表指针数据跳转至所述无效叶节点数据的上一叶节点数据;
当判断的结果为否时,跳回至所述无效叶节点数据的下一有效叶节点数据的内节点数据,所述内节点数据包括表征所述内节点数据的叶节点数据的位置信息的第二节点指针数据;
基于内节点数据中的第二节点指针数据跳转至所述无效叶节点数据的上一叶节点数据。
10.根据权利要求9所述的方法,其特征在于,在跳回至所述无效叶节点数据的下一有效叶节点数据的内节点数据之前,所述方法还包括:
判断所述无效叶节点数据的下一有效叶节点数据的内节点数据是否有效;
判断的结果为否时,跳转至所述下一有效叶节点数据的内节点数据之后的有效内节点数据,所述有效内节点数据包括表征所述有效内节点对应的叶节点数据的位置信息的第二节点指针数据;
基于所述第二节点指针数据确定所述树结构中的初始有效叶节点数据。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于预设数据结构信息将所述内容恢复数据转换成结构化查询数据。
12.根据权利要求11所述的方法,其特征在于,当所述损坏文件包括主数据库中的第一损坏文件和备份数据库中的第二损坏文件时,所述第一损坏文件与所述第二损坏文件包括同一目标文件所对应的具有不同无效叶节点数据的损坏文件,所述方法还包括:
基于第一损坏文件对应的结构化查询数据和第二损坏文件对应的结构化查询数据,生成目标文件对应的结构化查询数据;
基于所述目标文件的预设数据结构信息将所述目标文件对应的结构化查询数据转换成所述目标文件。
13.一种数据恢复方法,其特征在于,所述方法包括:
获取损坏文件的页数据;
获取所述损坏文件的树结构的层次信息,所述树结构包括存储有所述损坏文件中内容数据的叶节点数据;
遍历所述损坏文件的页数据;
当遍历到的有效页数据在树结构中的层次信息为叶节点时,对所述有效页数据进行解析处理,得到所述损坏文件中的内容恢复数据。
14.一种数据恢复装置,其特征在于,所述装置包括:
损坏文件获取模块,用于获取以树结构存储内容数据的损坏文件,所述内容数据存储于所述树结构中按序排列的叶节点数据;
初始有效叶节点数据确定模块,用于确定所述树结构中的初始有效叶节点数据;
叶节点数据遍历模块,用于基于所述初始有效叶节点数据遍历所述树结构中的非初始叶节点数据;
第一解析处理模块,用于对所述初始有效叶节点数据和遍历到的有效叶节点数据进行解析处理,得到所述损坏文件中的内容恢复数据。
15.一种数据恢复装置,其特征在于,所述装置包括:
页数据获取模块,用于获取损坏文件的页数据;
层次信息获取模块,用于获取所述损坏文件的树结构的层次信息,所述树结构包括存储有所述损坏文件中内容数据的叶节点数据;
页数据遍历模块,用于遍历所述损坏文件的页数据;
第二解析处理模块,用于当所述页数据遍历模块遍历到的有效页数据在树结构中的层次信息为叶节点时,对所述有效页数据进行解析处理,得到所述损坏文件中的内容恢复数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910312573.0A CN110058969B (zh) | 2019-04-18 | 2019-04-18 | 一种数据恢复方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910312573.0A CN110058969B (zh) | 2019-04-18 | 2019-04-18 | 一种数据恢复方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110058969A true CN110058969A (zh) | 2019-07-26 |
CN110058969B CN110058969B (zh) | 2023-02-28 |
Family
ID=67319449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910312573.0A Active CN110058969B (zh) | 2019-04-18 | 2019-04-18 | 一种数据恢复方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110058969B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110764943A (zh) * | 2019-10-21 | 2020-02-07 | 中国民航信息网络股份有限公司 | 一种Oracle数据库的数据处理方法及装置 |
CN111143130A (zh) * | 2019-12-25 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 数据恢复方法、装置、计算机可读存储介质和计算机设备 |
WO2021056798A1 (zh) * | 2019-09-29 | 2021-04-01 | 苏州浪潮智能科技有限公司 | 一种元数据修复方法、装置、设备及存储介质 |
CN113220236A (zh) * | 2021-05-17 | 2021-08-06 | 北京青云科技股份有限公司 | 一种数据管理方法、系统及设备 |
CN115016988A (zh) * | 2022-08-08 | 2022-09-06 | 四川大学 | 基于二叉树日志的cdp备份恢复方法、系统及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070094277A1 (en) * | 2005-10-21 | 2007-04-26 | Fachan Neal T | Systems and methods for maintaining distributed data |
US20110035359A1 (en) * | 2009-08-07 | 2011-02-10 | International Business Machines Corporation | Database Backup and Restore with Integrated Index Reorganization |
CN102722449A (zh) * | 2012-05-24 | 2012-10-10 | 中国科学院计算技术研究所 | 基于SSD的Key-Value型本地存储方法及系统 |
CN104199888A (zh) * | 2014-08-25 | 2014-12-10 | 厦门市美亚柏科信息股份有限公司 | 弹性文件系统的数据恢复方法和装置 |
CN104301681A (zh) * | 2014-10-22 | 2015-01-21 | 厦门市美亚柏科信息股份有限公司 | 一种监控视频的恢复方法和装置 |
CN105830041A (zh) * | 2014-11-27 | 2016-08-03 | 华为技术有限公司 | 元数据的恢复方法及装置 |
CN106844089A (zh) * | 2015-12-03 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种用于恢复树形数据存储的方法与设备 |
CN108062358A (zh) * | 2017-11-28 | 2018-05-22 | 厦门市美亚柏科信息股份有限公司 | innodb引擎删除记录的离线恢复方法、存储介质 |
CN109408290A (zh) * | 2018-10-19 | 2019-03-01 | 厦门市美亚柏科信息股份有限公司 | 一种基于InnoDB的碎片文件恢复方法、装置及存储介质 |
-
2019
- 2019-04-18 CN CN201910312573.0A patent/CN110058969B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070094277A1 (en) * | 2005-10-21 | 2007-04-26 | Fachan Neal T | Systems and methods for maintaining distributed data |
US20110035359A1 (en) * | 2009-08-07 | 2011-02-10 | International Business Machines Corporation | Database Backup and Restore with Integrated Index Reorganization |
CN102722449A (zh) * | 2012-05-24 | 2012-10-10 | 中国科学院计算技术研究所 | 基于SSD的Key-Value型本地存储方法及系统 |
CN104199888A (zh) * | 2014-08-25 | 2014-12-10 | 厦门市美亚柏科信息股份有限公司 | 弹性文件系统的数据恢复方法和装置 |
CN104301681A (zh) * | 2014-10-22 | 2015-01-21 | 厦门市美亚柏科信息股份有限公司 | 一种监控视频的恢复方法和装置 |
CN105830041A (zh) * | 2014-11-27 | 2016-08-03 | 华为技术有限公司 | 元数据的恢复方法及装置 |
CN106844089A (zh) * | 2015-12-03 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种用于恢复树形数据存储的方法与设备 |
CN108062358A (zh) * | 2017-11-28 | 2018-05-22 | 厦门市美亚柏科信息股份有限公司 | innodb引擎删除记录的离线恢复方法、存储介质 |
CN109408290A (zh) * | 2018-10-19 | 2019-03-01 | 厦门市美亚柏科信息股份有限公司 | 一种基于InnoDB的碎片文件恢复方法、装置及存储介质 |
Non-Patent Citations (4)
Title |
---|
CNXIEYANG: "Mysql ibd文件恢复指南", 《HTTPS://WWW.CNBLOGS.COM/CNXIEYANG/P/6811304.HTML》 * |
YU PING等: "Design and implementation of a MySQL database backup and recovery system", 《PROCEEDING OF THE 11TH WORLD CONGRESS ON INTELLIGENT CONTROL AND AUTOMATION》 * |
孙偏偏: "InnoDB数据库数据恢复技术研究", 《中国优秀硕士学位论文全文库 信息科技辑》 * |
碎炎: "[INNODB] ibd文件之通过B+树索引和页目录查找行数据", 《HTTPS://BLOG.CSDN.NET/SRYAN/ARTICLE/DETAILS/80278811》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021056798A1 (zh) * | 2019-09-29 | 2021-04-01 | 苏州浪潮智能科技有限公司 | 一种元数据修复方法、装置、设备及存储介质 |
CN110764943A (zh) * | 2019-10-21 | 2020-02-07 | 中国民航信息网络股份有限公司 | 一种Oracle数据库的数据处理方法及装置 |
CN110764943B (zh) * | 2019-10-21 | 2023-05-05 | 中国民航信息网络股份有限公司 | 一种Oracle数据库的数据处理方法及装置 |
CN111143130A (zh) * | 2019-12-25 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 数据恢复方法、装置、计算机可读存储介质和计算机设备 |
CN111143130B (zh) * | 2019-12-25 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 数据恢复方法、装置、计算机可读存储介质和计算机设备 |
CN113220236A (zh) * | 2021-05-17 | 2021-08-06 | 北京青云科技股份有限公司 | 一种数据管理方法、系统及设备 |
CN113220236B (zh) * | 2021-05-17 | 2024-01-30 | 北京青云科技股份有限公司 | 一种数据管理方法、系统及设备 |
CN115016988A (zh) * | 2022-08-08 | 2022-09-06 | 四川大学 | 基于二叉树日志的cdp备份恢复方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110058969B (zh) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110058969A (zh) | 一种数据恢复方法及装置 | |
JP6936936B2 (ja) | ウェイクアップモデルの最適化方法、装置、デバイス及び記憶媒体 | |
JP5492187B2 (ja) | 編集距離および文書情報を使用する検索結果順位付け | |
CN103136243B (zh) | 基于云存储的文件系统去重方法及装置 | |
CN104657140A (zh) | 代码生成方法及装置 | |
CN104239443B (zh) | 一种序列化数据操作日志的存储方法 | |
CN103189867A (zh) | 重复数据检索方法及设备 | |
CN107122130B (zh) | 一种数据重删方法及装置 | |
WO2016082156A1 (zh) | 元数据的恢复方法及装置 | |
JP2018538600A (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
Williams et al. | Searching for model migration strategies | |
US10642530B2 (en) | Global occupancy aggregator for global garbage collection scheduling | |
CN105264488A (zh) | 使用数组对来合并有序列表 | |
CN109871290A (zh) | 应用于Java的调用堆栈追踪方法、装置和存储介质 | |
CN109408682A (zh) | 一种正则表达式匹配的方法、系统及设备 | |
CN104348571B (zh) | 数据分块方法及装置 | |
US6957178B2 (en) | Incremental automata verification | |
CN109325005A (zh) | 一种数据处理方法和电子设备 | |
CN110221778A (zh) | 酒店数据的处理方法、系统、存储介质以及电子设备 | |
CN111025400A (zh) | 基于Hadoop的地震偏移成像作业续航方法及系统 | |
CN114661668A (zh) | 文件管理方法及相关装置 | |
WO2022159202A1 (en) | Efficient creation and/or restatement of database tables | |
CN108959300A (zh) | 文件存储方法和存储装置 | |
CN103744939B (zh) | 一种日志的记录方法、日志的恢复方法及日志管理器 | |
US9128823B1 (en) | Synthetic data generation for backups of block-based storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230920 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |