数据库备份的校验方法及装置与流程

文档序号:11286034阅读:508来源:国知局
数据库备份的校验方法及装置与流程

本申请涉及数据库技术领域,尤其涉及一种数据库备份的校验方法及装置。



背景技术:

数据库(database)是按照数据结构来组织、存储和管理数据的仓库。数据库经常出现各种故障,数据库备份技术可以在数据库出现故障后,以尽可能小的时间和代价恢复数据库。

无论采用何种数据库备份技术,在数据库备份过程中,仍可能出现错误,例如数据丢失或数据错误等,导致备份数据无法用来还原原始数据。



技术实现要素:

本申请的多个方面提供一种数据库备份的校验方法及装置,用以校验备份数据的有效性,保证备份数据能够还原原始数据。

本申请实施例提供一种数据库备份的校验方法,包括:

获取待校验数据,所述待校验数据包括至少一个数据库实例的备份数据;

校验所述至少一个数据库实例的备份数据的md5值的正确性,以验证所述待校验数据的完整性;

抽样访问所述至少一个数据库实例的备份数据,以验证所述待校验数据的可用性;

若完整性和可用性均通过验证,存储所述待校验数据。

可选地,获取所述待校验数据之前,所述方法还包括:

确定所述至少一个数据库实例可成功启动。

可选地,所述方法还包括:

若完整性未通过验证,丢弃所述待校验数据;以及,

从原备份源中,重新备份所述至少一个数据库实例的数据。

可选地,所述方法还包括:

若可用性未通过验证,丢弃所述待校验数据;以及,

更新备份源;

从所述更新后的备份源中,重新备份所述至少一个数据库实例的数据。

可选地,所述检测所述至少一个数据库实例的备份数据的md5值的正确性,以验证所述待校验数据的完整性,包括以下至少一种校验操作:

在数据表层级,校验所述至少一个数据库实例的备份数据的md5值的正确性;

在数据记录层级,校验所述至少一个数据库实例的备份数据的md5值的正确性;

在数据项层级,校验所述至少一个数据库实例的备份数据的md5值的正确性;

若所述至少一种校验操作均通过正确性校验,确定所述待校验数据通过完整性校验。

可选地,所述抽样访问所述至少一个数据库实例的备份数据,以验证所述待校验数据的可用性,包括:

根据所述至少一个数据库实例的重要度,确定所述至少一个数据库实例各自的抽样访问频率;

按照所述至少一个数据库实例各自的抽样访问频率,分别抽样访问所述至少一个数据库实例的备份数据,以验证所述待校验数据的可用性。

可选地,对所述至少一个数据库实例中的第一数据库实例,按照所述第一数据库实例的抽样访问频率,抽样访问所述第一数据库实例的备份数据,包括:

按照所述第一数据库实例的抽样访问频率,对所述第一数据库实例的备份数据进行抽样,以获得抽样数据;

对所述抽样数据进行数据访问操作,以获得数据访问操作结果;

若所述数据访问操作结果正确,确定所述第一数据库实例的备份数据通过可用性验证。

可选地,所述抽样访问所述至少一个数据库实例的备份数据,以验证所述待校验数据的可用性,包括:

从所述至少一个数据库实例中,选择待校验数据库实例;

抽样访问所述待校验数据库实例的备份数据,以验证所述待校验数据的可用性。

本申请实施例还提供了一种数据库备份的校验装置,包括:

获取模块,用于获取待校验数据,所述待校验数据包括至少一个数据库实例的备份数据;

第一校验模块,用于校验所述至少一个数据库实例的备份数据的md5值的正确性,以验证所述待校验数据的完整性;

第二校验模块,用于抽样访问所述至少一个数据库实例的备份数据,以验证所述待校验数据的可用性;

存储模块,用于在所述第一校验模块校验的完整性和所述第二校验模块校验的可用性均通过验证时,存储所述待校验数据。

可选地,所述装置还包括:

确定模块,用于确定所述至少一个数据库实例可成功启动。

在本申请实施例中,通过校验md5值的正确性来验证待校验数据的完整性;以及通过抽样访问待校验数据,验证数据的可用性,若完整性与可用性均通过,则存储待校验数据。本申请实施例的双重校验机制能够准确校验备份数据的有效性,保证备份数据能够还原原始数据。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1a为本申请一实施例提供的数据库备份的校验方法的流程示意图;

图1b为本申请又一实施例提供的数据库备份的校验方法的流程示意图;

图2为本申请又一实施例提供的数据库备份的校验方法中可用性校验的流程示意图;

图3为本申请又一实施例提供的数据库备份的校验方法中可用性校验的流程示意图;

