CN101308471B - 一种恢复数据的方法及装置 - Google Patents

一种恢复数据的方法及装置 Download PDF

Info

Publication number
CN101308471B
CN101308471B CN2008100284192A CN200810028419A CN101308471B CN 101308471 B CN101308471 B CN 101308471B CN 2008100284192 A CN2008100284192 A CN 2008100284192A CN 200810028419 A CN200810028419 A CN 200810028419A CN 101308471 B CN101308471 B CN 101308471B
Authority
CN
China
Prior art keywords
data
data block
correctness
file
dump file
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.)
Active
Application number
CN2008100284192A
Other languages
English (en)
Other versions
CN101308471A (zh
Inventor
张耿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chuangze intelligent robot Group Co.,Ltd.
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN2008100284192A priority Critical patent/CN101308471B/zh
Publication of CN101308471A publication Critical patent/CN101308471A/zh
Application granted granted Critical
Publication of CN101308471B publication Critical patent/CN101308471B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种恢复数据的方法及装置,该方法包括:生成数据恢复文件,所述数据恢复文件中包括对恢复数据结构的描述,所述恢复数据结构中定义了数据恢复标记字段、数据块长度信息字段以及正确性校验码字段;在进程运行时,向内存转储文件中存入所述恢复数据结构中定义的字段的值;获取内存转储文件,并检查所述内存转储文件中是否有数据恢复标记;若检查到所述数据恢复标记,则根据所述数据恢复标记和数据块长度信息获取内存转储文件中保存的相应的数据块;对所述数据块进行正确性校验,若所述正确性校验结果为正确,则恢复所述数据块。采用本发明,可以简单高效的进行数据恢复。

Description

一种恢复数据的方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种恢复数据的方法及装置。 
背景技术
通常在UNIX和Linux等环境中,为了避免进程异常退出而导致重要数据丢失,通常会把重要的数据保存到数据库中,通过应用程序编程接口(ApplicationProgramming Interface,API)或结构化查询语言(Structured Query Language,SQL)语句直接访问和修改数据库中的数据,这样在进程重新启动等情况下时就可以方便的从数据库中进行数据恢复。 
但是,由于数据库访问通常包含API调用、SQL解析、网络传输等步骤,如果把所有的数据都通过数据库技术进行恢复,则系统会变得非常复杂,并且数据库的运行性能可能也会降低。 
发明内容
本发明所要解决的技术问题在于,提供一种恢复数据的方法及装置。可简单高效的进行数据恢复。 
为了解决上述技术问题,一方面,本发明的实施例提供了一种恢复数据的方法,包括:生成数据恢复文件,所述数据恢复文件中包括对恢复数据结构的描述,所述恢复数据结构中定义了数据恢复标记字段、数据块长度信息字段以及正确性校验码字段;在进程运行时,向内存转储文件中存入所述恢复数据结构中定义的字段的值;获取内存转储文件,并检查所述内存转储文件中是否有数据恢复标记;若检查到所述数据恢复标记,则根据所述数据恢复标记和数据块长度信息获取内存转储文件中保存的相应的数据块;对所述数据块进行正确性校验,若所述正确性校验结果为正确,则恢复所述数据块。 
另一方面,本发明的实施例提供了一种恢复数据的装置,包括:生成单元,用于生成数据恢复文件,所述数据恢复文件中包括对恢复数据结构的描述,所 述恢复数据结构中定义了数据恢复标记字段、数据块长度信息字段、正确性校验码字段以及数据标记字段;存入单元,用于在进程运行时,向内存转储文件中存入所述恢复数据结构中定义的字段的值;第一获取单元,用于获取内存转储文件;检查单元,用于检查所述内存转储文件中是否有数据恢复标记;第二获取单元,若所述检查单元检查到所述数据恢复标记,则所述第二获取单元用于根据所述数据恢复标记和数据块长度信息获取内存转储文件中保存的相应的数据块;校验单元,用于对所述数据块进行正确性校验;恢复单元,若所述校验单元的正确性校验结果为正确,则所述恢复单元用于恢复所述数据块。 
同时,本发明的实施例还提供了包括上述恢复数据的装置的数据库和计算机。 
在本发明实施例中,利用内存转储文件作为数据恢复源,而不需要在进行运行时同步数据到数据库,降低了维护数据库的复杂度。同时,由于没有运行时持久化的消息交互和磁盘访问,提高了产品运行时的性能,降低了产品运营和维护成本。 
附图说明
图1是本发明实施例中恢复数据的方法的流程示意图; 
图2是本发明实施例中恢复数据的装置的组成示意图; 
图3是本发明实施例中恢复数据结构的示意图; 
图4是本发明实施例中内存转储文件的示意图; 
图5是本发明实施例中检查数据恢复标记的示意图。 
具体实施方式
通常在UNIX、Linux等环境中,进程异常(例如:无效地址访问)会导致进程退出,并把内存的信息全部转存到core(磁芯存储)文件中。该core文件通常称为内存转储文件(或coredump文件、core文件,在有些操作系统上可以设置这个文件的后缀,比如“core.xxxxxx”等,“xxxxxx”通常是进程名加上日期产生的一串数字)。因此,coredump文件正好保存了进程异常退出时的内存信息,所以理论上是可以从coredump文件中恢复进程所需的数据的。 
如图1所示,为本发明实施例中恢复数据的方法的流程示意图。该方法主 要包括如下步骤: 
101、获取内存转储文件。所述内存转储文件可为coredump文件、core文件等。 
当进程异常退出并产生内存转储文件后,若需要进行数据恢复,则需要首先查找到相应的内存转储文件。进行数据恢复的原因可能是需要恢复原来异常的进程,则此时,为重新启动的应用进程在启动时查找对应的内存转储文件;若进行数据恢复的原因仅仅是为了读取原异常进程中的部分内存数据,则只需进程标记获取相应的内存转储文件即可。 
102、检查所述内存转储文件中是否有数据恢复标记。 
在获取了内存转储文件后,打开该文件,并查找文件中是否有数据恢复标记。可以二进制文件方式打开该文件,采用顺序读并检查读取内容的方式,寻找数据恢复标记。 
需要说明的是在同一个内存转储文件中可能存在多个数据恢复标记,每个数据恢复标记用于标记一段数据块。该数据恢复标记可以是一个特殊的数值,也可以是类似的能够唯一标示一个数据的标识,比如全局唯一标识符(GloballyUnique Identifier,GUID)。 
103、若检查到所述数据恢复标记,则根据所述数据恢复标记和数据块长度信息获取内存转储文件中保存的相应的数据块。 
104、对所述数据块进行正确性校验。校验的方法具体可为:先生成相应的数据块的正确性校验码;再验证所述正确性校验码与所述数据块的预存的正确性校验码是否相同,若相同则表明所述正确性校验的结果为正确。 
其中,正确性校验码可为循环冗余码校验码,也可为信息摘要算法5 MD5中的信息摘要。 
105、若所述正确性校验结果为正确,则恢复所述数据块。 
若进行数据恢复的原因是重新启动进程的话,则本步包括:根据相应的数据标记确定该数据块应对应应用进程的哪一部分数据,以确定数据块需要恢复到的内存位置;将所述数据块中的数据存储到所述应用进程对应的内存位置上。 
若仅仅是希望获取原进程中的数据的话,则只要根据数据标记获取校验正确的数据块的相应内容即可。 
同时,在同一内存转储文件可能存在多段数据块及其相应数据恢复标记, 则本方法中在获得内存转储文件后,在102步骤中可采用循序检查的方法检查数据恢复标记,在检查到一个数据恢复标记时即执行103~105步骤,并在105执行完后接着上一次检查结束的位置检查是否还有下一个数据恢复标记。即以顺序检查内存转储文件的方式循环的执行102~105步骤,直至检查完整个内存转储文件。 
或者也可以在步骤102中,一次检查出同一内存转储文件中所有的数据恢复标记,并根据各个标记执行步骤103~105,以恢复相应的数据块。 
此外,在本方法中所需要使用的信息:数据恢复标记、数据块长度信息、正确性校验码以及数据标记等信息,可以定义为一个恢复数据结构,并在进程运行时对该结构中的相应内容进行赋值,具体见后述实施例中的描述。 
相应的,如图2所示,为本发明中一种恢复数据的装置的具体实施例的组成示意图。该装置包括:
第一获取单元1,用于获取内存转储内存转储文件。所述内存转储文件可为coredump文件、core文件等。 
检查单元2,用于检查所述内存转储文件中是否有数据恢复标记。 
第二获取单元3,若所述检查单元2检查到所述数据恢复标记,则所述第二获取单元3用于根据所述数据恢复标记和数据块长度信息获取内存转储文件中保存的相应的数据块。 
校验单元4,用于对所述数据块进行正确性校验。校验单元4可进一步包括:生成子单元,用于生成相应的数据块的正确性校验码;验证子单元,用于验证所述正确性校验码与所述数据块的预存的正确性校验码是否相同,若相同则表明所述正确性校验的结果为正确。 
恢复单元5,若所述校验单元4的正确性校验结果为正确,则所述恢复单元5用于恢复所述数据块。恢复单元4可进一步包括:确定子单元,用于根据相应的数据标记确定该数据块应对应应用进程的哪一部分数据,以确定其应存储的内存位置;存储子单元,用于将所述数据块中的数据存储到所述应用进程对应的内存位置上。 
本装置还可同时包括下述两个单元: 
生成单元6,用于生成数据恢复文件,所述数据恢复文件中包括对恢复数据结构的描述,所述恢复数据结构中定义了数据恢复标记字段、数据块长度信息 字段、正确性校验码字段以及数据标记字段; 
存入单元7,用于在进程运行时,向所述内存转储文件中存入所述恢复数据结构中定义的字段的值。 
其中,上述描述中出现的数据恢复标记、数据块长度、正确性校验码以及数据标记等与上述方法描述中的一致。 
同时,在实现本发明的具体实施例时,可以在数据库中设置相应的恢复数据的装置,也可以在计算机中或具有处理数据功能的设备中设置所述的恢复数据的装置。 
其中,所述恢复数据的装置与数据库或计算机中相应的存储装置相连(如存储所述内存转储文件的存储装置、存储恢复数据的存储装置等),以便所述恢复数据的装置可以对相关的内存转储文件进行相应的操作,如读取或存入等,以及对恢复的数据进行存储等操作。 
同时,所述恢复数据的装置还可以和数据库或计算机中其他相应的可控制数据恢复的装置相连,以便对所述恢复数据的装置进行数据恢复的控制。 
由上述描述可知,在上述具体实施例中,恢复数据的装置利用内存转储文件作为数据恢复源,而不需要在进行运行时同步数据到数据库,降低了一般数据库持久化带来的产品复杂度。同时,由于没有过多的消息交互和磁盘访问,提高了具有该恢复数据的装置的产品(如数据库或计算机)运行时的性能,降低了产品运营和维护成本。 
下面,结合一个更详细的例子,对上述方法进行描述。 
对于一个需要具有本发明实施例中所描述的数据恢复功能的应用程序,首先需要在应用程序数据的数据结构中增加一个辅助的数据结构memhead_t作为恢复数据结构,如图3所示。对应的C语言的声明如下: 
struct memhead_t 
     long memflag; 
     long param; 
     long len; 
     long CRC; 
  }; 
