数据备份与恢复方法及装置制造方法【专利摘要】本发明提供一种数据备份方法,包括:获取数据库中未备份的表的大小及其总行数;根据该总行数与预置的第一命令行选项的值,计算该未备份的表的每一分片中包含的给定的结构化查询语言语句的目标行数;当该未备份的表的大小大于或等于预置的第二命令行选项的值时,根据该总行数与该目标行数将该未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出。本发明还提供一种数据恢复方法、数据备份装置以及数据恢复装置,上述数据备份与恢复方法及装置可加快恢复数据的速度,提高处理数据的效率。【专利说明】数据备份与恢复方法及装置【
技术领域:
】[0001]本发明涉及计算机【
技术领域:
】,尤其涉及一种数据备份与恢复方法及装置。【
背景技术:
】[0002]随着计算机的普及应用,人们越来越习惯于通过计算机来获取信息、处理信息,同时将自己最重要的信息以数据文件的形式保存在计算机中。为了对这些数据文件进行有效管理,数据库技术应运而生。数据备份与恢复是数据库技术的重要组成部分。其中,数据备份,是指将全部或部分数据集合从运行数据库实例的硬盘或阵列复制到其它的存储介质的过程,数据集合包括但不限于表内容、表结构、表函数、视图、触发器、存储过程等。数据恢复,是指使用数据备份将数据导入数据库从而实现还原数据内容、状态、结构的一种形式。[0003]现有的数据库技术,由于都是通过串行执行备份文件中的SQL(StructuredQueryLanguage,结构化查询语言)语句来实现数据恢复,因此在大数据场景下恢复速度非常缓慢,无法胜任快速恢复数据服务的需求。【
发明内容】[0004]有鉴于此,本发明提供一种数据备份与恢复方法及装置,可实现基于大表拆分的数据备份以及数据并行恢复,从而可加快恢复数据的速度,提高处理数据的效率。[0005]本发明实施例提供的一种数据备份方法,包括:获取数据库中未备份的表的大小及其总行数;根据所述总行数与预置的第一命令行选项的值,计算所述未备份的表的每一分片中包含的给定的结构化查询语言语句的目标行数;当所述未备份的表的大小大于或等于预置的第二命令行选项的值时,根据所述总行数与所述目标行数将所述未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出。[0006]本发明实施例提供的一种数据恢复方法,包括:获取备份元数据文件,所述备份元数据文件包括数据库中的表的每个分片对应的目标分片备份文件;生成所述备份元数据文件对应的数据恢复任务,将所述数据恢复任务加入任务队列;通过多个处理进程并行地获取所述任务队列中的目标数据恢复任务,并进行处理,以恢复数据库中对应的数据。[0007]本发明实施例提供的一种数据备份装置,包括:第一获取模块,用于获取数据库中未备份的表的大小及其总行数;计算模块,用于根据所述第一获取模块获取的所述总行数与预置的第一命令行选项的值,计算所述未备份的表的每一分片中包含的给定的结构化查询语言语句的目标行数;备份模块,用于当所述第一获取模块获取的所述未备份的表的大小大于或等于预置的第二命令行选项的值时,根据所述第一获取模块获取的所述总行数与所述计算模块计算的所述目标行数将所述未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出。[0008]本发明实施例提供的一种数据恢复装置,其特征在于,包括:获取模块,用于获取备份元数据文件,所述备份元数据文件包括数据库中的表的每个分片对应的目标分片备份文件;生成模块,用于生成所述获取模块获取的所述备份元数据文件对应的数据恢复任务,将所述数据恢复任务加入任务队列;恢复模块,用于通过多个处理进程并行地获取所述任务队列中的目标数据恢复任务,并进行处理,以恢复所述数据库中对应的数据。[0009]本发明实施例提供的上述数据备份与恢复方法及装置,通过在数据备份时,将数据库中大小超过预置的第二命令行选项的值的表拆分为若干个分片,并根据该若干个分片生成对应的目标分片备份文件,在数据恢复时,利用多个处理进程并行地获取任务列表中的任务及该任务对应的目标分片备份文件,并进行处理,打破了现有技术中串行恢复数据的桎梏,可加快恢复数据的速度,提高处理数据的效率。[0010]为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。【专利附图】【附图说明】[0011]图1为本发明实施例提供的数据备份与恢复方法及装置的应用环境图;[0012]图2示出了一种服务器的结构框图;[0013]图3为本发明第一实施例提供的数据备份方法的流程图;[0014]图4为本发明第二实施例提供的数据备份方法的流程图;[0015]图5为本发明第二实施例提供的数据备份方法中部分步骤的流程图;[0016]图6为本发明第二实施例提供的数据备份方法中部分步骤的流程图;[0017]图7为本发明第二实施例提供的数据备份方法中部分步骤的流程图;[0018]图8为本发明第三实施例提供的数据恢复方法的流程图;[0019]图9为本发明第四实施例提供的数据恢复方法的流程图;[0020]图10为本发明第四实施例提供的数据恢复方法中部分步骤的流程图;[0021]图11为本发明第五实施例提供的数据备份装置的结构示意图;[0022]图12为图11的装置的存储环境示意图;[0023]图13为本发明第六实施例提供的数据备份装置的结构示意图;[0024]图14为本发明第六实施例提供的数据备份装置中部分模块的结构示意图;[0025]图15为本发明第六实施例提供的数据备份装置中部分模块的结构示意图;[0026]图16为本发明第七实施例提供的数据备份装置的结构示意图;[0027]图17为图16的装置的存储环境示意图;[0028]图18为本发明第八实施例提供的数据备份装置的结构示意图;[0029]图19为本发明第八实施例提供的数据备份装置中部分模块的结构示意图。【具体实施方式】[0030]为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的【具体实施方式】、结构、特征及其功效,详细说明如后。[0031]图1为本发明实施例提供的数据备份与恢复方法及装置的应用环境图。本发明实施例提供的数据备份与恢复方法及装置可应用于图1所示的环境中,实现基于数据库的数据备份与恢复。如图1所示,服务器100与存储服务器200位于有线或无线网络中,通过该有线或无线网络,服务器100与存储服务器200进行数据交互。[0032]具体地,一方面,在对数据库中的数据进行备份时,服务器100获取数据库中未备份的表的大小及其总行数;根据该总行数与预置的第一命令行选项的值,计算该未备份的表的每一分片中包含的给定的结构化查询语言语句的目标行数;当该未备份的表的大小大于或等于预置的第二命令行选项的值时,根据该总行数与该目标行数将该未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出至存储服务器200。[0033]另一方面,在对该数据库中的数据进行恢复时,服务器100从存储服务器200获取备份元数据文件,该备份元数据文件包括数据库中的表的每个分片对应的目标分片备份文件,生成该备份元数据文件对应的数据恢复任务,将该数据恢复任务加入任务队列;通过多个处理进程并行地获取该任务队列中的目标数据恢复任务,并进行处理,以恢复该数据库中对应的数据。[0034]可以理解地,本实施例提供的数据备份与恢复方法也可适用于终端设备。终端设备可以包括:预置有数据库的平板电脑、膝上型便携计算机、台式计算机、一体机等等。[0035]图2示出了一种服务器的结构框图,如图2所示,服务器100包括:存储器101、处理器102以及网络模块103。[0036]可以理解,图2所示的结构仅为示意,服务器100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。另外,本发明实施例中的服务器还可以包括多个具体不同功能的服务器。[0037]存储器101可用于存储软件程序以及模块,如本发明实施例中的数据备份与恢复方法及装置对应的程序指令/模块,处理器102通过运行存储在存储器101内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现本发明实施例中的数据备份与恢复方法。存储器101可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器101可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器100。进一步地,上述软件程序以及模块还可包括:操作系统121以及服务模块122。其中操作系统121,例如可为LINUX、UNIX、WINDOWS,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通讯,从而提供其他软件组件的运行环境。服务模块122运行在操作系统121的基础上,并通过操作系统121的网络服务监听来自网络的请求,根据请求完成相应的数据处理,并返回处理结果给客户端。也就是说,服务模块122用于向客户端提供网络服务。[0038]网络模块103用于接收以及发送网络信号。上述网络信号可包括无线信号或者有线信号。在一个实例中,上述网络信号为有线网络信号。此时,网络模块103可包括处理器、随机存储器、转换器、晶体振荡器等元件。[0039]第一实施例[0040]请参阅图3,图3为本发明第一实施例提供的数据备份方法的流程图。本实施例可应用于图1所示的应用环境中,通过图1所示的服务器100实现基于数据库的数据备份。如图3所示,本实施例提供的数据备份方法包括:[0041]步骤S11,获取数据库中未备份的表的大小及其总行数;[0042]表(或称数据表)是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容。根据信息的分类情况,一个数据库中可能包含若干个数据表。在数据表中,每一列是一个字段,每一行是一条记录,每一条记录包含这行中的所有信息。[0043]于本实施例中,服务器100中预置有数据库(Database),根据预置的备份策略,月艮务器100定期对数据库中的数据进行备份。或者服务器100也可以根据用户的指令执行数据备份操作。当针对该数据库的数据备份操作被触发时,服务器100遍历该数据库中的所有的表,获取未备份的表的内容数据的大小及该未备份的表的总行数。[0044]步骤S12,根据该总行数与预置的第一命令行选项的值,计算该未备份的表的每一分片中包含的给定的结构化查询语言语句的目标行数;[0045]于本实施例中,预置的第一命令行选项split_count,可以用于定义数据库中的“大表”被拆分后,拆分出的该“大表”的分片的数量。可以理解地,假定split_COunt的选项值为C,需要拆分的“大表”一共有L行数据,则拆分后的该“大表”的每一分片中包含的给定的结构化查询语言语句(以下统称为SQL语句)的目标行数为M=L/C。若C不能整除L,则最后一个分片包含的给定的SQL语句的目标行数为L%C(%表示取模运算),第I至C-1个分片包含的给定的SQL语句的目标行数为M。[0046]优选地,该给定的SQL语句为insertintovalue(即把指定的值插入行)语句。[0047]步骤S13,当该未备份的表的大小大于或等于预置的第二命令行选项的值时,根据该总行数与该目标行数将该未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出。[0048]于本实施例中,预置的第二命令行选项largetable_size,可以用于定义需要拆分的“大表”的大小。服务器100遍历数据库中的表,当表的内容数据的大小大于或等于此选项设定的阈值时,可确定该表属于需要拆分的“大表”。[0049]具体地,当获取的数据库中的未备份的表的大小大于或等于largetable_size的值时,可确定该未备份的表属于需要拆分的“大表”。服务器100根据该未备份的表的总行数与目标行数,创建该未备份的表的每个分片各自对应的分片备份文件;获取该未备份的表中未处理的行对应的字段及该未处理的行对应的字段的值,将该未处理的行对应的字段及该未处理的行对应的字段的值,拼接成SQL语句;当该未处理的行中字段及其值已拼接为SQL语句的行(也就是已处理的行)的数量大于或等于该目标行数时,获取当前所有该已处理的行对应的目标分片备份文件;获取该当前所有该已处理的行的SQL语句各自对应的字符串,将该各自对应的字符串压缩写入该目标分片备份文件,并输出,然后将统计的该已处理的行的数量归零;获取已处理但对应的SQL语句未写入对应的目标分片备份文件的目标行及其对应的目标分片备份文件,将该目标行对应的SQL语句对应的字符串压缩写入该对应的目标分片备份文件,并输出。[0050]像这样,将大小超过largetable_size的值的表拆分为若干个分片,并根据该若干个分片生成对应的目标分片备份文件,使得不同数据库表的各个备份文件之间的大小差异不会太大,这样当数据恢复时,可以保证每个备份处理进程的工作量大致相当,当多个备份处理进程并发工作时,可保证资源被均衡分配到每个备份处理进程,从而提高处理数据的稳定性及效率。[0051]进一步地,当获取的数据库中的未备份的表的大小小于largetable_size的值时,可确定该未备份的表不属于需要拆分的“大表”,则服务器100直接生成该未备份的表对应的第一备份文件,并输出。具体地,服务器100创建该未备份的表对应的第一备份文件;获取该未备份的表中的各个字段及该各个字段各自对应的值,将该各个字段及该各个字段各自对应的值拼接成SQL语句;输出拼接好的该结构化查询语言语句对应的字符串;将该字符串压缩写入该第一备份文件,并输出该第一备份文件。[0052]进一步的,备份对象可以包括但不限于该数据库中的:表、视图、触发器、存储过程、函数、索引。服务器100获取该数据库中表以外的其他备份对象,根据该其他备份对象的类型,生成分别与不同类型的其他备份对象一一对应的第二备份文件。[0053]像这样,通过将数据库中的不同备份对象进行单独备份,可以在数据恢复时有针对性地选择某一类型的数据进行恢复,从而可提高数据恢复的灵活性。[0054]进一步地,服务器100获取输出的第一备份文件,该目标分片备份文件以及该第二备份文件作为目标备份文件,并根据该目标备份文件生成备份元数据文件,然后将该备份元数据文件压缩后拆分为多个数据包,并发送给存储服务器200;接收存储服务器200返回的存储记录,根据该存储记录删除本地存储的该备份元数据文件及该多个数据包,以减少本地存储资源的占用。[0055]本发明实施例提供的数据备份方法,通过在数据备份时,将数据库中大小超过预置的第二命令行选项的值的表拆分为若干个分片,并根据该若干个分片生成对应的目标分片备份文件,使得在恢复数据的过程中得以打破现有技术中串行恢复数据的桎梏,实现通过多个处理进程并发地对目标分片备份文件进行批量处理,从而可加快恢复数据的速度,提高处理数据的效率。[0056]第二实施例[0057]请参阅图4,图4为本发明第二实施例提供的数据备份方法的流程图。本实施例可应用于图1所示的应用环境中,通过图1所示的服务器100实现基于数据库的数据备份。如图4所示,本实施例提供的数据备份方法包括:[0058]步骤S201,读取预置的命令行选项;[0059]表(或称数据表)是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容。根据信息的分类情况,一个数据库中可能包含若干个数据表。在数据表中,每一列是一个字段,每一行是一条记录,每一条记录包含这行中的所有信息。[0060]于本实施例中,服务器100中预置有数据库(Database),根据预置的备份策略,月艮务器100定期对数据库中的数据进行备份。或者服务器100也可以根据用户的指令执行数据备份操作。当针对该数据库的数据备份操作被触发时,服务器100读取预置的命令行选项。[0061]可以理解地,该数据库中的备份对象包括但不限于:表、视图、触发器、存储过程、函数、索引。[0062]具体地,预置的命令行选项可以包括:第一命令行选项split_count,第二命令行选项largetable_size以及第三命令行选项flushwaittimeout。[0063]第一命令行选项split_COunt,可以用于定义该数据库中的“大表”被拆分后,拆分出的该“大表”的分片的数量。可以理解地,假定split_COunt的选项值为C,需要拆分的“大表”一共有L行数据,则拆分后的该“大表”的每一分片中包含的给定的结构化查询语言语句(以下统称为SQL语句)的目标行数为M=L/C。若C不能整除L,则最后一个分片包含的给定的SQL语句的目标行数为L%C(%表示取模运算),第I至C-1个分片包含的给定的SQL语句的目标行数为M。[0064]第二命令行选项largetablejize,可以用于定义需要拆分的“大表”的大小。月艮务器100遍历数据库中的表,当表的内容数据的大小大于或等于此选项设定的阈值时,可确定该表属于需要拆分的“大表”。[0065]第三命令行选项flush_wait_timeout,可以用于判断服务器100执行冻结操作的时间是否超时。可以理解地,若flush_wait_timeout定义的时间之内,服务器100未完成执行该关闭表的操作,可确定操作超时,为了不阻塞数据库的其他作业,服务器100将自动错误退出,以确保在线数据库服务的安全和稳定。具体地,冻结操作可以包括:关闭表操作与全局读锁定操作。关闭表操作,用于关闭数据库中所有已打开的表,可以通过flushtable(关闭数据库中所有已打开的表)语句实现。全局读锁定操作用于将数据库设置为全局读锁定,以冻结该数据库,可以通过flushtablewithreadlock(关闭数据库中所有已打开的表并将该数据库设置为全局读锁定)语句实现。[0066]优选地,可自定义配置largetable_size=10G,split_count=10,flushwaittimeout=30s。[0067]步骤S202,判断该命令行选项是否通过校验;[0068]于本实施例中,当第一命令行选项split_count与第二命令行选项largetable_size同时存在时,也就是服务器100成功读取largetable_size与split_count时,可确定预置的命令行选项通过校验。[0069]若未通过该校验,则执行步骤S203:结束数据备份;[0070]若通过该校验,则执行步骤S204:关闭数据库中所有已打开的表,冻结该数据库;[0071]具体地,如图5所示,本步骤包括:[0072]步骤S2041,执行关闭表操作(flushtable),该关闭表操作用于关闭该数据库中所有已打开的表;[0073]步骤S2042,根据该命令行选项中第三命令行选项的值,判断该关闭表操作(flushtable)是否执行超时;[0074]具体地,服务器100获取执行flushtable操作的初始时间,并以该初始时间为起点开始计时,经过flush_wait_timeout定义的时间之后若服务器100仍未完成该flushtable操作,可确定本次执行flushtable操作超时。[0075]若该关闭表(flushtable)操作执行超时,则执行步骤S2043:判断已执行的该关闭表(flushtable)操作的次数是否大于或等于预置的第一阈值;[0076]若小于该第一阈值,则在等待第一预置时长后,重试执行步骤S2041;[0077]具体地,服务器100获取本次数据备份中已执行的flushtable操作的次数,若该次数小于预置的第一阈值,则在等待第一预置时长后,服务器100重试执行flushtable操作。[0078]若大于或等于该第一阈值,则执行步骤S2044:获取系统当前正在执行的针对该数据库进行的第一任务信息;[0079]可以理解地,当系统中存在针对该数据库正在进行的任务时,为了执行该任务,数据库中的表是无法被关闭的,因此通过获取在执行flushtable操作超时的时间点系统当前正在执行的针对该数据库进行的任务信息,可以了解flushtable操作执行超时的原因,以便调整数据备份策略。[0080]步骤S2045,根据该第一任务信息生成超时瞬间的第一任务列表,并输出;[0081]具体地,服务器100获取每一次判定执行flushtable操作超时后获取的超时瞬间系统中正在执行的针对数据库进行的任务信息作为第一任务信息,根据该第一任务信息生成超时瞬间的第一任务列表(processlist),并打印到日志文件输出,以便进行业务分析,排查纠错。[0082]若该关闭表(flushtable)操作未执行超时,则执行步骤S2046:执行全局读锁定(flushtablewithreadlock)操作,该全局读锁定操作用于将该数据库设置为全局读锁定,以冻结该数据库;[0083]具体地,若服务器100执行flushtable操作未超时,也就是服务器100在flush_wait_timeout定义的时间之内完成了flushtable操作,则服务器100继续执行flushtablewithreadlock操作,以冻结整个数据库中的数据,使得用户只可读取该数据库中的数据,而不可向该数据库写入数据。[0084]步骤S2047,根据该命令行选项中的第三命令行选项的值,判断该全局读锁定(flushtablewithreadlock)操作是否执行超时;[0085]具体地,获取服务器100执行flushtablewithreadlock操作的初始时间,并以该初始时间为起点开始计时,经过flush_wait_timeout定义的时间之后若服务器100仍未完成该flushtablewithreadlock操作,可确定服务器100执行flushtablewithreadlock操作超时。[0086]若该全局读锁定(flushtablewithreadlock)操作执行超时,则执行步骤S2048:判断已执行的该全局读锁定(flushtablewithreadlock)操作的次数是否大于或等于预置的第二阈值;[0087]若小于该第二阈值,则在等待第二预置时长后,执行步骤S2046;[0088]具体地,若服务器100已执行的flushtablewithreadlock操作的次数小于预置的第二阈值,则在等待第二预置时长后,服务器100重试执行flushtablewithreadlock操作。可以理解地,根据自定义,该第一阈值与该第二阈值可以一致,也可以不一致;该第一预置时长与该第二预置时长可以一致,也可以不一致。[0089]若大于或等于该第二阈值,则执行步骤S2049:获取系统当前正在执行的针对该数据库进行的第二任务信息,根据该第二任务信息生成超时瞬间的第二任务列表,并输出。[0090]可以理解地,当系统中存在针对该数据库正在进行的任务时,为了执行该任务,无法将该数据库设置为全局读锁定,因此通过获取在执行flushtablewithreadlock操作超时的时间点系统当前正在执行的针对该数据库进行的任务信息,可以了解flushtablewithreadlock操作执行超时的原因,以便调整数据备份策略。服务器100获取每一次判定执行flushtablewithreadlock操作超时后获取的超时瞬间系统中正在执行的针对数据库进行的任务信息作为第二任务信息,根据该第二任务信息生成超时瞬间的第二任务列表(processlist),并打印到日志文件输出,以便进行业务分析,排查纠错。[0091]步骤S205,获取该数据库在当前时间点的数据快照作为该数据库的镜像文件,解冻该数据库,将该镜像文件作为该数据库;[0092]具体地,若服务器100执行flushtablewithreadlock操作未超时,也就是若月艮务器100在flush_wait_timeout定义的时间之内完成了flushtablewithreadlock操作,则通过MVCC(Multi_Vers1nConcurrencyControl多版本并发控制)获取该数据库在当前时间点的数据快照,并将该数据快照作为该数据库的瞬间镜像文件输出,然后解冻该数据库。[0093]具体地,服务器100可通过执行unlocktable,解除全局读锁定,也就是允许用户对数据库中的数据进行读写操作,以解冻该数据库。[0094]需要注意的是,于本实施例中后续备份程序将以该瞬间镜像文件为基准,将该瞬间镜像文件作为该数据库进行备份。于其他实施例中,也可以不获取该瞬间镜像文件,而是在冻结该数据库后,基于该被冻结的数据库进行数据备份,并当备份完成时,解冻该数据库。[0095]由于是数据快照,因此该瞬间镜像文件的内容与全局读锁定期间该数据库的内容完全一致,备份该瞬间镜像文件也就等于备份该数据库,因此可以保证备份出的文件与该数据库的一致性。[0096]同时,由于在获取瞬间镜像文件后,解冻该数据库,因此可在数据备份的同时,不影响该数据库的正常使用。[0097]步骤S206,遍历该数据库中的表,判断是否存在未备份的表;[0098]若存在,则执行步骤S207:获取该未备份的表的大小及其总行数;[0099]步骤S208:根据该总行数与该命令行选项中的第一命令行选项的值,计算该未备份的表的每一分片中包含的给定的结构化查询语言语句(SQL)的目标行数;[0100]具体地,假定split_c0unt的选项值为C,该未备份的表的总行数为L行,则目标行数M=L/C。若C不能整除L,则最后一个分片中包含的给定的SQL语句的目标行数为L%C(%表示取模运算),第I至C-1个分片中包含的给定的SQL语句的目标行数为M。[0101]优选地,该给定的SQL语句可以为insertintovalue(即把指定的值插入行)语句。[0102]步骤S209,根据该命令行选项中的第二命令行选项的值,判断该未备份的表是否需要拆分;[0103]具体地,服务器100判断该未备份的表的大小是否大于或等于largetable_size的值,若该未备份的表的大小大于或等于largetable_size的值,可确定该未备份的表属于“大表”,需要拆分;若该未备份的表的大小小于largetable_size定义的值,可确定该未备份的表不属于“大表”,不需要拆分。[0104]若不需要拆分,则执行步骤S210:生成该未备份的表对应的第一备份文件,并输出;然后,执行步骤S206;[0105]具体地,如图6所示,本步骤包括:[0106]步骤S2101,创建该未备份的表对应的第一备份文件;[0107]具体地,该第一备份文件可以为文本文件,其中存储有多条包含未备份的表中的数据信息的insertintovalues语句。可以理解地,未备份的表中包含多少行数据,该备份文件中就有多少条(或行)对应的insertintovalues语句。像这样通过以文本文件作为数据备份的载体,可以减小获得的备份文件的体积,从而提高备份文件在各个装置之间的传送速度。[0108]步骤S2102,获取该未备份的表中的各个字段及该各个字段各自对应的值,将该各个字段及该各个字段各自对应的值拼接成该结构化查询语言语句;[0109]于本实施例中,服务器100遍历该未备份的表中的所有数据,获取该未备份的表中的各个字段(列)及该各个字段各自对应的值,根据insertintovalues语句的语法,将获取的表中的各个字段及该各个字段各自对应的值拼接成insertintovalues语句。[0110]步骤S2103,输出拼接好的该结构化查询语言语句对应的字符串;[0111]于本实施例中,服务器100输出拼接成的insertintovalues语句对应的字符串(也就是insert字符串)。[0112]步骤S2104,将该字符串压缩写入该第一备份文件,并输出该第一备份文件。[0113]若需要拆分,则执行步骤S211:根据该总行数与该目标行数将该未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出;然后,执行步骤S206。[0114]如图7所示,本步骤具体包括:[0115]步骤S2111,创建该每个分片各自对应的分片备份文件;[0116]于本实施方式中,分片备份文件可以为文本文件,其中存储有多条包含对应的分片中的数据信息的insertintovalues语句。可以理解地,对应的分片中包含多少行数据,该分片备份文件中就有多少条(或行)对应的insertintovalues语句。[0117]步骤S2112,判断该未备份的表中是否存在未处理的行;[0118]若存在该未处理的行,则执行步骤S2113:获取该未处理的行对应的字段及该未处理的行对应的字段的值,将该未处理的行对应的字段及该未处理的行对应的字段的值,拼接成该结构化查询语言语句;[0119]于本实施例中,服务器100对未处理的行进行处理,获取未处理的行对应的字段(列)及该字段对应的值,根据insertintovalues语句的语法,将该行对应的字段及其值拼接成insertintovalues语句。[0120]步骤S2114,统计已处理的行的数量;[0121]步骤S2115,判断该数量是否大于或等于该目标行数;[0122]若小于,则执行步骤S2112;[0123]若大于或等于,则执行步骤S2116:获取当前所有该已处理的行对应的目标分片备份文件;[0124]可以理解地,服务器100在创建数据库中未备份的表的每个分片各自对应的分片备份文件时,记录生成的每个分片备份文件与该未备份的表中的行的对应关系。根据该对应关系,服务器100从该分片备份文件中确定出当前所有已处理的行对应的目标分片备份文件。[0125]步骤S2117,获取该当前所有该已处理的行的结构化查询语言语句各自对应的字符串,将该各自对应的字符串压缩写入该目标分片备份文件,并输出;[0126]于本实施例中,服务器100获取当前所有该已处理的行的insertintovalues语句各自对应的字符串,将该各自对应的字符串压缩写入该目标分片备份文件,并输出。[0127]像这样,将内容数据的大小超过largetable_size的值的表拆分为若干个分片,并根据该若干个分片生成对应的目标分片备份文件,使得不同数据库表的各个备份文件之间的大小差异不会太大,这样当数据恢复时,可以保证每个备份处理进程的工作量大致相当,当多个备份处理进程并发工作时,可保证资源被均衡分配到每个备份处理进程,从而提高处理数据的稳定性及效率。[0128]步骤S2118,将统计的该已处理的行的数量归零。[0129]若不存在该未处理的行,则执行步骤S2119:获取已处理但对应的结构化查询语言语句未写入对应的目标分片备份文件的目标行及其对应的目标分片备份文件,将该目标行对应的结构化查询语言语句对应的字符串压缩写入该对应的目标分片备份文件,并输出。[0130]可以理解地,由于待拆分的表的行数L并不一定是split_COunt定义的值C的整数,因此当L/C不能整除时,待拆分的表中必然会有一部分的行对应的SQL语句因为不满足步骤S2115的条件而不被压缩写入对应的目标分片备份文件。通过本步骤可将上述SQL语句写入对应的目标分片备份文件,从而避免备份遗漏。[0131]若不存在未备份的表,则执行步骤S212,获取该数据库中表以外的其他备份对象,根据该其他备份对象的类型,生成分别与不同类型的其他备份对象一一对应的第二备份文件。[0132]于本实施例中,表以外的其他备份对象可以包括:视图、触发器、存储过程、函数、索引等等。服务器100根据该其他备份对象的类型,生成分别与不同类型的其他备份对象一一对应的第二备份文件,例如:与视图对应的备份文件,与触发器对应的备份文件等等。可以理解地,由于表以外的其他备份对象一般体积较小,因此无需拆分,直接生成对应的备份文件即可。[0133]可以理解地,本步骤可以独立执行,或先于步骤S206执行(也即备份表的步骤)。[0134]像这样,通过将数据库中的不同备份对象进行单独备份,可以在数据恢复时有针对性地选择某一类型的数据进行恢复,从而可提高数据恢复的灵活性。[0135]步骤S213,获取目标备份文件,根据该目标备份文件生成备份元数据文件;[0136]于本实施例中,目标备份文件可以包括:该第一备份文件,该目标分片备份文件以及该第二备份文件。可以理解地,目标备份文件也可以包括:该第一备份文件,该目标分片备份文件以及该第二备份文件中的任一种或几种。服务器100获取在前述步骤中输出的该第一备份文件,该目标分片备份文件以及该第二备份文件作为目标备份文件,并根据该目标备份文件生成备份元数据文件。其中,该第一备份文件,该目标分片备份文件以及该第二备份文件是逻辑备份介质。逻辑备份是指使用软件技术从数据库中导出数据并写入一个输出文件,该文件的格式一般与原数据库的文件格式不同,只是原数据库中数据内容的一个映像。也就是说该第一备份文件、该目标分片备份文件以及该第二备份文件实质上可以属于逻辑备份产生的文件。[0137]可以理解地,该备份元数据文件中还可以包含元数据文件,该元数据文件用于记录上述各种备份文件的组织结构,便于在恢复数据时使用。其中,该组织结构为一种多对一的映射关系,例如:目标分片备份文件与行的对应关系,数据库与表的对应关系。其中,数据库与表的对应关系于本实施方式中可通过目录树的组织结构形式体现。[0138]步骤S214,将该备份元数据文件压缩后拆分为多个数据包,并发送给存储服务器;[0139]可以理解地,存储服务器200可以为独立的服务器或服务器集群。当为服务器集群时,服务器集群的入口服务器接收服务器100发送的备份元数据文件,并根据预置的备份策略,从服务器集群中确定目标服务器,将该备份元数据文件发送到该目标服务器中存储,并获取存储记录。[0140]步骤S215,接收存储服务器返回的存储记录,根据该存储记录删除本地存储的该备份元数据文件及该多个数据包,以减少本地存储资源的占用。[0141]本发明实施例提供的数据备份方法,通过在数据备份时,将数据库中大小超过预置的第二命令行选项的值的表拆分为若干个分片,并根据该若干个分片生成对应的目标分片备份文件,以及将数据库中的表、视图、触发器等各种备份对象独立于数据库分别独自备份,使得在恢复数据的过程中得以打破现有技术中串行恢复数据的桎梏,实现通过多个处理进程并发地对多个备份文件进行批量处理,从而可加快恢复数据的速度,提高处理数据的效率。[0142]第三实施例[0143]请参阅图8,图8为本发明第三实施例提供的数据恢复方法的流程图。本实施例可应用于图1所示的应用环境中,通过图1所示的服务器100实现基于数据库的数据恢复。如图8所示,本实施例提供的数据恢复方法包括:[0144]步骤S31,获取备份元数据文件;[0145]于本实施例中,备份元数据文件可以存储于服务器100的存储器中,也可以压缩包的形式存储于存储服务器200中。服务器100从存储服务器200获取备份元数据文件的压缩包,解压该压缩包获取其中包含的多个备份元数据文件。[0146]具体地,该备份元数据文件可以包括作为逻辑备份介质的:数据库中的表的每个分片对应的目标分片备份文件。[0147]进一步地,该备份元数据文件还可以包括:该表对应的第一备份文件,以及该数据库中表以外的其他备份对象对应的第二备份文件。[0148]优选地,该备份元数据文件可以为文本文件。[0149]步骤S32,生成该备份元数据文件对应的数据恢复任务,将该数据恢复任务加入任务队列;[0150]进一步地,服务器100在将该数据恢复任务加入任务队列之后,还可以乱序该任务队列,也即打乱该任务队列中的数据恢复任务的排列顺序。通过打乱任务队列中的任务的排列顺序,可以减少并发的处理进程之间的竞争,减少内耗,从而降低因并发插入B+树局部节点所带来的性能损耗,提高数据处理的效率。[0151]步骤S33,通过多个处理进程并行地获取该任务队列中的目标数据恢复任务,并进行处理,以恢复该数据库中对应的数据。[0152]于本实施例中,服务器100可根据中央处理器的处理能力确定多个处理进程,然后通过该多个处理进程并发地获取该任务队列中的目标数据恢复任务,并进行处理。具体地,服务器100通过该多个处理进程并行地从该任务列表中申请该目标数据恢复任务;逐一读取该目标数据恢复任务对应的备份元数据文件中给定的结构化查询语言语句;通过解析器解析该结构化查询语言语句的语法;通过优化器对该结构化查询语言语句的语法进行优化;执行该结构化查询语言语句,恢复该数据库中对应的数据。[0153]优选地,该给定的结构化查询语言语句可以为insertintovalues(即把指定的值插入行)语句。[0154]本发明实施例提供的数据恢复方法,通过在数据恢复时,利用多个处理进程并行地获取任务列表中的任务,并进行处理,打破了现有技术中串行恢复数据的桎梏,可加快恢复数据的速度,提高处理数据的效率。[0155]第四实施例[0156]请参阅图9,图9为本发明第四实施例提供的数据恢复方法的流程图。本实施例可应用于图1所示的应用环境中,通过图1所示的服务器100实现基于数据库的数据恢复。如图9所示,本实施例提供的数据恢复方法包括:[0157]步骤S401,检查外键约束功能是否关闭,若未关闭,则关闭该外键约束功能;[0158]外键是用来实现参照完整性的,外键约束功能是现有的数据库提供的一种通过根据数据内容在导入时的先后顺序来保证导入的数据的正确性与完整性的功能。于本实施例中,通过关闭该外键约束功能,使得数据的正确性不再依赖于数据内容在导入时的先后顺序,以便为后续的并发恢复数据做准备,保证数据的恢复可以不按照固定顺序进行,使得备份的多个表数据可以被同时恢复,从而提高数据恢复的灵活性。[0159]步骤S402,获取备份元数据文件;[0160]于本实施例中,备份元数据文件可以压缩包的形式存储于存储服务器200中。服务器100从存储服务器200获取备份元数据文件的压缩包,解压该压缩包获取其中包含的多个备份元数据文件。优选地,该备份元数据文件为文本文件。[0161]具体地,该备份元数据文件可以包括作为逻辑备份介质的:该数据库中的表的每个分片对应的目标分片备份文件、该表对应的第一备份文件以及该数据库中表以外的其他备份对象对应的第二备份文件,可以理解地,该备份元数据文件中还可包含上述各种备份文件的组织结构信息的元数据文件。[0162]步骤S403,根据中央处理器的处理能力确定多个处理进程;[0163]具体地,服务器100可以根据中央处理器的核数以及每个核数的最大处理线程,确定用于数据恢复的处理进程的数量,例如:假定CPU的核数为4,每个核所能处理的最大线程为6,则可确定并发20?24个处理进程。[0164]步骤S404,生成该备份元数据文件对应的数据恢复任务,将该数据恢复任务加入任务队列;[0165]步骤S405,乱序该任务队列;[0166]具体地,乱序该任务队列,也即打乱该任务队列中的数据恢复任务的排列顺序。通过打乱任务队列中的任务的排列顺序,可以减少并发的处理进程之间的竞争,减少内耗,从而降低因并发插入B+树局部节点所带来的性能损耗,提高数据处理的效率。[0167]步骤S406,通过该多个处理进程并行地获取该任务队列中的目标数据恢复任务,并进行处理,以恢复该数据库中对应的数据。[0168]例如,假设当前有30个数据恢复任务,24个进程,则这24个进程首先并行地从任务列表中获取24个进程,并同时进行处理,当有进程完成处理后,空闲的进程继续从该任务列表中获取剩余的数据恢复任务并进行处理。[0169]如图10所示,具体地,本步骤可以包括:[0170]步骤S4061,通过该多个处理进程并行地从该任务列表中申请该目标数据恢复任务;[0171]步骤S4062,逐一读取该目标数据恢复任务对应的备份元数据文件中给定的结构化查询语言语句;[0172]于本实施例中,服务器100通过该多个处理进程分别逐一读取各自申请的该目标数据恢复任务对应的备份元数据文件中的给定的SQL语句,获取对应的字符串。优选地,该SQL语句为insertintovalues(即把指定的值插入行)语句。[0173]步骤S4063,通过解析器解析该结构化查询语言语句的语法;[0174]具体地,处理进程可以通过预置的解析器检查该SQL语句的语法是否符合SQL规范,检查该SQL语句的中的访问对象是否存在及该用户是否具备相应的权限,并对该SQL语句进行解析,例如:利用内部算法对SQL语句进行解析,生成解析树及执行计划。[0175]步骤S4064,通过优化器对该结构化查询语言语句的语法进行优化;[0176]步骤S4065,执行该结构化查询语言语句,恢复该数据库中对应的数据;[0177]具体地,恢复数据库中对应的数据可以包括:增加、删除、修改该数据库中对应的数据。[0178]步骤S407,获取该备份元数据文件对应的二进制日志,根据该二进制日志,同步该数据库与该源数据库。[0179]该二进制日志中记录有生成该备份元数据文件的时间点至当前时间点之间,用户对用于生成该备份元数据文件的源数据库执行更改的所有操作。根据该二进制日志的记录,将生成该备份元数据文件的时间点至当前时间点之间,用户对该源数据库执行更改的所有操作导致的该源数据库中的数据变化,同步至该数据库,使得该数据库与该源数据库中的数据保持一致。[0180]以下为进一步说明上述实施例,举例来说,假设服务器100中配置有游戏数据库A,游戏数据库A中包括:游戏任务表、游戏角色表以及视图、触发器等其他类型的数据。[0181]在备份阶段,假定根据预置的备份规则,服务器100于凌晨I点对游戏数据库A执行备份操作,读取预置的命令行选项split_count,largetable_size以flushwaittimeout,当成功读取largetable_size与split_count时,通过执行flushtable以及flushtablewithreadlock操作冻结游戏数据库A,当游戏数据库A被成功冻结后,获取游戏数据库A在当前时间点的数据快照作为游戏数据库A的镜像文件A’,然后解冻该数据库,并以镜像文件A’为基准对游戏数据库A中的数据进行备份;遍历镜像文件A’,获取其中的游戏任务表的大小及其总行数,根据split_Count的值,计算该游戏任务表被拆分后,每一分片中包含的SQL语句的目标行数,并根据Iargetable^ize判断该游戏任务表是否需要拆分,假定该游戏任务表的大小大于largetable^ize定义的值需要拆分,则根据该游戏任务表的总行数以及该目标行数,将该游戏任务表划分为多个分片,然后生成每个分片的分片备份文件,并作为目标分片备份文件输出;之后,继续遍历镜像文件A’,获取其中的游戏角色表的大小及其总行数,假定该游戏角色表不需要拆分,则生成该游戏角色表对应的第一备份文件,并输出;接着,备份视图、触发器等其他数据对象,获取备份出的备份文件作为第二备份文件输出;最后,根据输出的第一备份文件,目标分片备份文件以及第二备份文件生成备份元数据文件,并将其压缩拆分后发送到存储服务器200保存。[0182]在数据恢复阶段,假定服务器100在上午10点执行对游戏数据库A的恢复操作,将游戏数据库A中的数据恢复至数据库B。服务器100从存储服务器200获取备份元数据文件,同时关闭外键约束功能,以保证后续并发恢复数据的程序能顺利进行;然后,根据该备份元数据文件生成对应的数据恢复任务,将该数据恢复任务加入任务队列,并打乱该任务队列的顺序;之后,通过多个处理进程并行地获取该任务队列中的目标数据恢复任务,并进行处理,以将游戏数据库A中的数据恢复至数据库B。可以理解地,由于该备份元数据文件备份的是凌晨I点游戏数据库A中的数据,在凌晨I点至上午10点之间,游戏数据库A的数据会因为用户的操作而发生变化,因此,进一步地服务器100从存储服务器200获取该备份元数据文件对应的二进制日志,也就是游戏数据库A的二进制日志,根据该二进制日志中的记录,将凌晨I点至上午10点之间因用户对游戏数据库A执行更改操作而导致的游戏数据库A的所有数据变化同步至数据库B,从而使得数据库B与游戏数据库A保持一致,实现基于时间点的一致性备份。[0183]本发明实施例提供的数据恢复方法,通过在数据恢复时,利用多个处理进程并行地获取任务列表中的任务,并进行处理,打破了现有技术中串行恢复数据的桎梏,可加快恢复数据的速度,提高处理数据的效率。[0184]第五实施例[0185]图11为本发明第五实施例提供的数据备份装置的结构示意图。本实施例提供的数据备份装置可运行于图1所示的服务器100中,用于实现上述实施例中的数据备份方法。如图11所示,数据备份装置50包括:第一获取模块51、计算模块52以及备份模块53。[0186]第一获取模块51,用于获取数据库中未备份的表的大小及其总行数;[0187]计算模块52,用于根据第一获取模块51获取的该总行数与预置的第一命令行选项的值,计算该未备份的表的每一分片中包含的给定的结构化查询语言语句的目标行数;[0188]备份模块53,用于当第一获取模块51获取的该未备份的表的大小大于或等于预置的第二命令行选项的值时,根据第一获取模块51获取的该总行数与计算模块52计算的该目标行数将该未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出。[0189]以上各模块可以是由软件代码实现,此时,上述的各模块可存储于存储器101内,如图12所示。以上各模块同样可以由硬件例如集成电路芯片实现。[0190]本实施例对数据备份装置50的各功能模块实现各自功能的具体过程,请参见上述图1至图10所示实施例中描述的具体内容,此处不再赘述。[0191]本发明实施例提供的数据备份装置,通过在数据备份时,将数据库中大小超过预置的第二命令行选项的值的表拆分为若干个分片,并根据该若干个分片生成对应的目标分片备份文件,使得在恢复数据的过程中得以打破现有技术中串行恢复数据的桎梏,实现通过多个处理进程并发地对目标分片备份文件进行批量处理,从而可加快恢复数据的速度,提高处理数据的效率。[0192]第六实施例[0193]图13为本发明第六实施例提供的数据备份装置的结构示意图。本实施例提供的数据备份装置可运行于图1所示的服务器100中,用于实现上述实施例中的数据备份方法。如图13所示,数据备份装置60包括:第一获取模块51、计算模块52、备份模块53、读取模块61、冻结模块62、第二获取模块63、解冻模块64、第三获取模块65、生成模块66、发送模块67以及删除模块68。[0194]第一获取模块51,用于获取数据库中未备份的表的大小及其总行数;[0195]计算模块52,用于根据第一获取模块51获取的该总行数与预置的第一命令行选项的值,计算该未备份的表的每一分片中包含的给定的结构化查询语言语句的目标行数;[0196]备份模块53,用于当第一获取模块51获取的该未备份的表的大小大于或等于预置的第二命令行选项的值时,根据第一获取模块51获取的该总行数与计算模块52计算的该目标行数将该未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出;[0197]读取模块61,用于读取预置的命令行选项,该命令行选项包括:该第一命令行选项、该第二命令行选项;[0198]冻结模块62,用于当读取模块61读取的该第一命令行选项与该第二命令行选项通过校验时,关闭该数据库中所有已打开的表,冻结该数据库;[0199]第二获取模块63,用于获取该数据库在当前时间点的数据快照作为该数据库的镜像文件;[0200]解冻模块64,用于解冻该数据库,将该镜像文件作为该数据库,执行该获取数据库中未备份的表的大小及其总行数的步骤。[0201]第三获取模块65,用于获取目标备份文件,该目标备份文件包括:该第一备份文件、该目标分片备份文件以及该第二备份文件;[0202]生成模块66,用于根据第三获取模块65获取的该目标备份文件生成备份元数据文件;[0203]发送模块67,用于将生成模块66生成的该备份元数据文件压缩后拆分为多个数据包,并发送给存储服务器,指示该存储服务器将该多个数据包进行存储;[0204]删除模块68,用于接收该存储服务器返回的存储记录,删除本地存储的该备份元数据文件及该多个数据包。[0205]优选地,如图14所示,备份模块53包括:[0206]第一创建单元531,用于创建该每个分片各自对应的分片备份文件;[0207]第一拼接单兀532,用于获取该未备份的表中未处理的行对应的字段及该未处理的行对应的字段的值,将该未处理的行对应的字段及该未处理的行对应的字段的值,拼接成该结构化查询语言语句;[0208]获取单元533,用于当已处理的行的数量大于或等于该目标行数时,获取当前所有该已处理的行对应的目标分片备份文件;[0209]第一备份单元534,用于获取该当前所有该已处理的行的结构化查询语言语句各自对应的字符串,将该各自对应的字符串压缩写入该目标分片备份文件,并输出。[0210]优选地,获取单元533,还用于获取已处理但对应的结构化查询语言语句未写入对应的目标分片备份文件的目标行及该对应的目标分片备份文件;[0211]第一备份单元534,还用于将该目标行对应的结构化查询语言语句对应的字符串压缩写入该对应的目标分片备份文件,并输出。[0212]优选地,备份模块53,还用于当该未备份的表的大小小于该第二命令行选项的值时,生成该未备份的表对应的第一备份文件,并输出。[0213]优选地,如图14所示,备份模块53还包括:[0214]第二创建单元535,用于创建该未备份的表对应的第一备份文件;[0215]第二拼接单元536,用于获取该未备份的表中的各个字段及该各个字段各自对应的值,将该各个字段及该各个字段各自对应的值拼接成该结构化查询语言语句;[0216]第二备份单元537,用于输出拼接好的该结构化查询语言语句对应的字符串,并将该字符串压缩写入该第一备份文件。[0217]优选地,该命令行选项还包括:第三命令行选项,如图15所示,冻结模块62包括:[0218]关闭单元621,用于执行关闭表操作,该关闭表操作用于关闭该数据库中所有已打开的表;[0219]判断单元622,用于根据该第三命令行选项的值,判断该关闭表操作是否执行超时;[0220]判断单元622,还用于若该关闭表操作执行超时,则判断已执行的该关闭表操作的次数是否大于或等于预置的第一阈值;[0221]重试单元623,用于若该已执行的该关闭表操作的次数小于该第一阈值,则在等待第一预置时长后,重试该执行关闭表操作的步骤;[0222]获取单元624,用于若该已执行的该关闭表操作的次数大于或等于该第一阈值时,则获取系统当前正在执行的针对该数据库进行的第一任务信息;[0223]输出单兀625,用于根据该第一任务信息生成超时瞬间的第一任务列表,并输出;[0224]冻结单元626,用于若该关闭表操作未执行超时,则执行全局读锁定操作,该全局读锁定操作用于将该数据库设置为全局读锁定,以冻结该数据库;[0225]判断单元622,还用于根据该第三命令行选项的值,判断该全局读锁定操作是否执行超时;[0226]判断单元622,还用于若该全局读锁定操作执行超时,则判断已执行的该全局读锁定操作的次数是否大于或等于预置的第二阈值;[0227]重试单元623,还用于若该已执行的该全局读锁定操作的次数小于该第二阈值,则在等待第二预置时长后,重试该执行全局读锁定的步骤;[0228]获取单元624,还用于若该已执行的该全局读锁定操作的次数大于或等于该第二阈值时,则获取系统当前正在执行的针对该数据库进行的第二任务信息;[0229]输出单元625,还用于根据该第二任务信息生成超时瞬间的第二任务列表,并输出。[0230]优选地,第一获取模块51,还用于获取该数据库中表以外的其他备份对象;[0231]备份模块53,还用于根据该其他备份对象的类型,生成分别与不同类型的其他备份对象--对应的第二备份文件。[0232]本实施例对数据备份装置60的各功能模块实现各自功能的具体过程,请参见上述图1至图10所示实施例中描述的具体内容,此处不再赘述。[0233]本发明实施例提供的数据备份装置,通过在数据备份时,将数据库中大小超过预置的第二命令行选项的值的表拆分为若干个分片,并根据该若干个分片生成对应的目标分片备份文件,以及将数据库中的表、视图、触发器等各种备份对象独立于数据库分别独自备份,使得在恢复数据的过程中得以打破现有技术中串行恢复数据的桎梏,实现通过多个处理进程并发地对多个备份文件进行批量处理,从而可加快恢复数据的速度,提高处理数据的效率。[0234]第七实施例[0235]图16为本发明第七实施例提供的数据恢复装置的结构示意图。本实施例提供的数据恢复装置可以运行于图1所示的服务器100中,用于实现上述实施例中的数据恢复方法。如图16所示,数据恢复装置70包括:获取模块71、生成模块72以及恢复模块73。[0236]获取模块71,用于获取备份元数据文件,该备份元数据文件包括数据库中的表的每个分片对应的目标分片备份文件;[0237]生成模块72,用于生成获取模块71获取的该备份元数据文件对应的数据恢复任务,将该数据恢复任务加入任务队列;[0238]恢复模块73,用于通过多个处理进程并行地获取该任务队列中的目标数据恢复任务,并进行处理,以恢复该数据库中对应的数据。[0239]以上各模块可以是由软件代码实现,此时,上述的各模块可存储于存储器101内,如图17所示。以上各模块同样可以由硬件例如集成电路芯片实现。[0240]本实施例对数据恢复装置70的各功能模块实现各自功能的具体过程,请参见上述图1至图10所示实施例中描述的具体内容,此处不再赘述。[0241]本发明实施例提供的数据恢复装置,通过在数据恢复时,利用多个处理进程并行地获取任务列表中的任务,并进行处理,打破了现有技术中串行恢复数据的桎梏,可加快恢复数据的速度,提高处理数据的效率。[0242]第八实施例[0243]图18为本发明第八实施例提供的数据恢复装置的结构示意图。本实施例提供的数据恢复装置可以运行于图1所示的服务器100中,用于实现上述实施例中的数据恢复方法。如图18所示,数据恢复装置80包括:获取模块71、生成模块72、恢复模块73、关闭模块81以及同步模块82。[0244]获取模块71,用于获取备份元数据文件,该备份元数据文件包括数据库中的表的每个分片对应的目标分片备份文件;[0245]生成模块72,用于生成获取模块71获取的该备份元数据文件对应的数据恢复任务,将该数据恢复任务加入任务队列;[0246]恢复模块73,用于通过多个处理进程并行地获取该任务队列中的目标数据恢复任务,并进行处理,以恢复该数据库中对应的数据;[0247]关闭模块81,用于检查外键约束功能是否关闭,若未关闭,则关闭该外键约束功能,使得恢复的数据的正确性不依赖于数据内容在导入时的先后顺序;[0248]同步模块82,用于根据该二进制日志,同步该数据库与该源数据库。[0249]优选地,该备份元数据文件从存储服务器获取,该备份元数据文件中包括:该表对应的第一备份文件、以及该数据库中表以外的其他备份对象对应的第二备份文件,如图19所示,恢复模块73包括:[0250]进程确定单元731,用于根据中央处理器的处理能力确定该多个处理进程;[0251]乱序单元732,用于乱序该任务队列;[0252]申请单元733,用于通过该多个处理进程并行地从该任务列表中申请该目标数据恢复任务;[0253]读取单元734,用于逐一读取该目标数据恢复任务对应的备份元数据文件中给定的结构化查询语言语句;[0254]解析单元735,用于通过解析器解析该结构化查询语言语句的语法;[0255]优化单元736,用于通过优化器对该结构化查询语言语句的语法进行优化;[0256]恢复单元737,用于执行该结构化查询语言语句,恢复该数据库中对应的数据。[0257]优选地,获取模块71,还用于获取该备份元数据文件对应的二进制日志,该二进制日志中记录有生成该备份元数据文件的时间点至当前时间点之间,用户对用于生成该备份元数据文件的源数据库执行更改的所有操作。[0258]本实施例对数据恢复装置80的各功能模块实现各自功能的具体过程,请参见上述图1至图10所示实施例中描述的具体内容,此处不再赘述。[0259]本发明实施例提供的数据恢复装置,通过在数据恢复时,利用多个处理进程并行地获取任务列表中的任务,并进行处理,打破了现有技术中串行恢复数据的桎梏,可加快恢复数据的速度,提高处理数据的效率。[0260]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0261]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者装置中还存在另外的相同要素。[0262]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。[0263]以上,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。【权利要求】1.一种数据备份方法,其特征在于,包括:获取数据库中未备份的表的大小及其总行数;根据所述总行数与预置的第一命令行选项的值,计算所述未备份的表的每一分片中包含的给定的结构化查询语言语句的目标行数;当所述未备份的表的大小大于或等于预置的第二命令行选项的值时,根据所述总行数与所述目标行数将所述未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出。2.根据权利要求1所述的方法,其特征在于,所述根据所述总行数与所述目标行数将所述未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出包括:创建所述每个分片各自对应的分片备份文件;获取所述未备份的表中未处理的行对应的字段及所述未处理的行对应的字段的值,将所述未处理的行对应的字段及所述未处理的行对应的字段的值,拼接成所述结构化查询语目语句;当已处理的行的数量大于或等于所述目标行数时,获取当前所有所述已处理的行对应的目标分片备份文件;获取所述当前所有所述已处理的行的结构化查询语言语句各自对应的字符串,将所述各自对应的字符串压缩写入所述目标分片备份文件,并输出。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:获取已处理但对应的结构化查询语言语句未写入对应的目标分片备份文件的目标行及所述对应的目标分片备份文件;将所述目标行对应的结构化查询语言语句对应的字符串压缩写入所述对应的目标分片备份文件,并输出。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述未备份的表的大小小于所述第二命令行选项的值时,生成所述未备份的表对应的第一备份文件,并输出。5.根据权利要求4所述的方法,其特征在于,所述生成所述未备份的表对应的第一备份文件包括:创建所述未备份的表对应的第一备份文件;获取所述未备份的表中的各个字段及所述各个字段各自对应的值,将所述各个字段及所述各个字段各自对应的值拼接成所述结构化查询语言语句;输出拼接好的所述结构化查询语言语句对应的字符串,并将所述字符串压缩写入所述第一备份文件。6.根据权利要求1所述的方法,其特征在于,所述获取数据库中未备份的表的大小及其总行数之前,还包括:读取预置的命令行选项,所述命令行选项包括:所述第一命令行选项、所述第二命令行选项;当所述第一命令行选项与所述第二命令行选项通过校验时,关闭所述数据库中所有已打开的表,冻结所述数据库。7.根据权利要求6所述的方法,其特征在于,所述命令行选项还包括:第三命令行选项,所述关闭所述数据库中所有已打开的表,冻结所述数据库,包括:执行关闭表操作,所述关闭表操作用于关闭所述数据库中所有已打开的表;根据所述第三命令行选项的值,判断所述关闭表操作是否执行超时;若所述关闭表操作执行超时,则判断已执行的所述关闭表操作的次数是否大于或等于预置的第一阈值;若所述已执行的所述关闭表操作的次数小于所述第一阈值,则在等待第一预置时长后,重试所述执行关闭表操作的步骤;若所述已执行的所述关闭表操作的次数大于或等于所述第一阈值时,则获取系统当前正在执行的针对所述数据库进行的第一任务信息;根据所述第一任务信息生成超时瞬间的第一任务列表,并输出;若所述关闭表操作未执行超时,则执行全局读锁定操作,所述全局读锁定操作用于将所述数据库设置为全局读锁定,以冻结所述数据库;根据所述第三命令行选项的值,判断所述全局读锁定操作是否执行超时;若所述全局读锁定操作执行超时,则判断已执行的所述全局读锁定操作的次数是否大于或等于预置的第二阈值;若所述已执行的所述全局读锁定操作的次数小于所述第二阈值,则在等待第二预置时长后,重试所述执行全局读锁定的步骤;若所述已执行的所述全局读锁定操作的次数大于或等于所述第二阈值时,则获取系统当前正在执行的针对所述数据库进行的第二任务信息;根据所述第二任务信息生成超时瞬间的第二任务列表,并输出。8.根据权利要求1至7的任一项所述的方法,其特征在于,所述冻结所述数据库之后,还包括:获取所述数据库在当前时间点的数据快照作为所述数据库的镜像文件;解冻所述数据库,将所述镜像文件作为所述数据库,执行所述获取数据库中未备份的表的大小及其总行数的步骤。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:获取所述数据库中表以外的其他备份对象;根据所述其他备份对象的类型,生成分别与不同类型的其他备份对象一一对应的第二备份文件;获取目标备份文件,所述目标备份文件包括:所述第一备份文件、所述目标分片备份文件以及所述第二备份文件;根据所述目标备份文件生成备份元数据文件;将所述备份元数据文件压缩后拆分为多个数据包,并发送给存储服务器,指示所述存储服务器将所述多个数据包进行存储;接收所述存储服务器返回的存储记录,删除本地存储的所述备份元数据文件及所述多个数据包。10.一种数据恢复方法,其特征在于,包括:获取备份元数据文件,所述备份元数据文件包括数据库中的表的每个分片对应的目标分片备份文件;生成所述备份元数据文件对应的数据恢复任务,将所述数据恢复任务加入任务队列;通过多个处理进程并行地获取所述任务队列中的目标数据恢复任务,并进行处理,以恢复所述数据库中对应的数据。11.根据权利要求10所述的方法,其特征在于,所述通过多个处理进程并发地获取所述任务队列中的目标数据恢复任务,并进行处理,包括:根据中央处理器的处理能力确定所述多个处理进程;乱序所述任务队列;通过所述多个处理进程并行地从所述任务列表中申请所述目标数据恢复任务;逐一读取所述目标数据恢复任务对应的备份元数据文件中给定的结构化查询语言语句;通过解析器解析所述结构化查询语言语句的语法;通过优化器对所述结构化查询语言语句的语法进行优化;执行所述结构化查询语言语句,恢复所述数据库中对应的数据。12.根据权利要求10所述的方法,其特征在于,所述获取备份元数据文件之前,还包括:检查外键约束功能是否关闭,若未关闭,则关闭所述外键约束功能,使得恢复的数据的正确性不依赖于数据内容在导入时的先后顺序。13.根据权利要求10所述的方法,其特征在于,所述方法还包括:获取所述备份元数据文件对应的二进制日志,所述二进制日志中记录有生成所述备份元数据文件的时间点至当前时间点之间,用户对用于生成所述备份元数据文件的源数据库执行更改的所有操作;根据所述二进制日志,同步所述数据库与所述源数据库。14.根据权利要求10至13的任一项所述的方法,其特征在于:所述备份元数据文件从存储服务器获取,所述备份元数据文件中包括:所述表对应的第一备份文件、以及所述数据库中表以外的其他备份对象对应的第二备份文件。15.一种数据备份装置,其特征在于,包括:第一获取模块,用于获取数据库中未备份的表的大小及其总行数;计算模块,用于根据所述第一获取模块获取的所述总行数与预置的第一命令行选项的值,计算所述未备份的表的每一分片中包含的给定的结构化查询语言语句的目标行数;备份模块,用于当所述第一获取模块获取的所述未备份的表的大小大于或等于预置的第二命令行选项的值时,根据所述第一获取模块获取的所述总行数与所述计算模块计算的所述目标行数将所述未备份的表划分为多个分片,生成每个分片的分片备份文件,并输出。16.根据权利要求15所述的装置,其特征在于,所述备份模块包括:第一创建单元,用于创建所述每个分片各自对应的分片备份文件;第一拼接单元,用于获取所述未备份的表中未处理的行对应的字段及所述未处理的行对应的字段的值,将所述未处理的行对应的字段及所述未处理的行对应的字段的值,拼接成所述结构化查询语言语句;获取单元,用于当已处理的行的数量大于或等于所述目标行数时,获取当前所有所述已处理的行对应的目标分片备份文件;第一备份单元,用于获取所述当前所有所述已处理的行的结构化查询语言语句各自对应的字符串,将所述各自对应的字符串压缩写入所述目标分片备份文件,并输出。17.根据权利要求16所述的装置,其特征在于,所述获取单元,还用于获取已处理但对应的结构化查询语言语句未写入对应的目标分片备份文件的目标行及所述对应的目标分片备份文件;所述第一备份单元,还用于将所述目标行对应的结构化查询语言语句对应的字符串压缩写入所述对应的目标分片备份文件,并输出。18.根据权利要求15所述的装置,其特征在于,所述备份模块,还用于当所述未备份的表的大小小于所述第二命令行选项的值时,生成所述未备份的表对应的第一备份文件,并输出。19.根据权利要求18所述的装置,其特征在于,所述备份模块还包括:第二创建单元,用于创建所述未备份的表对应的第一备份文件;第二拼接单元,用于获取所述未备份的表中的各个字段及所述各个字段各自对应的值,将所述各个字段及所述各个字段各自对应的值拼接成所述结构化查询语言语句;第二备份单元,用于输出拼接好的所述结构化查询语言语句对应的字符串,并将所述字符串压缩写入所述第一备份文件。20.根据权利要求15所述的装置,其特征在于,所述装置还包括:读取模块,用于读取预置的命令行选项,所述命令行选项包括:所述第一命令行选项、所述第二命令行选项;冻结模块,用于当所述读取模块读取的所述第一命令行选项与所述第二命令行选项通过校验时,关闭所述数据库中所有已打开的表,冻结所述数据库。21.根据权利要求20所述的装置,其特征在于,所述命令行选项还包括:第三命令行选项,所述冻结模块包括:关闭单元,用于执行关闭表操作,所述关闭表操作用于关闭所述数据库中所有已打开的表;判断单元,用于根据所述第三命令行选项的值,判断所述关闭表操作是否执行超时;所述判断单元,还用于若所述关闭表操作执行超时,则判断已执行的所述关闭表操作的次数是否大于或等于预置的第一阈值;重试单元,用于若所述已执行的所述关闭表操作的次数小于所述第一阈值,则在等待第一预置时长后,重试所述执行关闭表操作的步骤;获取单元,用于若所述已执行的所述关闭表操作的次数大于或等于所述第一阈值时,则获取系统当前正在执行的针对所述数据库进行的第一任务信息;输出单兀,用于根据所述第一任务信息生成超时瞬间的第一任务列表,并输出;冻结单元,用于若所述关闭表操作未执行超时,则执行全局读锁定操作,所述全局读锁定操作用于将所述数据库设置为全局读锁定,以冻结所述数据库;所述判断单元,还用于根据所述第三命令行选项的值,判断所述全局读锁定操作是否执行超时;所述判断单元,还用于若所述全局读锁定操作执行超时,则判断已执行的所述全局读锁定操作的次数是否大于或等于预置的第二阈值;所述重试单元,还用于若所述已执行的所述全局读锁定操作的次数小于所述第二阈值,则在等待第二预置时长后,重试所述执行全局读锁定的步骤;所述获取单元,还用于若所述已执行的所述全局读锁定操作的次数大于或等于所述第二阈值时,则获取系统当前正在执行的针对所述数据库进行的第二任务信息;所述输出单元,还用于根据所述第二任务信息生成超时瞬间的第二任务列表,并输出。22.根据权利要求15至21的任一项所述的装置,其特征在于,所述装置还包括:第二获取模块,用于获取所述数据库在当前时间点的数据快照作为所述数据库的镜像文件;解冻模块,用于解冻所述数据库,将所述镜像文件作为所述数据库,执行所述获取数据库中未备份的表的大小及其总行数的步骤。23.根据权利要求22所述的装置,其特征在于,所述第一获取模块,还用于获取所述数据库中表以外的其他备份对象;所述备份模块,还用于根据所述其他备份对象的类型,生成分别与不同类型的其他备份对象--对应的第二备份文件;所述装置还包括:第三获取模块,用于获取目标备份文件,所述目标备份文件包括所述第一备份文件、所述目标分片备份文件以及所述第二备份文件;生成模块,用于根据所述第三获取模块获取的所述目标备份文件生成备份元数据文件;发送模块,用于将所述生成模块生成的所述备份元数据文件压缩后拆分为多个数据包,并发送给存储服务器,指示所述存储服务器将所述多个数据包进行存储;删除模块,用于接收所述存储服务器返回的存储记录,删除本地存储的所述备份元数据文件及所述多个数据包。24.一种数据恢复装置,其特征在于,包括:获取模块,用于获取备份元数据文件,所述备份元数据文件包括数据库中的表的每个分片对应的目标分片备份文件;生成模块,用于生成所述获取模块获取的所述备份元数据文件对应的数据恢复任务,将所述数据恢复任务加入任务队列;恢复模块,用于通过多个处理进程并行地获取所述任务队列中的目标数据恢复任务,并进行处理,以恢复所述数据库中对应的数据。25.根据权利要求24所述的装置,其特征在于,所述备份元数据文件从存储服务器获取,所述备份元数据文件中包括:所述表对应的第一备份文件、以及所述数据库中表以外的其他备份对象对应的第二备份文件,所述恢复模块包括:进程确定单元,用于根据中央处理器的处理能力确定所述多个处理进程;乱序单元,用于乱序所述任务队列;申请单元,用于通过所述多个处理进程并行地从所述任务列表中申请所述目标数据恢复任务;读取单元,用于逐一读取所述目标数据恢复任务对应的备份元数据文件中给定的结构化查询语言语句;解析单元,用于通过解析器解析所述结构化查询语言语句的语法;优化单元,用于通过优化器对所述结构化查询语言语句的语法进行优化;恢复单元,用于执行所述结构化查询语言语句,恢复所述数据库中对应的数据;所装置还包括:关闭模块,用于检查外键约束功能是否关闭,若未关闭,则关闭所述外键约束功能,使得恢复的数据的正确性不依赖于数据内容在导入时的先后顺序;所述获取模块,还用于获取所述备份元数据文件对应的二进制日志,所述二进制日志中记录有生成所述备份元数据文件的时间点至当前时间点之间,用户对用于生成所述备份元数据文件的源数据库执行更改的所有操作;同步模块,用于根据所述二进制日志,同步所述数据库与所述源数据库。【文档编号】G06F11/14GK104166600SQ201410377275【公开日】2014年11月26日申请日期:2014年8月1日优先权日:2014年8月1日【发明者】张晨,陈福荣,唐祖州,康中良,梁飞龙,崔玉明,韩全安申请人:腾讯科技(深圳)有限公司