图4为本申请又一实施例提供的数据库备份的校验装置的模块结构图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

以下结合附图,详细说明本申请各实施例提供的技术方案。

图1a为本申请一实施例提供的数据库备份的校验方法。如图1a所示,该方法包括以下步骤:

s101:获取待校验数据,待校验数据包括至少一个数据库实例的备份数据。

s102:校验至少一个数据库实例的备份数据的md5值的正确性,以验证待校验数据的完整性。

s103:抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性。

s104:若完整性和可用性均通过验证,存储待校验数据。

将数据从备份源备份到数据库中时,可能由于备份源中的数据本身存在问题或者备份的过程中出现问题,导致备份数据不具备有效性,无法用来还原原始数据。因此,有必要在备份数据存储到数据库之前对数据进行校验。

首先,获取至少一个数据库实例的备份数据,作为待校验数据。接着,验证待校验数据的完整性和可用性。

其中,在完整性的验证过程中,可以校验至少一个数据库实例的备份数据的md5值的正确性,以验证待校验数据的完整性。md5是一种散列函数,用于确保信息传输完整一致。可以计算至少一个数据库实例的备份数据的md5值,并与预先计算出的备份源中对应数据库实例的数据的md5值相比,若计算出的md5值相同,说明md5值正确,则待校验数据的完整性通过校验。若计算出的md5值不相同,则待校验数据的完整性未通过验证。

在可用性的验证过程中,可以抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性。可选地,可以从至少一个数据库实例中每一个数据库实例中抽样部分数据,并对所述抽样的数据进行访问操作。若访问操作结果正确,则可以验证待校验数据的可用性;若访问操作结果不正确,则待校验数据的可用性未通过验证。当然,也可以抽样待校验数据中全部的数据库实例的备份数据进行访问操作。

值得说明的是,本申请实施例中可以先验证待校验数据的完整性,若完整性通过验证,再验证可用性;也可以先验证待校验数据的可用性,若可用性通过验证,再验证完整性;也可以同时进行验证待校验数据的完整性和可用性。当待校验数据的完整性和可用性均通过验证时,可以确定待校验数据具有有效性,进而存储待校验数据,以便用来还原原始数据。

在本申请实施例中,通过校验md5值的正确性来验证待校验数据的完整性;以及通过抽样访问待校验数据,验证数据的可用性,若完整性与可用性均通过,则存储待校验数据。本申请实施例的双重校验机制能够准确校验备份数据的有效性,保证备份数据能够还原原始数据。

图1b为本申请又一实施例提供的数据库备份的校验方法。如图1b所示,该方法包括以下步骤:

s200:开始。

s201:确定至少一个数据库实例是否能够成功启动;若是,执行步骤s202;若否,执行步骤s203。

s202:获取待校验数据,待校验数据包括成功启动的至少一个数据库实例的备份数据,并继续执行步骤s204-s206。

可以启动备份数据库中至少一个数据库实例的数据。如果成功启动,获取启动成功的至少一个数据库实例的备份数据,作为待校验数据。之后验证所述待校验数据的完整性和可用性,如下述步骤s204-s206,此处不再赘述。

s203:丢弃启动失败的数据库实例的数据,并通知数据库管理人员,结束操作。

s204:校验至少一个数据库实例的备份数据的md5值的正确性,以验证待校验数据的完整性。

s205:抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性。

s206:若完整性和可用性均通过验证,存储待校验数据。

数据库实例启动失败的情况可以包括数据库实例不工作、停止响应或运行中断的情况。当数据库实例启动失败时,意味着数据库实例的数据不完整或者有错误,可以不再进行之后的校验操作。

在本申请实施例中,待校验的数据为启动成功的数据库实例的备份数据,即通过启动数据库实例对备份数据进行初步的校验;初步校验通过后,在验证完整性与可用性,进一步提高了校验的准确性,保证备份数据能够还原原始数据。

在上述实施例或下述实施例中,若至少一个数据库实例的备份数据的md5值不正确,则待校验数据的完整性未通过验证,可以丢弃待校验数据,例如从备份数据库中删除待校验数据。

备份数据的md5值不正确,意味着备份数据相比于备份源的数据不够完整,由此推断,可能是数据传输过程中出现问题或者读写过程中出现问题。因此,可以从原备份源中,重新备份至少一个数据库实例的数据。

接着,对重新备份的至少一个数据库实例的数据进行完整性校验和可用性校验。

可选地,若至少一个数据库实例的备份数据的可用性未通过验证,可以丢弃待校验数据。