其中各个字段的含义解释如下: 
memflag:即上述的数据恢复标记的一种具体形式,用于标记一个可从内存转储文件恢复数据块的内存起始位置,可以使用一个特殊的数值,比如:0x43215678(后述部分都采用这个数值进行说明),也可以使用类似的能够唯一标示一个数据的数据结构,比如:GUID。其中,所述内存转储文件可为coredump文件、core文件等。 
param:即上述的数据标记的一个具体示例。此处称为应用程序数据块自定义参数,由应用程序定义其用途。例如,当应用程序存在多个数据块的情况下,可以在应用程序初始化时,将每个数据块的param值设置为数据块ID,在恢复阶段通过检查param,而区分出多个数据块。 
len:用于确定memhead_t结构后面的应用程序数据块的大小。 
CRC:用于校验从内存转储文件恢复的应用程序数据块的有效性。当应用程序数据块的内容发生变化时,需要根据数据块的内容用循环冗余码校验算法重新计算该字段的值(也可以使用类似的能够保证数据完整性的算法,比如:MD5算法;或者能够记录应用进程数据块的状态的算法和数据结构)。若数据块为正常的数据块,则重新计算的该字段的值与原来计算的值一致,只有当数据块异常(如,当前进程正在修改数据块值时,突然异常退出,即该数据块值可能只修改了部分)时,CRC值会改变。 
当定义了上述数据结构的应用程序运行时,会创建相应的应用进程数据块(动态创建,或者静态分配都可以)。并初始化应用进程数据块的memhead_t信息,包括:设置memflag为0x43215678,由应用进程填写param字段,根据应用进程数据块的长度填写len,最后根据应用进程数据块,用循环冗余码校验算法计算出循环冗余码校验码,并填入CRC字段。 
进程运行过程中当应用程序的数据发生变化时,需要在修改完成后,需要重新计算对应的memhead的CRC。 
则当进程异常退出时,所存储的内存转储文件的情况可如图4所示。 
当需要恢复上述应用进程时,恢复的应用进程启动后首先查找对应的内存转储文件,并以二进制文件方式打开该内存转储文件,顺序读取该文件(图5中所示为从底部往顶部方向顺序读取,当然,也可以采用其他方向的顺序读取方式),同时,检查读取的内容是否为memflag,如图5所示。 
当找到标记时,对相应的数据块使用循环冗余码校验算法计算出循环冗余码校验码,并和memhead_t的CRC进行比较,看是否一致。 
如果校验CRC一致,则说明数据块在coredump时是完整的,可以进行恢复,并检查param参数,确定是哪一个应用进程数据块,最后把coredump中保存的数据恢复到进程对应内存位置上。 
重复搜索-校验-恢复过程,直至完全搜索完整个内存转储文件为止。 
由上述描述可知,在本发明实施例中,利用内存转储文件作为数据恢复源,而不需要在进行运行时同步数据到数据库,降低了一般数据库持久化带来的产品复杂度。同时,由于减少了消息交互和磁盘访问,提高了了具有该恢复数据的装置的产品(如数据库或计算机)运行时的性能,降低了产品运营和维护成本。 
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。 
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。 
以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。 
以上所揭露的仅为本发明的实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。 

