一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库备份方法、数据库还原方法和相关装置与流程

2021-12-07 21:17:00 来源:中国专利 TAG:
1.本发明涉及计算机
技术领域
:,尤其涉及一种数据库备份方法、数据库还原方法和相关装置。
背景技术
::2.关系型数据库备份一般采用数据库导出工具逐库逐表全量导出,再通过网络传送到备份服务器上。另外的方案是采用数据库表、字段配置的方式过滤出新数据后再导出,再通过网络传送到备份服务器上。3.binlog是数据库自身提供的一种可以实现数据库的增量与全量备份的功能。binlog虽可以满足绝大多数的数据库备份的需求,但仍有以下的不足:需要数据库配置开启相关的功能,有数据库版本限制,对于不同类型的数据库处理差别较大,通用性不强,备份日志文件本身是二进制文件不能直接以sql(结构化查询语言)形式查看,备份日志文件在数据库服务器本地,会占用服务器空间,如果数据库服务器发生损坏,备份文件也不能访问,该方式通常对全部记录所有的数据修改,不能进行定制化,通常测试环境的数据库修改更多的是数据库表结构变更及新增记录,且对数据库备份频率的实时性不高,具有一定的周期性,例如每周备份一次,全类型的数据库变更监控会增加数据库备份文件的大小。4.在实现本发明过程中,发明人发现现有技术中至少存在如下问题:5.全量导出速度较慢,会占用大量存储空间;采用数据库表、字段的配置方式,需人为对相应数据进行配置,当数据库表结构等发生变化时也需再次进行相应配置,并且基于配置的增量备份缺少数据库的还原机制,需要人工还原而易出错;基于binlog实现数据库备份有数据库版本限制,通用性差、不方便查看,在数据库服务器损坏的情况下无法访问备份数据,且数据修改不能定制化。技术实现要素:6.有鉴于此,本发明实施例提供一种数据库备份方法、数据库还原方法和相关装置,能够实现数据库增量和修改的自动识别,快速导出数据,缩短备份时间,备份磁盘空间占用少,减少人为配置,提供自动还原机制而避免人工还原出错,无数据库版本限制,通用性好、方便查看,数据库服务器损坏不影响备份数据访问,数据修改可定制。7.为实现上述目的,根据本发明实施例的一个方面,提供了一种数据库备份方法。8.一种数据库备份方法,包括:根据数据库的数据表的表名,得到所述数据表的元数据结果集,根据所述数据表的元数据结果集中的字段值,计算所述数据表的第一表结构校验码;在已存数据表元组结构集的数据表元组结构中查找所述第一表结构校验码,所述数据表元组结构中包括表结构校验码;在未查找到所述第一表结构校验码的情况下,获取所述数据表的数据记录集合,并根据所述数据表的数据记录集合生成与所述数据表对应的备份数据表。9.可选地,所述根据所述数据表的数据记录集合生成与所述数据表对应的备份数据表之后,还包括:生成与所述数据表对应的新的数据表元组结构并保存,得到更新的所述已存数据表元组结构集,所述新的数据表元组结构包括所述第一表结构校验码。10.可选地,还包括:在查找到所述第一表结构校验码的情况下,获取所述数据表的数据记录集合;对于所述数据表的数据记录集合中的数据记录,判断已存的与所述数据表对应的备份数据表记录中是否存在所述数据记录的主键值,并在不存在所述数据记录的主键值的情况下,生成与所述数据记录对应的备份数据记录。11.可选地,所述判断已存的与所述数据表对应的备份数据表记录中是否存在所述数据记录的主键值之前,还包括:根据所述数据记录的字段值,计算所述数据记录的第一记录校验码;所述方法还包括:在已存的与所述数据表对应的备份数据表记录中存在所述数据记录的主键值的情况下,在已存数据记录元组结构集的数据记录元组结构中查找所述数据记录的第一记录校验码,所述数据记录元组结构中包括记录校验码;在未查找到所述数据记录的第一记录校验码的情况下,生成与所述数据记录对应的备份数据记录。12.可选地,所述生成与所述数据记录对应的备份数据记录之后,还包括:生成与所述数据记录对应的第一新的数据记录元组结构并保存,得到第一更新的已存数据记录元组结构集,所述第一新的数据记录元组结构包括所述数据记录的第一记录校验码和所述数据记录的主键值。13.可选地,所述得到第一更新的已存数据记录元组结构集之后,所述方法还包括:根据所述第一更新的已存数据记录元组结构集中的各数据记录元组结构包括的主键值,得到主键值集合;对于所述数据表中除新增数据记录和修改数据记录之外的各剩余数据记录,将所述各剩余数据记录的主键值与所述主键值集合中的主键值比对,以确定所述数据表的已删除数据记录;其中,所述已删除数据记录的主键值在所述各剩余数据记录的主键值中不存在,但在所述主键值集合中存在;所述新增数据记录为主键值在所述备份数据表记录中不存在的数据记录,所述修改数据记录为在所述已存数据记录元组结构集的数据记录元组结构中未查找所述第一记录校验码的数据记录;分别生成与各所述已删除数据记录对应的第二新的数据记录元组结构并保存,得到第二更新的已存数据记录元组结构集,所述第二新的数据记录元组结构包括所述已删除数据记录对应的删除语句。14.可选地,所述新的数据表元组结构还包括:所述数据表的数据表信息、版本信息、版本生成时间和对应的建表语句,其中,所述建表语句是在生成与所述数据表对应的备份数据表的过程中生成的;所述第一新的数据记录元组结构还包括:所述数据表的版本信息、所述数据记录的时间戳信息、所述数据记录对应的插入语句;所述插入语句是在生成与所述数据记录对应的备份数据记录的过程中生成的。15.可选地,所述根据所述数据表的元数据结果集中的字段值,计算所述数据表的第一表结构校验码,包括:将所述数据表的元数据结果集的各字段值分别转换为第一字符串,并将所述第一字符串拼接,对拼接后的所述第一字符串通过数据摘要算法计算得到所述数据表的第一表结构校验码;所述根据所述数据记录的字段值,计算所述数据记录的第一记录校验码,包括:依序获取所述数据记录的各字段值,将所述字段值转换为第二字符串,并将所述第二字符串拼接,对拼接后的所述第二字符串通过数据摘要算法计算得到所述数据记录的第一记录校验码。16.根据本发明实施例的另一方面,提供了一种数据库还原方法。17.一种数据库还原方法,包括:获取与待还原数据库的数据表对应的各数据表元组结构,所述数据表元组结构包括所述数据表的版本信息、版本生成时间和对应的建表语句;确定所述版本生成时间在指定时间之前的所述数据表的最新版本信息,并执行所述数据表元组结构中与所述最新版本信息对应的所述建表语句,以还原所述数据表;在与所述最新版本信息对应的所述数据表的备份数据表中选出目标备份数据记录,所述目标备份数据记录为满足如下条件的备份数据记录:其时间戳信息不晚于所述指定时间,且在相同主键值对应的各备份数据记录中其所述时间戳信息最新;所述备份数据记录对应有数据记录元组结构,所述数据记录元组结构中包括所述备份数据记录对应的数据库语句;执行与所述目标备份数据记录对应的所述数据记录元组结构中的所述数据库语句,以在所述数据表中还原所述目标备份数据记录的内容。18.可选地,所述数据表元组结构是在备份所述数据表之后生成并保存的,当满足以下备份条件之一时备份所述数据表:所述数据表为新增数据表、所述数据表的表结构发生变化;所述备份数据记录对应的所述数据记录元组结构是在生成所述备份数据记录之后生成并保存的,当所述数据表的数据记录为新增数据记录或修改数据记录时,生成所述数据记录对应的备份数据记录。19.可选地,所述数据表元组结构还包括:所述数据表的数据表信息、所述数据表的表结构校验码,所述数据表的表结构校验码是在备份所述数据表之前根据所述数据表的元数据结果集中的字段值计算得到的,用于判断所述数据表是否满足所述备份条件;所述备份数据记录对应的所述数据记录元组结构还包括:所述数据表的版本信息以及所述备份数据记录对应的数据记录的主键值、时间戳信息和记录校验码,所述记录校验码是在备份所述数据记录之前根据所述数据记录的字段值计算得到的,用于判断是否需要生成所述备份数据记录。20.根据本发明实施例的又一方面,提供了一种数据库备份装置。21.一种数据库备份装置,包括:表结构校验码计算模块,用于根据数据库的数据表的表名,得到所述数据表的元数据结果集,根据所述数据表的元数据结果集中的字段值,计算所述数据表的第一表结构校验码;表结构校验码查找模块,用于在已存数据表元组结构集的数据表元组结构中查找所述第一表结构校验码,所述数据表元组结构中包括表结构校验码;数据备份模块,用于所述表结构校验码查找模块在未查找到所述第一表结构校验码的情况下,获取所述数据表的数据记录集合,并根据所述数据表的数据记录集合生成与所述数据表对应的备份数据表。22.可选地,还包括数据表元组结构生成模块,用于:生成与所述数据表对应的新的数据表元组结构并保存,得到更新的所述已存数据表元组结构集,所述新的数据表元组结构包括所述第一表结构校验码。23.可选地,所述数据备份模块还用于:在所述表结构校验码查找模块查找到所述第一表结构校验码的情况下,获取所述数据表的数据记录集合;对于所述数据表的数据记录集合中的数据记录,判断已存的与所述数据表对应的备份数据表记录中是否存在所述数据记录的主键值,并在不存在所述数据记录的主键值的情况下,生成与所述数据记录对应的备份数据记录。24.可选地,还包括记录校验码计算模块,用于:根据所述数据记录的字段值,计算所述数据记录的第一记录校验码;所述装置还包括记录校验码查找模块,用于:在已存的与所述数据表对应的备份数据表记录中存在所述数据记录的主键值的情况下,在已存数据记录元组结构集的数据记录元组结构中查找所述数据记录的第一记录校验码,所述数据记录元组结构中包括记录校验码;所述数据备份模块还用于:在所述记录校验码查找模块未查找到所述数据记录的第一记录校验码的情况下,生成与所述数据记录对应的备份数据记录。25.可选地,还包括数据记录元组结构生成模块,用于:生成与所述数据记录对应的第一新的数据记录元组结构并保存,得到第一更新的已存数据记录元组结构集,所述第一新的数据记录元组结构包括所述数据记录的第一记录校验码和所述数据记录的主键值。26.可选地,还包括已删除数据记录检查模块,用于:根据所述第一更新的已存数据记录元组结构集中的各数据记录元组结构包括的主键值,得到主键值集合;对于所述数据表中除新增数据记录和修改数据记录之外的各剩余数据记录,将所述各剩余数据记录的主键值与所述主键值集合中的主键值比对,以确定所述数据表的已删除数据记录;其中,所述已删除数据记录的主键值在所述各剩余数据记录的主键值中不存在,但在所述主键值集合中存在;所述新增数据记录为主键值在所述备份数据表记录中不存在的数据记录,所述修改数据记录为在所述已存数据记录元组结构集的数据记录元组结构中未查找所述第一记录校验码的数据记录;所述数据记录元组结构生成模块还用于:分别生成与各所述已删除数据记录对应的第二新的数据记录元组结构并保存,得到第二更新的已存数据记录元组结构集,所述第二新的数据记录元组结构包括所述已删除数据记录对应的删除语句。27.可选地,所述新的数据表元组结构还包括:所述数据表的数据表信息、版本信息、版本生成时间和对应的建表语句,其中,所述建表语句是在生成与所述数据表对应的备份数据表的过程中生成的;所述第一新的数据记录元组结构还包括:所述数据表的版本信息、所述数据记录的时间戳信息、所述数据记录对应的插入语句;所述插入语句是在生成与所述数据记录对应的备份数据记录的过程中生成的。28.可选地,所述表结构校验码计算模块还用于:将所述数据表的元数据结果集的各字段值分别转换为第一字符串,并将所述第一字符串拼接,对拼接后的所述第一字符串通过数据摘要算法计算得到所述数据表的第一表结构校验码;所述记录校验码计算模块还用于:依序获取所述数据记录的各字段值,将所述字段值转换为第二字符串,并将所述第二字符串拼接,对拼接后的所述第二字符串通过数据摘要算法计算得到所述数据记录的第一记录校验码。29.根据本发明实施例的又一方面,提供了一种数据库还原装置。30.一种数据库还原装置,包括:数据表元组结构获取模块,用于获取与待还原数据库的数据表对应的各数据表元组结构,所述数据表元组结构包括所述数据表的版本信息、版本生成时间和对应的建表语句;第一语句执行模块,用于确定所述版本生成时间在指定时间之前的所述数据表的最新版本信息,并执行所述数据表元组结构中与所述最新版本信息对应的所述建表语句,以还原所述数据表;备份数据记录选择模块,用于在与所述最新版本信息对应的所述数据表的备份数据表中选出目标备份数据记录,所述目标备份数据记录为满足如下条件的备份数据记录:其时间戳信息不晚于所述指定时间,且在相同主键值对应的各备份数据记录中其所述时间戳信息最新;所述备份数据记录对应有数据记录元组结构,所述数据记录元组结构中包括所述备份数据记录对应的数据库语句;第二语句执行模块,用于执行与所述目标备份数据记录对应的所述数据记录元组结构中的所述数据库语句,以在所述数据表中还原所述目标备份数据记录的内容。31.可选地,所述数据表元组结构是在备份所述数据表之后生成并保存的,当满足以下备份条件之一时备份所述数据表:所述数据表为新增数据表、所述数据表的表结构发生变化;所述备份数据记录对应的所述数据记录元组结构是在生成所述备份数据记录之后生成并保存的,当所述数据表的数据记录为新增数据记录或修改数据记录时,生成所述数据记录对应的备份数据记录。32.可选地,所述数据表元组结构还包括:所述数据表的数据表信息、所述数据表的表结构校验码,所述数据表的表结构校验码是在备份所述数据表之前根据所述数据表的元数据结果集中的字段值计算得到的,用于判断所述数据表是否满足所述备份条件;所述备份数据记录对应的所述数据记录元组结构还包括:所述数据表的版本信息以及所述备份数据记录对应的数据记录的主键值、时间戳信息和记录校验码,所述记录校验码是在备份所述数据记录之前根据所述数据记录的字段值计算得到的,用于判断是否需要生成所述备份数据记录。33.根据本发明实施例的又一方面,提供了一种电子设备。34.一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明实施例所提供的数据库备份方法或数据库还原方法。35.根据本发明实施例的又一方面,提供了一种计算机可读介质。36.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的数据库备份方法或数据库还原方法。37.上述发明中的一个实施例具有如下优点或有益效果:计算数据库的数据表的第一表结构校验码,在已存数据表元组结构集的数据表元组结构中未查找到该第一表结构校验码的情况下,生成该数据表的备份数据表。能够实现数据库增量和修改的自动识别,快速导出数据,缩短备份时间,减少备份磁盘空间占用,减少增量备份的人为配置,无数据库版本限制,通用性好,可直接以sql形式查看,在数据库服务器损坏的情况下仍可访问备份数据,数据修改可定制化。本发明一个实施例还提供自动还原的机制,根据与待还原数据库的数据表对应的各数据表元组结构,确定版本生成时间在指定时间之前的数据表的最新版本信息,并执行数据表元组结构中与该最新版本信息对应的建表语句,在与该最新版本信息对应的该数据表的备份数据表中选出目标备份数据记录,执行与目标备份数据记录对应的数据记录元组结构中的数据库语句,以在数据表中还原目标备份数据记录的内容,避免人工还原出错。38.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明39.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:40.图1是根据本发明一个实施例的数据库备份方法的主要步骤示意图;41.图2-1和图2-2是根据本发明一个实施例的数据表的元数据示意图;42.图3是根据本发明一个实施例的数据库备份流程示意图;43.图4是根据本发明一个实施例的数据库还原方法的主要步骤示意图;44.图5是根据本发明一个实施例的数据库备份装置的主要模块示意图;45.图6是根据本发明一个实施例的数据库还原装置的主要模块示意图;46.图7是本发明实施例可以应用于其中的示例性系统架构图;47.图8是适于用来实现本发明实施例的服务器的计算机系统的结构示意图。具体实施方式48.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。49.图1是根据本发明一个实施例的数据库备份方法的主要步骤示意图。50.如图1所示,本发明一个实施例的数据库备份方法主要包括如下的步骤s101至步骤s103。51.步骤s101:根据数据库的数据表的表名,得到数据表的元数据结果集,根据数据表的元数据结果集中的字段值,计算数据表的第一表结构校验码。52.步骤s102:在已存数据表元组结构集的数据表元组结构中查找第一表结构校验码,数据表元组结构中包括表结构校验码。53.步骤s103:在未查找到第一表结构校验码的情况下,获取数据表的数据记录集合(即各条数据记录(简称记录)的集合),并根据数据表的数据记录集合生成与数据表对应的备份数据表。54.其中,上述数据库的数据表是指待备份的数据库的数据表。数据表的元数据结果集是通过查询该数据表的元数据而得到的查询结果的集合,其中包括该数据表的所有元数据的信息。元数据是描述数据仓库内数据的结构和建立方法的数据,即描述数据库记录格式的数据。55.数据表元组结构即数据表的元组的结构,元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。在二维表里,元组也称为行。56.利用数据库连接信息,可以得到待备份数据库上的所有库信息。例如对于mysql(一个关系型数据库管理系统)而言,可以利用“showdatabases;”获得所有当前数据库实例上有权查看的所有数据库信息。逐一获得每个库上的所有数据表信息。例如对于mysql而言,可以利用“showtables;”获得所有当前数据库实例上有权查看的所有数据表信息。然后获得数据表的表名称(简称表名),通过表名查询表结构的元数据结果集(即数据表的元数据结果集),例如对于mysql而言,可以利用“select*frominformation_schema.columnswheretable_schema='数据库名称'andtable_name='表名称';”,获得所有当前数据库实例上有权查看的所有数据库信息,得到数据表的元数据结果集,例如图2-1和图2-2所示,其中图2-2为图2-1中内容的接续,图2-1、图2-2作为整体为本发明一个实施例的数据表的元数据结果集。57.在一个实施例中,根据数据表的元数据结果集中的字段值,计算数据表的第一表结构校验码,包括:将数据表的元数据结果集的各字段值分别转换为第一字符串,并将第一字符串拼接,对拼接后的第一字符串通过数据摘要算法计算得到数据表的第一表结构校验码。58.例如,可以按照从上到下、从左到右的顺序遍历数据表的元数据结果集中的信息,将其中的每个字段值转换为字符串类型,并将转换得到的字符串拼接,同时获得数据表的主键字段、字段类型、字段备注等元数据的信息。对该数据表的元数据结果集拼接后的字符串利用数据摘要算法计算得到该数据表的表结构校验码,即第一表结构校验码。数据摘要算法可以是但不限于以下算法:crc(cyclicredundancycheck,循环冗余校验)算法、md5(message-digestalgorithm5,消息摘要算法版本5)等算法。以crc算法为例,计算第一表结构校验码即计算该数据表的元数据结果集拼接后的字符串的crc值。59.在已存数据表元组结构集的数据表元组结构中查找第一表结构校验码,例如,可以查找已存数据表元组结构集的数据表元组结构中是否存在与该数据表的表名对应的表结构校验码。60.在未查找到该第一表结构校验码的情况下,则表示该数据表在备份数据库中不存在(即该数据表为上次备份之后新增的数据表)或数据表结构发生变化,那么获取该数据表的数据记录集合,并根据该数据表的数据记录集合生成与该数据表对应的备份数据表,以将该数据表备份。61.在一个实施例中,根据该数据表的数据记录集合生成与该数据表对应的备份数据表之后,还可以生成与该数据表对应的新的数据表元组结构并保存,得到更新的已存数据表元组结构集,更新的已存数据表元组结构集为加入该新的数据表元组结构之后的已存数据表元组结构集。62.数据表元组结构可以包括但不限于:表结构校验码、数据表信息、数据表版本信息、版本生成时间和对应的建表语句,其中,数据表信息包括但不限于数据表的表名,表中的字段、类型等元数据的描述信息;建表语句例如建表sql语句,是在生成与数据表对应的备份数据表的过程中生成的,可以用于后续还原该数据表。上述生成的新的数据表元组结构例如为:(该数据表的数据表信息,数据表版本信息,版本生成时间,第一表结构校验码,该数据表的建表sql语句)。63.其中数据表版本信息包括:数据库连接信息.库名称.表名称 自增整数,当表结构发生变化时,会生成新的版本信息,即自增整数项加1,以区分不同的数据库表版本,对于新的数据表版本,需要重新生成新的数据表元组结构,即已存数据表元组结构集中的数据表元组结构记录只会新增,不会修改。对于mysql数据库而言,可以通过“showcreatetable表名;”得到该数据表对应的建表语句。64.在查找到该第一表结构校验码的情况下,则表示该数据表的版本未修改,那么,查询并获取该数据表的数据记录集合。可以根据预定的阈值对查询到的总记录数进行分页,例如1000个数据记录作为一页。并根据数据库备份程序所在服务器的cpu核数,多线程循环处理每页的数据记录。可以首先根据数据记录的字段值,计算数据记录的第一记录校验码。65.在一个实施例中,根据数据记录的字段值,计算数据记录的第一记录校验码,包括:依序获取数据记录的各字段值,将字段值转换为第二字符串,并将第二字符串拼接,对拼接后的第二字符串通过数据摘要算法计算得到该数据记录的第一记录校验码。例如,以上述分页得到的每页的数据记录的集合作为一个结果集,依次取该结果集中的数据记录,对于每个数据记录从左向右取字段值,然后将字段值转换为字符串,并拼接该字符串,对拼接后的字符串利用数据摘要算法计算得到该数据记录的记录校验码,即第一记录校验码。数据摘要算法可以是但不限于以下算法:crc算法、md5算法等。以crc算法为例,计算第一记录校验码即计算该数据记录拼接后的字符串的crc值。66.对于数据表的数据记录集合中的任一数据记录,判断已存的与该数据表对应的备份数据表记录中是否存在该数据记录的主键值。67.其中,如果已存的与该数据表对应的备份数据表记录中不存在该数据记录的主键值,则表示该数据记录为上次备份之后的新增数据记录,那么,生成与该数据记录对应的备份数据记录,以将该数据记录备份。并且,在备份数据库中保存该新增数据记录的插入语句。68.如果已存的与该数据表对应的备份数据表记录中存在该数据记录的主键值,则表示该数据记录不是新增数据记录,那么,在已存数据记录元组结构集的数据记录元组结构中查找数据记录的第一记录校验码,即查找已存数据记录元组结构集的数据记录元组结构中是否包括与该第一记录校验码一致的记录校验码。69.数据记录元组结构即数据库记录的元组的结构,元组(tuple)的概念上文已经介绍,此处不再赘述。70.其中,如果未查找到该数据记录的第一记录校验码,则表示该数据记录为上次备份之后做了修改的修改数据记录,那么生成与该数据记录对应的备份数据记录,以将该数据记录备份。并且,在备份数据库中保存该修改数据记录的相应字段的修改语句。71.如果已存的与该数据表对应的备份数据表记录中存在该数据记录的主键值,并且,在已存数据记录元组结构集的数据记录元组结构中查找到该数据记录的第一记录校验码,表示该数据记录既不是新增数据记录也不是修改数据记录,则无需备份该数据记录。72.在一个实施例中,生成与该数据记录对应的备份数据记录之后,还包括:生成与该数据记录对应的第一新的数据记录元组结构并保存,得到第一更新的已存数据记录元组结构集,该第一更新的已存数据记录元组结构集是加入该第一新的数据记录元组结构之后的已存数据记录元组结构集。73.在数据记录新增或修改的情况下备份之后生成的数据记录元组结构可以包括但不限于:数据记录的记录校验码、数据记录的主键值、数据表的版本信息、数据记录的时间戳信息、数据记录对应的插入语句(insert语句)。该插入语句是在生成与数据记录对应的备份数据记录的过程中生成的,可以用于后续还原该数据记录。例如,上述第一新的数据记录元组结构可以为:(该数据表版本信息,该数据记录的主键值,该数据记录的时间戳信息,第一记录校验码,该数据记录对应的insert语句)。74.已存数据记录元组结构集中的数据记录元组结构均采用新增方式记录,可以对于查询的结果集(每页的数据记录的集合)可以逆向生成对应的insert语句,然后保存在数据记录对应的insert语句字段中。75.对于既不是新增数据记录也不是修改数据记录的数据记录,无需生成上述第一新的数据记录元组结构。76.在一个实施例中,得到第一更新的已存数据记录元组结构集之后,还可以根据第一更新的已存数据记录元组结构集中的各数据记录元组结构中所包括的主键值,得到主键值集合。77.对于数据表中除新增数据记录和修改数据记录之外的各剩余数据记录,将各剩余数据记录的主键值与主键值集合中的主键值比对,以确定数据表的已删除数据记录;其中,已删除数据记录的主键值在各剩余数据记录的主键值中不存在,但在主键值集合中存在;新增数据记录为主键值在备份数据表记录中不存在的数据记录,即上次备份之后的新增加的数据记录;修改数据记录为在已存数据记录元组结构集的数据记录元组结构中未查找第一记录校验码的数据记录,即上次备份之后又做了修改的数据记录。分别生成与各已删除数据记录对应的第二新的数据记录元组结构并保存,得到第二更新的已存数据记录元组结构集,第二更新的已存数据记录元组结构集在第一更新的已存数据记录元组结构集基础上增加了上述第二新的数据记录元组结构。78.第二新的数据记录元组结构包括已删除数据记录对应的删除语句。79.本发明实施例很好地满足各种应用场景(例如测试场景)下的数据库备份需求,数据修改可定制,实现数据库增量和修改的自动识别,快速导出数据,缩短备份的时间,并且占用备份磁盘空间少。80.图3是根据本发明一个实施例的数据库备份流程示意图。如图3所示,连接数据库,即利用数据库连接信息,得到待备份数据库上的所有库信息;获得表元数据,即从待备份数据库获取数据表的元数据结果集;进行表数据摘要计算,即计算待备份数据库的数据表的表结构校验码(第一表结构校验码);获得记录信息,即获取该数据表的数据记录集合;进行记录摘要计算,即计算数据记录的记录校验码(第一记录校验码)。81.循环遍历表(即数据表),得到表元数据(即数据表的元数据结果集),根据通过表数据摘要计算得到的表结构校验码(第一表结构校验码),判断该数据表是否为新增的或表结构发生变化的数据表,其中,该表结构校验码在已存数据表元组结构集的数据表元组结构中不存在时,该数据表为新增的或表结构发生变化的数据表,否则,不是新增的或表结构发生变化的数据表。82.如果是新增的或表结构发生变化的数据表,则获取该数据表的数据记录集合,进行该数据表备份(将数据记录集合中所有数据记录备份)。83.如果该数据表不是新增的或表结构发生变化的数据表,则获取该数据表的数据记录集合,并进行记录摘要计算,得到数据记录集合中各数据记录的记录校验码(第一记录校验码),然后,多线程遍历数据记录(即数据记录),首先判断数据记录的主键值在该数据表对应的备份数据表记录中是否存在,若存在,则该数据记录不是新增数据记录,若不存在,则该数据记录是新增数据记录,将该新增数据记录备份。84.如果该数据记录不是新增数据记录,则进一步判断该数据记录是否为修改数据记录,具体地,判断第一记录校验码在已存数据记录元组结构集的数据记录元组结构中是否存在,若存在,则该数据记录不是修改数据记录,若不存在,则该数据记录为修改数据记录,将该修改数据记录备份。85.在某数据表为新增的或表结构发生变化的数据表的情况下,需要生成与该数据表对应的新的数据表元组结构并保存,即图3中获取更新表元组的步骤。在某数据记录为新增数据记录或修改数据记录的情况下,需要生成与该数据记录对应的新的数据记录元组结构并保存,即图3中获取更新记录元组的步骤。表元组与记录元组为一对多的对应关系,即每一数据表的数据表元组结构与该数据表的多个数据记录的数据记录元组结构相对应。86.本发明实施例利用数据表元组结构与数据记录元组结构保存数据库表与记录的变化,利用数据库的元数据识别数据库字段及主键信息,并验证数据记录是否新增或修改,实现与数据结构无关的增量备份的目的。87.图4是根据本发明一个实施例的数据库还原方法的主要步骤示意图。88.如图4所示,本发明一个实施例的数据库还原方法主要包括如下的步骤s401至步骤s404。89.步骤s401:获取与待还原数据库的数据表对应的各数据表元组结构,数据表元组结构包括数据表的版本信息、版本生成时间和对应的建表语句;90.步骤s402:确定版本生成时间在指定时间之前的数据表的最新版本信息,并执行数据表元组结构中与最新版本信息对应的建表语句,以还原数据表;91.步骤s403:在与最新版本信息对应的数据表的备份数据表中选出目标备份数据记录,目标备份数据记录为满足如下条件的备份数据记录:其时间戳信息不晚于指定时间,且在相同主键值对应的各备份数据记录中其时间戳信息最新;备份数据记录对应有数据记录元组结构,数据记录元组结构中包括备份数据记录对应的数据库语句;92.步骤s404:执行与目标备份数据记录对应的数据记录元组结构中的数据库语句,以在数据表中还原目标备份数据记录的内容。93.待还原数据库即需要将备份数据还原到其中的数据库。94.用户还原数据库时需指定数据库连接信息与备份时间,该备份时间即上述的指定时间。例如周一生成了一个数据库版本,周四生成了一个数据库版本,用户输入的备份时间(即指定时间)为周三,那么还原时选择的数据库版本为周一的版本(即版本生成时间在指定时间周三之前的数据表的最新版本信息),在此之前的旧版本数据表不需要还原,还原的数据记录为周一至周三的数据记录。95.执行数据表元组结构中与最新版本信息对应的建表sql语句,以还原数据表之前,先删除待还原的数据表,然后执行该建表sql语句。96.再获得该最新版本信息对应的数据表记录的数据信息,且过滤掉在备份时间以后的数据表记录,即过滤掉时间戳信息晚于上述指定时间的数据记录,例如对于上例,则过滤掉时间戳信息晚于周三的数据记录。并且,取每个主键对应的最新的备份记录信息(旧数据已经修改而不需要还原),例如对于上例,如果时间戳信息不晚于周三的数据记录中,某个主键值下有多个备份数据记录,则只将其中时间戳信息最新的一个备份数据记录作为目标备份数据记录。逐一执行目标备份数据记录对应的数据记录元组结构中的sql语句,例如插入语句,直到所有的数据表中的数据记录全部恢复完结束数据库还原流程。97.数据表元组结构是在备份数据表之后生成并保存的,当满足以下备份条件之一时备份数据表:数据表为新增数据表、数据表的表结构发生变化。98.备份数据记录对应的数据记录元组结构是在生成备份数据记录之后生成并保存的,当数据表的数据记录为新增数据记录或修改数据记录时,生成数据记录对应的备份数据记录。99.数据表元组结构还可以包括但不限于:数据表的数据表信息、数据表的表结构校验码,数据表的表结构校验码是在备份数据表之前根据数据表的元数据结果集中的字段值计算得到的,用于判断数据表是否满足上述备份条件。100.备份数据记录对应的数据记录元组结构还可以包括但不限于:数据表的版本信息以及备份数据记录对应的数据记录的主键值、时间戳信息和记录校验码,记录校验码是在备份数据记录之前根据数据记录的字段值计算得到的,用于判断是否需要生成备份数据记录。101.由于数据记录与其备份数据记录是相对应的,一数据记录的备份数据记录对应的数据记录元组结构即该数据记录对应的数据记录元组结构。102.关于数据表元组结构和数据记录元组结构以及表结构校验码和记录校验码的计算等内容在上文介绍数据库备份方法的实施例中已经详细介绍,此处不再赘述。103.图5是根据本发明一个实施例的数据库备份装置的主要模块示意图。104.如图5所示,本发明一个实施例的数据库备份装置500主要包括:表结构校验码计算模块501、表结构校验码查找模块502、数据备份模块503。105.表结构校验码计算模块501,用于根据数据库的数据表的表名,得到数据表的元数据结果集,根据数据表的元数据结果集中的字段值,计算数据表的第一表结构校验码。106.表结构校验码查找模块502,用于在已存数据表元组结构集的数据表元组结构中查找第一表结构校验码,数据表元组结构中包括表结构校验码。107.数据备份模块503,用于表结构校验码查找模块在未查找到第一表结构校验码的情况下,获取该数据表的数据记录集合,并根据该数据表的数据记录集合生成与该数据表对应的备份数据表。108.数据库备份装置500还可以包括数据表元组结构生成模块,用于:生成与该数据表对应的新的数据表元组结构并保存,得到更新的已存数据表元组结构集,该新的数据表元组结构包括第一表结构校验码。109.数据备份模块503还可以用于:在表结构校验码查找模块查找到第一表结构校验码的情况下,获取数据表的数据记录集合;对于数据表的数据记录集合中的数据记录,判断已存的与数据表对应的备份数据表记录中是否存在该数据记录的主键值,并在不存在该数据记录的主键值的情况下,生成与该数据记录对应的备份数据记录。110.上述新的数据表元组结构还可以包括:数据表的数据表信息、版本信息、版本生成时间和对应的建表语句,其中,建表语句是在生成与数据表对应的备份数据表的过程中生成的。111.数据库备份装置500还可以包括记录校验码计算模块,用于:根据数据记录的字段值,计算数据记录的第一记录校验码。112.数据库备份装置500还可以包括记录校验码查找模块,用于:在已存的与数据表对应的备份数据表记录中存在该数据记录的主键值的情况下,在已存数据记录元组结构集的数据记录元组结构中查找该数据记录的第一记录校验码,数据记录元组结构中包括记录校验码。113.数据备份模块503还可以用于:在记录校验码查找模块未查找到该数据记录的第一记录校验码的情况下,生成与该数据记录对应的备份数据记录。114.数据库备份装置500还可以包括数据记录元组结构生成模块,用于:生成与该数据记录对应的第一新的数据记录元组结构并保存,得到第一更新的已存数据记录元组结构集,该第一新的数据记录元组结构包括该数据记录的第一记录校验码和该数据记录的主键值。115.该第一新的数据记录元组结构还可以包括:数据表的版本信息、数据记录的时间戳信息、数据记录对应的插入语句;插入语句是在生成与数据记录对应的备份数据记录的过程中生成的。116.数据库备份装置500还可以包括已删除数据记录检查模块,用于:根据第一更新的已存数据记录元组结构集中的各数据记录元组结构包括的主键值,得到主键值集合;对于数据表中除新增数据记录和修改数据记录之外的各剩余数据记录,将各剩余数据记录的主键值与主键值集合中的主键值比对,以确定数据表的已删除数据记录;其中,已删除数据记录的主键值在各剩余数据记录的主键值中不存在,但在主键值集合中存在;新增数据记录为主键值在备份数据表记录中不存在的数据记录,修改数据记录为在已存数据记录元组结构集的数据记录元组结构中未查找第一记录校验码的数据记录。117.数据记录元组结构生成模块还可以用于:分别生成与各已删除数据记录对应的第二新的数据记录元组结构并保存,得到第二更新的已存数据记录元组结构集,该第二新的数据记录元组结构包括已删除数据记录对应的删除语句。118.表结构校验码计算模块501具体可以用于:将数据表的元数据结果集的各字段值分别转换为第一字符串,并将第一字符串拼接,对拼接后的第一字符串通过数据摘要算法计算得到该数据表的第一表结构校验码。119.记录校验码计算模块具体可以用于:依序获取数据记录的各字段值,将字段值转换为第二字符串,并将第二字符串拼接,对拼接后的第二字符串通过数据摘要算法计算得到该数据记录的第一记录校验码。120.图6是根据本发明一个实施例的数据库还原装置的主要模块示意图。121.如图6所示,本发明一个实施例的数据库还原装置600主要包括:数据表元组结构获取模块601、第一语句执行模块602、备份数据记录选择模块603、第二语句执行模块604。122.数据表元组结构获取模块601,用于获取与待还原数据库的数据表对应的各数据表元组结构,数据表元组结构包括数据表的版本信息、版本生成时间和对应的建表语句。123.第一语句执行模块602,用于确定版本生成时间在指定时间之前的数据表的最新版本信息,并执行数据表元组结构中与该最新版本信息对应的建表语句,以还原数据表。124.备份数据记录选择模块603,用于在与最新版本信息对应的数据表的备份数据表中选出目标备份数据记录,目标备份数据记录为满足如下条件的备份数据记录:其时间戳信息不晚于指定时间,且在相同主键值对应的各备份数据记录中其时间戳信息最新;备份数据记录对应有数据记录元组结构,数据记录元组结构中包括备份数据记录对应的数据库语句。125.第二语句执行模块604,用于执行与目标备份数据记录对应的数据记录元组结构中的数据库语句,以在数据表中还原目标备份数据记录的内容。126.数据表元组结构是在备份数据表之后生成并保存的,当满足以下备份条件之一时备份一个数据表:该数据表为新增数据表、该数据表的表结构发生变化;备份数据记录对应的数据记录元组结构是在生成备份数据记录之后生成并保存的,当数据表的数据记录为新增数据记录或修改数据记录时,生成该数据记录对应的备份数据记录。127.数据表元组结构还包括:数据表的数据表信息、数据表的表结构校验码,数据表的表结构校验码是在备份数据表之前根据该数据表的元数据结果集中的字段值计算得到的,用于判断该数据表是否满足上述备份条件。128.备份数据记录对应的数据记录元组结构还包括:数据表的版本信息以及备份数据记录对应的数据记录的主键值、时间戳信息和记录校验码,记录校验码是在备份该数据记录之前根据该数据记录的字段值计算得到的,用于判断是否需要生成备份数据记录。129.另外,在本发明实施例中所述数据库备份装置、数据库还原装置的具体实施内容,在上面所述数据库备份方法、数据库还原方法中已经详细说明了,故在此重复内容不再说明。130.图7示出了可以应用本发明实施例的数据库备份方法、数据库还原方法或数据库备份装置、数据库还原装置的示例性系统架构700。131.如图7所示,系统架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。132.用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。133.终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。134.服务器705可以是提供各种服务的服务器,例如对用户利用终端设备701、702、703所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。135.需要说明的是,本发明实施例所提供的数据库备份方法、数据库还原方法一般由服务器705执行,相应地,数据库备份装置、数据库还原装置一般设置于服务器705中。136.应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。137.下面参考图8,其示出了适于用来实现本技术实施例的服务器的计算机系统800的结构示意图。图8示出的服务器仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。138.如图8所示,计算机系统800包括中央处理单元(cpu)801,其可以根据存储在只读存储器(rom)802中的程序或者从存储部分808加载到随机访问存储器(ram)803中的程序而执行各种适当的动作和处理。在ram803中,还存储有系统800操作所需的各种程序和数据。cpu801、rom802以及ram803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。139.以下部件连接至i/o接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至i/o接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。140.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(cpu)801执行时,执行本技术的系统中限定的上述功能。141.需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。142.附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。143.描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括表结构校验码计算模块、表结构校验码查找模块、数据备份模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,表结构校验码计算模块还可以被描述为“用于根据数据库的数据表的表名,得到数据表的元数据结果集,根据数据表的元数据结果集中的字段值,计算数据表的第一表结构校验码的模块”。144.作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据数据库的数据表的表名,得到所述数据表的元数据结果集,根据所述数据表的元数据结果集中的字段值,计算所述数据表的第一表结构校验码;在已存数据表元组结构集的数据表元组结构中查找所述第一表结构校验码,所述数据表元组结构中包括表结构校验码;在未查找到所述第一表结构校验码的情况下,获取所述数据表的数据记录集合,并根据所述数据表的数据记录集合生成与所述数据表对应的备份数据表。或者,获取与待还原数据库的数据表对应的各数据表元组结构,所述数据表元组结构包括所述数据表的版本信息、版本生成时间和对应的建表语句;确定所述版本生成时间在指定时间之前的所述数据表的最新版本信息,并执行所述数据表元组结构中与所述最新版本信息对应的所述建表语句,以还原所述数据表;在与所述最新版本信息对应的所述数据表的备份数据表中选出目标备份数据记录,所述目标备份数据记录为满足如下条件的备份数据记录:其时间戳信息不晚于所述指定时间,且在相同主键值对应的各备份数据记录中其所述时间戳信息最新;所述备份数据记录对应有数据记录元组结构,所述数据记录元组结构中包括所述备份数据记录对应的数据库语句;执行与所述目标备份数据记录对应的所述数据记录元组结构中的所述数据库语句,以在所述数据表中还原所述目标备份数据记录的内容。145.根据本发明实施例的技术方案,计算数据库的数据表的第一表结构校验码,在已存数据表元组结构集的数据表元组结构中未查找到该第一表结构校验码的情况下,生成该数据表的备份数据表。能够实现数据库增量和修改的自动识别,快速导出数据,缩短备份的时间,减少备份磁盘空间占用,减少增量备份的人为配置,无数据库版本限制,通用性好,可直接以sql形式查看,在数据库服务器损坏的情况下仍可访问备份数据,数据修改可定制化。本发明一个实施例还提供自动还原的机制,根据与待还原数据库的数据表对应的各数据表元组结构,确定版本生成时间在指定时间之前的数据表的最新版本信息,并执行数据表元组结构中与该最新版本信息对应的建表语句,在与该最新版本信息对应的该数据表的备份数据表中选出目标备份数据记录,执行与目标备份数据记录对应的数据记录元组结构中的数据库语句,以在数据表中还原目标备份数据记录的内容,避免人工还原出错。146.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献