备份数据的可用性未通过校验,意味着备份数据中可能存在一些错误,导致备份数据不可用。此时,很可能是备份源的数据本身就不具备可用性,导致备份数据也不具备可用性。因此,可以更新备份源;从更新后的备份源中,重新备份至少一个数据库实例的数据。

接着,对重新备份的至少一个数据库实例的数据进行完整性校验和可用性校验。

本实施例中,可以根据待校验数据未通过完整性校验或可用性校验时,从原备份源或者更新后的备份源,重新备份至少一个数据库实例的数据,保证数据库中更多数据的有效性

在上述实施例或下述实施例中,根据数据库中不同的数据组织层级,可以针对待校验数据进行不同层级的完整性校验操作。基于此,检测至少一个数据库实例的备份数据的md5值的正确性,以验证待校验数据的完整性的步骤,可以包括数据表层级的校验操作、数据记录层级的校验操作以及数据项层级的校验操作中任意一种校验操作。

其中,数据表层级的校验操作为在数据表层级,校验至少一个数据库实例的备份数据的md5值的正确性。

根据数据库中数据的不同分类,可以将一个数据库划分为至少一个数据表,可选地,一个数据库实例可以对应至少一个数据表。基于此,可以针对每一个数据库实例对应的至少一个数据表进行数据表层级的校验操作。

可选地,计算所述至少一个数据库实例对应的每一个数据表的数据的md5值,并与预先计算出的备份源中对应数据表的数据的md5值相比,若计算出的md5值相同,则待校验数据通过完整性验证;否则,待校验数据未通过完整性验证。

数据记录层级的校验操作为在数据记录层级,校验至少一个数据库实例的备份数据的md5值的正确性。其中,数据记录为对应于数据库中一行信息的一组完整的相关信息。

可选地,可以校验至少一个数据库实例中每一项数据记录的数据的md5值,并与预先计算出的备份源中对应数据记录的数据的md5值相比,若计算出的md5值相同,则待校验数据通过完整性验证;否则,待校验数据未通过完整性验证。

数据项层级的校验操作为在数据项层级,校验至少一个数据库实例的备份数据的md5值的正确性。其中,数据项可以是字母、数字或两者的组合,是数据的不可分割的最小单位。

可选地,可以校验至少一个数据库实例中每一项数据项的数据的md5值,并与预先计算出的备份源中对应数据项的数据的md5值相比,若计算出的md5值相同,则待校验数据通过完整性验证;否则,待校验数据未通过完整性验证。

当然,除了采用三种校验操作中的任意一种来校验待校验数据的完整性,还可以采用上述三种校验操作中的任意两种或三种都采用。可选地,若所采用的至少一种校验操作均通过正确性校验,确定待校验数据通过完整性校验;若所采用的任意一种校验操作未通过正确性校验,则待校验数据未通过完整性校验。

本实施例中,通过数据表层级、数据记录层级以及数据项层级的校验操作,全方位、多角度校验待校验数据的完整性,有效保证了待校验数据的完整性。

可选地,抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性的过程,如图2所示,可以包括步骤s201以及步骤s202。

s201:根据至少一个数据库实例的重要度,确定至少一个数据库实例各自的抽样访问频率。

s202:按照至少一个数据库实例各自的抽样访问频率,分别抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性。

本实施例中,数据库实例的重要度指数据库实例中备份数据的重要度。可选地,备份数据的重要度越高,越应保证数据的可用性,则数据库实例的抽样访问频率应越高。在一示例中,数据库实例的重要度分为较重要、重要以及次要三种级别,可以确定较重要的数据库实例的抽样访问频率为间隔12小时一次,重要的数据库实例的抽样访问频率为间隔24小时一次,次要的数据库实例的抽样访问频率为间隔72小时一次。

接着,根据至少一个数据库实例各自的抽样访问频率,分别抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性。

可选地,抽样访问至少一个数据库实例的备份数据,可以是从至少一个数据库实例中的每一个数据库实例的备份数据中抽样部分数据进行访问操作。基于此,对至少一个数据库实例中的第一数据库实例,按照第一数据库实例的抽样访问频率,抽样访问第一数据库实例的备份数据,如图3所示,包括步骤s2021、步骤s2022以及步骤s2023。

s2021:按照第一数据库实例的抽样访问频率,对第一数据库实例的备份数据进行抽样,以获得抽样数据。

s2022:对抽样数据进行数据访问操作,以获得数据访问操作结果。

s2023:若数据访问操作结果正确,确定第一数据库实例的备份数据通过可用性验证。

其中,第一数据库实例可以是至少一个数据库实例中的任意一个。