Claims (9)

1.一种恢复数据的方法,其特征在于,所述方法包括:
生成数据恢复文件,所述数据恢复文件中包括对恢复数据结构的描述,所述恢复数据结构中定义了数据恢复标记字段、数据块长度信息字段以及正确性校验码字段;
在进程运行时,向内存转储文件中存入所述恢复数据结构中定义的字段的值;
获取内存转储文件,并检查所述内存转储文件中是否有数据恢复标记;
若检查到所述数据恢复标记,则根据所述数据恢复标记和数据块长度信息获取所述内存转储文件中保存的相应的数据块;
对所述数据块进行正确性校验,若所述正确性校验结果为正确,则恢复所述数据块。
2.如权利要求1所述的方法,其特征在于,所述恢复数据结构中还定义了数据标记字段。
3.如权利要求1或2所述的方法,其特征在于,所述对所述数据块进行正确性校验包括:
生成相应的数据块的正确性校验码;
验证所述正确性校验码与所述数据块的预存的正确性校验码是否相同,若相同则表明所述正确性校验的结果为正确。
4.如权利要求3所述的方法,其特征在于,所述正确性校验码为循环冗余码校验码,或者为,信息摘要算法中的信息摘要。
5.如权利要求2所述的方法,其特征在于,所述恢复所述数据块包括:
根据相应的数据标记确定数据块恢复时对应的应用进程的数据位置,以确定所述数据块应存储的内存位置;
将所述数据块中的数据存储到所述应用进程对应的内存位置上。 
6.一种恢复数据的装置,其特征在于,所述装置包括:
生成单元,用于生成数据恢复文件,所述数据恢复文件中包括对恢复数据结构的描述,所述恢复数据结构中定义了数据恢复标记字段、数据块长度信息字段、正确性校验码字段以及数据标记字段;
存入单元,用于在进程运行时,向内存转储文件中存入所述恢复数据结构中定义的字段的值;
第一获取单元,用于获取内存转储文件;
检查单元,用于检查所述内存转储文件中是否有数据恢复标记;
第二获取单元,若所述检查单元检查到所述数据恢复标记,则所述第二获取单元用于根据所述数据恢复标记和数据块长度信息获取内存转储文件中保存的相应的数据块;
校验单元,用于对所述数据块进行正确性校验;
恢复单元,若所述校验单元的正确性校验结果为正确,则所述恢复单元用于恢复所述数据块。
7.如权利要求6所述的装置,其特征在于,所述校验单元包括:
生成子单元,用于生成相应的数据块的正确性校验码;
验证子单元,用于验证所述正确性校验码与所述数据块的预存的正确性校验码是否相同,若相同则表明所述正确性校验的结果为正确。
8.如权利要求7所述的装置,其特征在于,所述恢复单元包括:
确定子单元,用于根据相应的数据标记确定数据块恢复时对应的应用进程的数据位置,以确定所述数据块应存储的内存位置;
存储子单元,用于将所述数据块中的数据存储到所述应用进程对应的内存位置上。
9.一种数据库装置,其特征在于,所述数据库装置具有如权利要求6至8中任一项所述的恢复数据的装置。 
CN2008100284192A 2008-05-30 2008-05-30 一种恢复数据的方法及装置 Active CN101308471B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100284192A CN101308471B (zh) 2008-05-30 2008-05-30 一种恢复数据的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100284192A CN101308471B (zh) 2008-05-30 2008-05-30 一种恢复数据的方法及装置