步骤s2021中,抽样数据可以是从数据库实例的备份数据中抽样的部分数据表的数据。根据抽样访问频率,每次的抽样数据可以相同也可以不同,在一示例中,可以每次都抽样数据库实例中数据表1和数据表2的数据;也可以第一次抽样数据库实例中数据表1的数据,第二次访问数据库实例中数据表2的数据。

接着,对抽样数据进行数据访问操作。其中,数据访问操作包括数据查询操作以及数据统计操作。可选地,可以通过数据库应用提供的select*函数进行数据查询操作,通过数据库应用提供的count(*)函数进行数据统计操作。

select*函数用来查询抽样的数据表中的数据,例如查询数据表中的所有记录,查询列名称等。如果查询的数据与备份源的相应数据表中的数据相同,则数据查询操作结果正确;否则,数据查询操作结果不正确,第一数据库实例的备份数据未通过可用性校验,进而待校验数据未通过可用性校验。

count(*)用来统计抽样的数据表中记录行的数目。如果统计的数目与备份源的相应数据表中的数目之差,在预设误差范围内,则数据统计操作结果正确;否则,数据统计操作结果不正确,第一数据库实例的备份数据未通过可用性校验,进而待校验数据未通过可用性校验。

在一示例中,对数据表1进行count(*)操作,统计的数目为2000,备份源的数据表1中的数目为2010,则统计的数目与备份源中数据表1的数据之差为10,预设误差范围为-50~+50。可见,差值在预设误差范围内,则数据统计操作结果正确。

可选地,可以先进行数据查询操作,再进行数据统计操作;也可以先进行数据统计操作,再进行数据查询操作。若数据统计操作结果与数据查询操作结果均正确时,第一数据库实例的备份数据通过可用性校验。若至少一个数据库实例中的数据库实例均通过可用性校验,待校验数据通过可用性校验。

本实施例中,根据数据库实例的重要度确定数据库实例各自的抽样访问频率,能够保证重要度高的数据库实例的可用性,进一步提高了待校验数据的有效性。

上述实施例中,抽样访问的数据是从至少一个数据库实例中的每一个数据库实例的备份数据中抽样的,但不限于此。当数据库实例的数量较大时,还可以从至少一个数据库实例中,抽样访问部分数据库实例的数据。

可选地,抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性,包括:从至少一个数据库实例中,选择待校验数据库实例;抽样访问待校验数据库实例的备份数据,以验证待校验数据的可用性。

可选地,可以根据数据库实例的重要度,从至少一个数据库实例中选择待校验数据库实例,例如可以选择较重要的数据库实例作为待校验数据库实例。

接着,抽样访问待校验数据库实例的备份数据,可以按照待校验数据库实例各自的抽样访问频率,分别抽样访问数据库实例的备份数据,以验证待校验数据的可用性。其中,待校验数据的可用性校验方法参见步骤s2021、步骤s2022以及步骤s2023,此处不再赘述。

上述实施例是将至少一个数据库实例的备份数据的整体作为待校验数据,可选地,还可以以数据库实例为单位,将一个数据库实例中的备份数据作为待校验数据,进行数据库实例维度的完整性校验和可用性校验。

具体而言,若备份数据库中数据库实例启动成功,获取待校验数据库实例数据,待校验数据库实例数据包括启动成功的数据库实例的备份数据。校验所述数据库实例的备份数据的md5值的正确性,以验证待校验数据库实例数据的完整性;抽样访问所述数据库实例的备份数据,以验证待校验数据库实例数据的可用性。若待校验数据库实例数据的完整性和可用性均通过验证,存储待校验数据库实例数据。

当然,也可以先验证可用性,再验证完整性;也可以同时验证。

若完整性未通过验证,丢弃待校验数据库实例数据,重新备份所述数据库实例的数据;对重新备份的数据库实例的数据进行完整性校验和可用性校验。

若可用性未通过验证,丢弃待校验数据库实例数据,变更备份源,并从变更后的备份源,重新备份所述数据库实例的数据;对重新备份的数据库实例的数据进行完整性校验和可用性校验。

本实施例中,从数据库实例的维度进行完整性校验和可用性校验,实现了细粒度的校验策略,能够提高数据校验的准确性;以及当校验未通过时,重新备份数据库实例的数据,能够减小重新备份的数据量,节约系统资源。

本申请实施例还提供了一种数据库备份的校验装置300,如图4所示,包括获取模块301、第一校验模块302、第二校验模块303以及存储模块304。

其中,获取模块301,用于获取待校验数据,待校验数据包括至少一个数据库实例的备份数据。

第一校验模块302,用于校验获取模块301获取的至少一个数据库实例的备份数据的md5值的正确性,以验证待校验数据的完整性。

第二校验模块303,用于抽样访问获取模块301获取的至少一个数据库实例的备份数据,以验证待校验数据的可用性。

存储模块304,用于在所述第一校验模块校验的完整性和所述第二校验模块校验的可用性均通过验证时,存储所述待校验数据。

在本申请实施例中,通过校验md5值的正确性来验证待校验数据的完整性;以及通过抽样访问待校验数据,验证数据的可用性,若完整性与可用性均通过,则存储待校验数据。本申请实施例的上述校验机制能够准确校验备份数据的有效性,保证备份数据能够还原原始数据。

可选地,数据库备份的校验装置300还包括确定模块。

确定模块,用于在获取模块301获取待校验数据之前,确定所述至少一个数据库实例可成功启动。

在本申请实施例中,待校验的数据为启动成功的数据库实例的备份数据,即通过启动数据库实例对备份数据进行初步的校验;初步校验通过后,在验证完整性与可用性,进一步提高了校验的准确性,保证备份数据能够还原原始数据。

可选地,数据库备份的校验装置300还包括丢弃模块、第一备份模块以及第二备份模块。

其中,丢弃模块,用于若完整性未通过验证,丢弃待校验数据。第一备份模块在至少一个数据库实例的备份数据的完整性未通过验证时,用于从原备份源中,重新备份至少一个数据库实例的数据。

可选地,丢弃模块还用于:若可用性未通过验证,丢弃待校验数据。第二备份模块在至少一个数据库实例的备份数据的可用性未通过验证时,用于更新备份源;从更新后的备份源中,重新备份至少一个数据库实例的数据。

本实施例中,可以根据待校验数据未通过完整性校验或可用性校验时,从原备份源或者更新后的备份源,重新备份至少一个数据库实例的数据,保证数据库中更多数据的有效性。

可选地,第一校验模块302在检测至少一个数据库实例的备份数据的md5值的正确性,以验证待校验数据的完整性时,用于执行以下至少一种校验操作:

在数据表层级,校验至少一个数据库实例的备份数据的md5值的正确性;

在数据记录层级,校验至少一个数据库实例的备份数据的md5值的正确性;

在数据项层级,校验至少一个数据库实例的备份数据的md5值的正确性;

若至少一种校验操作均通过正确性校验,确定待校验数据通过完整性校验。

本实施例中,通过数据表层级、数据记录层级以及数据项层级的校验操作,全方位、多角度校验待校验数据的完整性,有效保证了待校验数据的完整性。

可选地,第二校验模块303在抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性时,具体用于:根据至少一个数据库实例的重要度,确定至少一个数据库实例各自的抽样访问频率;按照至少一个数据库实例各自的抽样访问频率,分别抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性。

可选地,第二校验模块303在对至少一个数据库实例中的第一数据库实例,按照第一数据库实例的抽样访问频率,抽样访问第一数据库实例的备份数据时,具体用于:按照第一数据库实例的抽样访问频率,对第一数据库实例的备份数据进行抽样,以获得抽样数据;对抽样数据进行数据访问操作,以获得数据访问操作结果;若数据访问操作结果正确,确定第一数据库实例的备份数据通过可用性验证。

本实施例中,根据数据库实例的重要度确定数据库实例各自的抽样访问频率,能够保证重要度高的数据库实例的可用性,进一步提高了待校验数据的有效性。

可选地,当数据库实例的数量较大时,第二校验模块303在抽样访问至少一个数据库实例的备份数据,以验证待校验数据的可用性时,具体用于:从至少一个数据库实例中,选择待校验数据库实例;抽样访问待校验数据库实例的备份数据,以验证待校验数据的可用性。

可选地,获取模块301还用于若备份数据库中数据库实例启动成功,获取待校验数据库实例数据,待校验数据库实例数据包括启动成功的数据库实例的备份数据。

进一步地,第一校验模块302还用于校验所述数据库实例的备份数据的md5值的正确性,以验证待校验数据库实例数据的完整性。

第二校验模块303还用于抽样访问所述数据库实例的备份数据,以验证待校验数据库实例数据的可用性。

存储模块304,还用于在第一校验模块302校验的完整性和第二校验模块303校验的可用性均通过验证时,存储待校验数据库实例数据。

本实施例中,从数据库实例的维度进行完整性校验和可用性校验,实现了细粒度的校验策略,能够提高数据校验的准确性;以及当校验未通过时,重新备份数据库实例的数据,能够减小重新备份的数据量,节约系统资源。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1