Publications (2)

Publication Number Publication Date
CN101308471A CN101308471A (zh) 2008-11-19
CN101308471B true CN101308471B (zh) 2011-12-21

Family

ID=40124936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100284192A Active CN101308471B (zh) 2008-05-30 2008-05-30 一种恢复数据的方法及装置

Country Status (1)

Country Link
CN (1) CN101308471B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2503439A (en) 2012-06-26 2014-01-01 Ibm Method of restarting a software system that has unintentional shutdown.
CN103324553B (zh) * 2013-06-21 2016-08-24 华为技术有限公司 数据恢复方法、系统及装置
WO2015066850A1 (zh) * 2013-11-06 2015-05-14 华为技术有限公司 存储文件的方法和装置
CN104714861A (zh) * 2013-12-16 2015-06-17 阿里巴巴集团控股有限公司 场景恢复数据保存方法、应用运行方法、装置及系统
CN104881611B (zh) 2014-02-28 2017-11-24 国际商业机器公司 保护软件产品中的敏感数据的方法和装置
CN104778097B (zh) * 2015-03-27 2019-01-01 新浪网技术(中国)有限公司 一种数据恢复方法及装置
CN107229651A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 唯一性约束异常的确定方法、异常处理方法及装置
CN108021469B (zh) * 2016-10-31 2020-10-27 中国电信股份有限公司 数据修复方法和装置
CN107122683A (zh) * 2017-04-27 2017-09-01 郑州云海信息技术有限公司 一种数据存储方法、数据完整性校验方法及应用服务器
US11226875B2 (en) 2017-07-20 2022-01-18 International Business Machines Corporation System halt event recovery
WO2024040502A1 (en) * 2022-08-25 2024-02-29 Intel Corporation Apparatus, device, method, and computer program for persisting memory recovery actions

Also Published As

Publication number Publication date
CN101308471A (zh) 2008-11-19

Similar Documents

Publication Publication Date Title
CN101308471B (zh) 一种恢复数据的方法及装置
CN104793946B (zh) 基于云计算平台的应用部署方法和系统
CN106371940B (zh) 一种程序崩溃解决方法及装置
US11269902B2 (en) Time series data management method, device, and apparatus
CN103077043B (zh) 一种快速启动及运行Linux的方法
CN104123126A (zh) 一种用于生成合并冲突记录列表的方法和装置
CN107665219B (zh) 一种日志管理方法及装置
CN106445643B (zh) 克隆、升级虚拟机的方法及设备
CN109508178A (zh) 一种程序开发方法及装置
CN106897342B (zh) 一种数据校验方法和设备
CN104572920A (zh) 一种数据整理方法和装置
CN112015491B (zh) 实现函数跳转的方法、装置及计算机存储介质
CN111400267B (zh) 记录日志的方法和装置
CN104636401B (zh) 一种scada系统数据回滚的方法及装置
CN1976320B (zh) 数据访问控制方法及系统
CN112099880B (zh) 场景驱动的应用程序约减方法和系统
CN114860654A (zh) 一种基于Flink数据流的Iceberg表Schema动态变更方法及系统
CN102902770A (zh) 一种镜像文件拼装方法及系统
CN112948473A (zh) 数据仓库的数据处理方法、装置、系统及存储介质
CN112241370B (zh) 一种api接口类的校验方法、系统及装置
CN109471901B (zh) 一种数据同步方法及装置
CN103530369A (zh) 一种去重方法及系统
CN113312205B (zh) 数据校验方法、装置、存储介质和计算机设备
US20100274764A1 (en) Accessing snapshots of a time based file system
CN111400243B (zh) 基于流水线服务的研发管理系统以及文件存储方法、装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201215

Address after: 510640 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong.

Patentee after: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

Effective date of registration: 20201215

Address after: 276800 No. 71 Taiyuan Road, Rizhao Economic Development Zone, Shandong Province

Patentee after: Chuangze intelligent robot Group Co.,Ltd.

Address before: 510640 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong.

Patentee before: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

TR01 Transfer of patent right