Processing

Please wait...

Settings

Settings

Goto Application

1. CN110209528 - Data backup method and device, server and storage medium

Note: Text based on automatic Optical Character Recognition processes. Please use the PDF version for legal matters

[ ZH ]
数据备份方法、装置、服务器以及存储介质


技术领域
本发明涉及数据库技术领域,特别涉及一种数据备份方法、装置、服务器以及存储介质。
背景技术
在数据处理系统中,尤其是OLAP(Online Analytical Processing,联机实时分析)处理系统、数据仓库、大数据分析等场景中,会涉及到在数据库中存储大量数据。由于业务可能不断更新,因此,一个数据项逻辑上会有多个状态对应的版本数据,这样,一个数据项的全态(当前态、过渡态和历史态)数据会得到保存,从而便于系统追踪历史态数据,充分挖掘数据的价值(任何数据都有价值,历史态的数据不能丢失)。而为了保证上述多种状态数据的数据安全,还需对上述全态数据进行备份,然而,数据量的剧增,必然对备份的效率有所影响。因此,如何在数据量剧增的背景下,提高对全态数据的备份效率,是目前面临的一大挑战。
发明内容
本发明提供了一种数据备份方法、装置、服务器以及存储介质,可以解决全态数据的备份效率的问题。技术方案如下:
一方面,提供了一种数据备份方法,该方法包括:
接收备份任务,该备份任务用于对目标数据表的数据项进行备份;
当该备份任务的备份时间为历史时间段时,获取第一历史事务快照和第二历史事务快照之间的第一快照差,该第一历史事务快照和该第二历史事务快照分别为该历史时间段的起始时刻和结束时刻的事务快照;
根据该第一快照差,执行该备份任务,得到备份数据,该备份数据至少包括该目标数据表中数据项的可见版本。
一方面,提供了一种数据备份装置,该装置包括:
接收模块,用于接收备份任务,该备份任务用于对目标数据表的数据项进行备份;
获取模块,用于当该备份任务的备份时间为历史时间段时,获取第一历史事务快照和第二历史事务快照之间的第一快照差,该第一历史事务快照和该第二历史事务快照分别为该历史时间段的起始时刻和结束时刻的事务快照;
备份模块,用于根据该第一快照差,执行该备份任务,得到备份数据,该备份数据至少包括该目标数据表中数据项的可见版本。
其中,所述备份数据的数据形式为:在目录下存储各类文件,或,存储为多个tar包。
一方面,提供了一种服务器,该服务器包括处理器和存储器,该存储器中存储有至少一条指令,该至少一条指令由该处理器加载并执行以实现如上述数据备份方法所执行的操作。
一方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该至少一条指令由处理器加载并执行以实现如上述数据备份方法所执行的操作。
本发明实施例提供的技术方案带来的有益效果至少包括:
本发明实施例在时态数据库的基础上,提出了基于时态数据的备份方法使得对于全态数据中的任何状态的数据,都可以采取多种灵活的方式,例如逻辑方式或物理方式以及逻辑物理结合的方式来实现备份,为时态数据的有效存储和安全可靠性,提供了有效保障。
附图说明
图1是本发明实施例提供的一种数据备份方法的实施环境示意图;
图2是本发明实施例提供的一种数据备份方法流程图;
图3是本发明实施例提供的一种数据备份方法流程图;
图4是本发明实施例提供的一种数据备份方法流程图;
图5是本发明实施例提供的一种数据备份方法流程图;
图6是本发明实施例提供的一种页面对比图;
图7是本发明实施例提供的一种数据备份装置的结构示意图;
图8是本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例涉及的数据库存储有多个数据表,每个数据表可以用于存储数据项,数据项可以有一个或多个版本。其中,该数据库可以为基于MVCC(Multi-VersionConcurrency Control,多版本并发控制)的任一类型的数据库。在本发明实施例中,对该数据库的类型不作具体限定。需要说明的是,上述数据库中的数据基于状态属性,可以包括三种状态:当前态、过渡态和历史态,该三种状态合称为“数据的全态”,简称全态数据,全态数据中的各个不同状态属性,可以用于标识数据在其生命周期轨迹中所处的状态。
当前态(Current State):数据项的最新版本的数据,是处于当前阶段的数据。处于当前阶段的数据的状态,称为当前态。
过渡态(Transitional State):不是数据项的最新的版本也不是历史态版本,处于从当前态向历史态转变的过程中,处于过渡态的数据,称为半衰数据。
历史态(Historical state):数据项在历史上的一个状态,其值是旧值,不是当前值。处于历史阶段的数据的状态,称为历史态。一个数据项的历史态,可以有多个,反映了数据的状态变迁的过程。处于历史态的数据,只能被读取而不能被修改或删除。
需要说明的是,在MVCC机制下,数据的上述三种状态均存在,在非MVCC机制下,数据可以只存在历史态和当前态。在MVCC或封锁并发访问控制机制下,事务提交后的数据的新值处于当前态。以MVCC机制为例,当前活跃事务列表中最小的事务之前的事务生成的数据,其状态处于历史态。在封锁并发访问控制机制下,事务提交后,提交前的数据的值变为历史态的值,即数据项的旧值处于历史态。而被读取的版本上尚有活跃事务(非最新相关事务)在使用,而由于最新相关事务修改了数据项的值,其最新值已经处于一个当前态,被读取到的值相对当前态已经处于一个历史状态,因此,其数据状态介于当前态和历史态之间,所以称为过渡态。
例如,MVCC机制下,User表的A账户余额从10元充值变为20元,然后消费了15元变为5元,此时金融B机构读取数据做检查事务一直进行中,A之后又充值20元变为25元,则25元为当前态数据,B正在读取到的5元为过渡态,其余的两个值20、10是历史上存在过的状态,都是历史态数据。
对于任一种状态属性进行存储的数据库来说,在需要对数据库中的数据进行备份时,由于对于一个数据项,该数据库存储了至少一个版本,因此,在备份过程中会涉及到的数据量巨大,例如设一条元组,在一段时间内,平均更新10次,则更新后的数据量是11条元组,即是初始数据量的11倍,这使得备份带有历史态的数据量会很大,备份的效率成为一个问题。为此,本发明实施例提供了一种混合物理备份的备份方法,用以进行全态数据的备份,能够降低备份数据量,提高备份效率。
对于数据库来说,其备份任务可以由备份命令触发,下面的示例为一种备份命令的具体形式,
BEGIN;
Set BACKUPNAME=‘/usr/bak/my_first_backup_01’READVIEW'20180109000000';//基于历史事务快照备份做逻辑备份
BACKUP TYPE LO FROM my_table;
Set BACKUPNAME=‘/usr/bak/my_first_backup_02’READVIEW FROM'20180109000000'TO'20180119000000';//快照差方式做逻辑备份
BACKUP TYPE LO FROM my_table;
Set BACKUPNAME=‘/usr/bak/my_first_backup_03’READVIEW default;//基于常规事务快照做逻辑备份
BACKUP TYPE LO FROM my_table WHERE pk>10;
END;
其中,BACKUPNAME指定了备份数据包的名称;my_table指定了本次备份任务的备份目标数据表;BACKUP字段后的TYPE LO可以用于表示备份类型为逻辑备份,TYPE PH可以用于表示备份类型为物理备份,缺省可以用于表示备份类型为物理备份;WHERE语句用于指定备份任务的备份条件。
可选地,在本实施例中,上述数据备份方法可以应用于如图1所示的包括多个服务器101的硬件环境中。如图1所示,多个服务器101通过网络进行连接,或者该多个服务器101也可以数据隔离,上述网络包括但不限于:广域网、城域网或局域网。本发明实施例的数据备份方法可以由任一个服务器101或多个服务器101来执行。服务器101上可以运行有数据库系统,从而提供数据服务,例如数据存储、数据查询等等。该数据库系统可以通过服务器上所运行的数据库引擎工作。
本发明实施例提供的数据备份方法,能够实现全态数据的备份,为了便于理解,下面先对逻辑备份和物理备份分别进行介绍:
一、逻辑备份
逻辑备份可以基于历史事务快照或/和常规事务快照,方便地读取全态数据中某个时刻的数据值,其具体实现的策略有以下三种:(1)基于常规事务快照对当前态数据进行备份;(2)基于历史事务快照,对历史态数据和过渡态数据进行备份;(3)基于历史事务快照和常规事务快照,实现对同一个数据项的多个版本的同时备份。
基于逻辑备份的三种策略所得到的数据形式,是基于备份指令的格式所组织的数据,因此,可以将这类备份称为逻辑备份。例如,该备份指令可以是SQL语句,其具体数据组织格式可以按照INSERT格式组织。其中,备份数据包内的各个文件的命名可以根据备份类型的不同而不同,例如,逻辑备份的文件名可以采用LoData_00000001等方式命名,其对应的元信息文件可以采用LoMeta_00000001等方式命名。
上述逻辑备份的数据备份方法,不能够备份全部系统,也即是,通过上述数据备份方法,可以得到一个备份包,但如控制文件等信息可以不在元信息文件中记录。
本发明实施例所涉及的逻辑备份与传统的备份方式的差别在于:一是支持全态数据的备份,二是备份的方式不是以CLI(命令行)方式进行而是以SQL语句的方式来原子地支持备份,三是生成了物理备份包类似于物理备份的方式。
二、物理备份
该物理备份即是指传统的数据库系统中的物理备份,由于其不能为备份任务指定历史时间段的事务快照,因此,其仅能够备份当前态数据,也即是,其备份所得到的数据仅包括当前态数据,而不包括历史态数据。在经由物理备份所得到的备份数据包中,数据文件名可以采用PhData_00000001等方式命名,其对应的元信息文件可以采用PhMeta_00000001等方式命名。
三、混合备份
基于上述第一部分和第二部分的介绍,下面对本发明实施例所涉及的一种混合备份方法进行介绍,需要说明的是,基于不同的备份任务,备份目标数据可以不同,可以基于备份目标数据来分为下面四种类型:
第一种类型,当前态数据点值备份,也即是,基于常规事务快照,可以对当前态数据的备份,其备份数据包中包括元信息文件、当前态的数据文件、REDO日志文件。下面以图2所示的数据备份方法的流程图,对当前态数据点值进行备份为例进行说明,具体地,该数据备份方法具体包括以下过程:
201、服务器接收备份任务,该备份任务所指示的备份时间为当前时刻。
202、当该备份任务的备份时间为当前时刻时,获取该当前时刻的常规事务快照。
在上述步骤201和202中,服务器可以通过接收备份指令,来接收备份任务,该备份指令中会携带有关于备份目标的信息。本发明实施例仅以备份时间为当前时刻为例进行说明,例如,在备份指令中该当前时刻可以表示为“default”,也即是,该备份指令的目标数据为当前时刻的当前态数据。
203、基于该常规事务快照,执行该备份任务,得到备份数据,该备份数据至少包括该目标数据表中数据项的当前态数据。
在本发明实施例中,事务快照可以表示在该事务快照的创建时刻当前系统中哪些数据是可读的,哪些是活跃的事务,其数据不能够被事务读取,从而获知在当前时刻哪些元组的哪些版本是可见的。因此,通过常规事务快照,可以确定目标数据表中的数据项的当前态版本可见,也即是备份所获取到的备份数据包括该目标数据表中数据项的当前态数据。
在一种可能实施方式中,对于上述当前态数据,服务器可以采取块备份的方式进行,也即是,对于该目标数据表对应的任一个数据块,基于所述常规事务快照,以块拷贝的形式,对当前态数据所在的数据块进行备份,得到备份数据。这种对当前态数据以块拷贝的形式备份,加快了备份的速度,而由于当前态数据和过渡态、历史态数据在物理上是分离的,使得这种块拷贝的形式能够实现。
需要说明的是,本发明实施例所得到的备份数据包括备份数据包,该备份数据包是一个完整的、保持数据一致性的备份数据包。每个备份数据包有两种可选形式:一种是一个目录下存放各种文件,一种是多个tar包构成的一个备份包:
其中,在目录下存放各种文件的备份数据包的形式中,文件按类型分别命名为不同的文件名。例如,元信息文件用Meta_00000001、Meta_00000002等命名;数据文件用Data_00000001、Data_00000002等命名;日志文件用Log_00000001、Log_00000002等命名。其中,“00000002”等格式中,每个字符用十六进制表示,最多表示的文件个数是“16^8=4 294967 296”。
其中,元信息通常较小,通常以一个文件存储即可,数据文件可以定义为一定大小,例如,每个数据文件的大小定义为1T,则可以存储到4EB的数据量。另外,在不同的操作系统上,数据文件的最大文件大小不同,如Ext2/Ext3(8kB block size)单个文件的最大为64TB,则可以存储更多的数据。该日志文件的具体大小等管理形式可以与数据文件同理,在此不做赘述。在本发明实施例中,“00000002”格式可以通过扩充位数,以支持更大的数据量。
其中,多个tar包构成的一个备份数据包的形式中,文件的存储同上,只是按文件大小,对文件进行打包,便于统一管理,进一步地,还可以支持引入压缩算法以节约存储空间。
当所述备份任务的备份目标包括当前态数据,则所述备份数据中还包括所述当前态数据的元信息文件、数据文件和日志文件。在一种可能实施方式中,为了保证基于备份进行恢复时的一致性,在对日志文件进行备份时,可以在备份过程的开始时刻直到所述备份过程的结束时刻,对所述当前态数据的日志文件进行分段备份。例如,从备份过程的开始时刻获取REDO日志的位置假定为Loc1;同时支持新的事务进行操作;到备份过程的结束时刻,获取系统REDO日志的位置假定为Loc2;然后把Loc1到Loc2之间的REDO日志也归档并备份到备份数据包。上述日志文件的备份,采取了即刻备份策略,生成一个日志信息即可备份一个,或者生成一段日志信息即可备份一段。由于日志管理可以采取段式文件的方式,因此,日志文件中可以有许多小片段的文件,如PostgreSQL的日志文件,是多个1G的文件组成,因此,可以实现上述日志的备份方式。
第二种类型,历史态数据点值备份,也即是,基于历史事务快照,可以对历史态数据和过渡态数据的备份,其备份数据包中包括元信息文件、历史态数据和过渡态数据的数据文件。下面以图3所示的数据备份方法的流程图,对历史态数据点值进行备份为例进行说明,具体地,该数据备份方法具体包括以下过程:
301、服务器接收备份任务,该备份任务所指示的备份时间包括一个历史时刻。
302、当该备份任务的备份时间为一个历史时刻时,获取第三历史事务快照,该第三历史事务快照为该历史时刻的事务快照。
303、基于该第三历史事务快照,执行该备份任务,得到备份数据,该备份数据至少包括该目标数据表中数据项的可见版本。
在本发明实施例中,通过第三历史事务快照,可以根据第三历史事务快照,对目标数据表中的数据项的各个版本进行可见性判断,从而确定在该快照创建时刻的可见版本,再对其进行备份,也即是备份所获取到的备份数据至少包括该目标数据表中数据项的历史态数据和过渡态数据。通过上述备份,不需要有日志文件的备份,所备份出的数据是数据项上的一个点值,需要通过逻辑的方式获取到数据项,从而生成数据文件等备份数据。
上述图2和图3所示的对数据项的点值的备份,本发明实施例还涉及到以下两种对段值备份的情况,包括全态数据段值备份和历史态数据段值备份,这两种备份,均可以基于快照差进行,分别介绍如下:
第三种类型,全态数据段值备份,基于历史事务快照和常规事务快照,实现同一个数据项的多个版本的同时备份,其备份数据包中包括元信息文件、历史态数据和过渡态数据的数据文件、当前态数据以及日志文件。下面以图4所示的数据备份方法的流程图,对全态数据段值备份进行备份为例进行说明,具体地,该数据备份方法具体包括以下过程:
401、服务器接收备份任务,该备份任务所指示的备份时间包括以当前时刻为结束点的时间段。
402、当该备份任务的备份时间包括以当前时刻为结束点的时间段,获取第四历史事务快照和第五历史事务快照之间的第二快照差,该第四历史事务快照和该第五历史事务快照分别为该时间段的起始时刻的事务快照和该当前时刻的常规事务快照。
403、根据该第二快照差,对当前态数据和该目标数据表中的可见版本进行备份,该备份数据至少包括该目标数据表中数据项的可见版本。
其中,对于当前态数据的备份可以与图2所示的当前态数据的备份方法同理,在此不做赘述。而基于第二快照差对历史态数据和过渡态数据进行的备份,可以基于逻辑读取的方式进行,也即是,基于该第二快照差,对目标数据表中的数据项的各个版本进行可见性判断,对可见版本进行备份。
而在一种实施方式中,由于历史态数据是以块存储的,因此,一个块的全部数据处于“历史事务快照段”的范围内,则进行块拷贝,备份速度快,一个块的部分数据处于“历史事务快照段”的范围内,则可以基于一定比例阈值,例如第一预设比例,来确定具体备份方式,例如,当数据块的大部分数据处于“历史事务快照段”的范围内,则进行块拷贝,备份速度快,但是无效的数据需要在元信息文件中被标识,例如在HMeta_00000001系列文件中标识,这种是通过块拷贝方式实现的,而小部分数据处于“历史事务快照段”的范围内,则采取逻辑读取的方式,把数据项的可见版本读出,写出到数据文件中,例如HData_00000001系列文件。但是历史态所处的范围的相关情况被记录到HMeta_00000001系列文件中,这种备份方式在本质上这是逻辑备份的方式。也即是,在本发明实施例中,为了提高备份效率,还可以采用基于块备份的一种备份方式,例如,服务器可以确定目标数据表的第二数据块,所述第二数据块存储有所述目标数据表的历史态数据;如果基于所述第二快照差,确定所述第二数据块所存储的历史态数据均为可见版本,以块拷贝的形式,对所述第二数据块进行备份,得到备份数据。进一步地,如果基于所述第二快照差,确定所述第二数据块中可见版本的比例大于或等于第一预设比例时,以块拷贝的形式,对所述第二数据块进行备份,对所述第二数据块中不可见的历史态数据进行标记,得到备份数据;如果基于所述第二快照差,确定所述第二数据块所存储的历史态数据中可见版本的比例小于所述第一预设比例时,以逻辑读取的形式,读取所述第二数据块中的可见版本,得到备份数据。
在上述过程中,第一比例可以采用百分比的形式表示或者[0,1]范围内的小数来表示,例如,该第一比例的默认值为0.2,取值范围为[0,1]。
上述全态数据段值备份过程,是指备份数据中存在有当前态、过渡态、历史态的数据,且对于同一个数据项后两者不仅是一个时间点上的值,而是一个时间段上的多个值。其所备份的数据根据指定的快照类型(本质上是时间点还是时间段),可以分为如下内容:当前态数据的备份:一定是点值备份,方式同第一备份点。过渡态数据的备份(点值、段值):可能是点值也可能是段值。历史态数据的备份(点值、段值):可能是点值也可能是段值,本发明实施例不做赘述。
第四种类型,历史态数据点值备份,基于历史事务快照不包括常规事务快照,实现同一个数据项的多个版本的同时备份,其备份数据包中包括元信息文件、历史态数据和过渡态数据的数据文件。下面以图5所示的数据备份方法的流程图,对历史态数据点值备份进行备份为例进行说明,具体地,该数据备份方法具体包括以下过程:
501、服务器接收备份任务,该备份任务用于对目标数据表的数据项进行备份。
在本发明实施例中,服务器可以通过接收备份指令,来接收备份任务,该备份指令中会携带有关于备份目标的信息。该备份任务根据其指示的备份时间的不同,可以有不同的具体备份过程,本发明实施例仅以备份时间为历史时间段为例进行说明,也即是,该备份指令中包括该历史时间段的起始时刻和结束时刻,备份的目标数据为当前时刻以前的一个历史时间段内的历史态数据和过渡态数据。
502、当该备份任务的备份时间为历史时间段时,获取第一历史事务快照和第二历史事务快照之间的第一快照差,该第一历史事务快照和该第二历史事务快照分别为该历史时间段的起始时刻和结束时刻的事务快照。
503、根据该第一快照差,执行该备份任务,得到备份数据,该备份数据至少包括该目标数据表中数据项的可见版本。
在本发明实施例中,基于第一快照差执行备份任务的过程与上述步骤303中基于第二快照差对历史态数据和过渡态数据进行备份的过程同理,在此不做赘述。进一步地,还可以在备份过程中,基于数据块中所存储的历史态数据来确定是采用块备份,还是采用物理备份,还是采用逻辑备份,从而提高备份效率以及备份的灵活性,例如,服务器可以确定目标数据表的第一数据块,所述第一数据块存储有所述目标数据表的历史态数据;如果基于所述第一快照差,确定所述第一数据块所存储的历史态数据均为可见版本,以块拷贝的形式,对所述第一数据块进行备份,得到备份数据。进一步地,如果基于所述第一快照差,确定所述第一数据块中可见版本的比例大于或等于第一预设比例时,以块拷贝的形式,对所述第一数据块进行备份,对所述第一数据块中不可见的历史态数据进行标记,得到备份数据;如果基于所述第一快照差,确定所述第一数据块所存储的历史态数据中可见版本的比例小于所述第一预设比例时,以逻辑读取的形式,读取所述第二数据块中的可见版本,得到备份数据。
需要说明的一点是,在上述任一种实施方式中,对于在对过渡态数据进行备份时,对于同一个数据项的、满足备份条件的多个版本,在备份的过程中,可以单独存放到独立的文件中,文件以IData_00000001系列命名。对于过渡态数据的备份方式,可以采用逻辑读取的方式。
需要说明的又一点是,在上述任一种实施方式中,所述备份数据中的历史态数据和过渡态数据的元信息相关联,其相关联的元信息可以分别存储至文件名相关联的元信息文件中,例如,某一历史事务快照段或历史事务快照的过渡态数据存放在文件IData中、相关联的历史态数据存在于HData文件中,目的是在恢复的时候,便于把同一个数据项的属于同一个历史事务快照范围内的数据在恢复阶段合并。在另一种可能实施方式中,上述相关联的元信息还可以同时备份到元信息文件中,例如备份到以HMeta_00000001系列命名的文件中。上述相关联可以通过文件命名相关联,以便在进行数据恢复时确认过渡态和历史态数据之间的关系,能够保证数据的一致性。
进一步地,在在对元信息进行备份时,根据备份数据的元信息和所述备份数据的相关元信息,构造元信息列表,基于所述元信息列表进行备份,得到元信息文件。该元信息的备份,由于数据量较小,用一个线程进行备份即可。
在一种可能实施方式中,还可以基于备份的不同粒度来进一步提高备份效率,备份的粒度包括:表空间级别的备份、文件级别的备份、文件块级别的备份、数据项级别的备份(如前述的逻辑备份方式)。数据库系统中多使用表空间的方式来管理数据,表空间,是逻辑概念,对上层(执行器和数据缓冲区)而言就是一个逻辑存储层,其屏蔽了物理层面的存储细节。但对于下层(操作系统)而言,是一个存储管理器,可以管辖多个物理文件,甚至是网络存储。一个表空间中可以有多个数据文件,文件可以动态增加、删除。
由此,可以基于表空间粒度来进行备份,如果备份任务中不包括备份条件,例如WHERE条件,则直接备份目标数据表的表空间的元信息、表空间管辖的所有数据文件(可采用并行备份来备份多个数据文件)。
而如果备份任务中包括备份,例如WHERE条件,则可以从文件粒度进行备份,也即是,在备份过程中,当所述目标数据表中第一数据文件的数据项均符合所述备份任务的备份条件时,则备份所述第一数据文件。例如,如果WHERE条件覆盖一个数据文件的大部分,则直接备份对应的数据文件。
在备份过程中,当所述目标数据表中全部数据文件或是部分数据文件中均符合所述备份任务的备份条件时,且该部分数据文件占目标数据表的文件数的预设比例,则备份该多个数据文件或部分数据文件。例如,如果WHERE条件覆盖多个数据文件的大部分,则备份该多个数据文件。如果WHERE条件覆盖所有的数据文件的大部分,则并行备份所有的数据文件,实则是进行表空间粒度备份。
当所述目标数据表中第一数据文件的部分数据项符合所述备份任务的备份条件且所述部分数据项的比例大于或等于第二预设比例时,则备份所述第一数据文件,对所述第一数据文件中的无效数据进行标记。当所述目标数据表中第一数据文件的部分数据项符合所述备份任务的备份条件且所述部分数据项的比例小于所述第二预设比例时,以逻辑读取的形式,读取所述第一数据文件中的数据项。例如,如果WHERE条件不能覆盖一个数据文件的大部分,则参照上述实施例提供的数据块备份方式,备份的方式可能采用块备份也可能是逻辑备份方式。
在本发明实施例中,为了提高备份效率,在上述任一种备份方法中,如果所述备份任务的备份目标包括多个数据表,支持并行对所述多个数据表进行备份,也即是,对于不同的表对象的备份,可以采取并行备份方式进行,例如,为每个数据表启动一个备份线程来执行备份。
在本发明实施例中,为了提高备份效率,在上述任一种备份方法中,如果所述备份任务的备份目标包括多个数据文件,支持并行对所述多个数据文件进行备份。
在本发明实施例中,为了提高备份效率,在上述任一种备份方法中,如果所述备份任务的备份目标包括多个数据块,支持并行对所述多个数据块进行备份。
上述三类并行备份的方式还可以至少两种方式结合来实现备份过程,以便最大程度上的提高备份效率,例如,对多个数据表和多个数据文件均采用并行备份方式进行,本发明实施例对结合方式不做具体限定。
对于本发明实施例所提及的三种备份方法,三者之间的差别例子如下:
示例1:逻辑备份的方式
BEGIN;
Set BACKUPNAME=‘/usr/bak/my_first_backup_02’READVIEW FROM'20180109000000'TO'20180119000000';//快照差方式做逻辑备份
BACKUP TYPE LO FROM my_table;
END;
示例2:物理备份的方式
BEGIN;
Set BACKUPNAME=‘/usr/bak/my_first_backup_04’READVIEW default;//基于常规事务快照做物理备份
BACKUP ALL;//备份整个系统,如果是备份某个表,则如“BACKUP FROM my_table;”
END;
示例3:混合备份的方式
BEGIN;
Set BACKUPNAME=‘/usr/bak/my_first_backup_04’READVIEW FROM'20180109000000'TO now();//快照差方式做混合备份,从历史的时间'20180109000000'起,直到本事务可见的所有已提交的数据都需要备份BACKUP FROM my_table01,my_table02,my_table03;//备份指定的三个表,也可备份整个系统
可选地,在按照块备份方式进行备份时,数据块上的数据还存在两种情况:
第一种情况、不跨页,某数据块上符合条件的数据在本页的空间足够存储。
第二种情况、跨页:某数据块上符合条件的数据在本页的空间不够存储,后续有续接的页面存在。
基于上述情况,对于一个数据块,如果其不跨页,则其数据结构中的页尾部分,做特殊标识,表示本页之后的页与本页没有关联。如图6所示,可以在页面上增加数据有效位,该数据有效位可以用于表示本页数据是否跨页。在一种可能实施方式中,该数据有效位可以分为2部分,一部分是数据可见标识位,全部置0;余下一个bit位(称为跨页标识位)表示本页数据是否跨页,1表示跨页,0表示不跨页。当有跨页标识位存在时,则寻找数据时不能停止,继续读入下一页。
本发明实施例在时态数据库的基础上,提出了基于时态数据的备份方法使得对于全态数据中的任何状态的数据,都可以采取多种灵活的方式,例如逻辑方式或物理方式以及逻辑物理结合的方式来实现备份,为时态数据的有效存储和安全可靠性,提供了有效保障。
需要说明的是,上述实施例中所涉及的物理备份,例如块拷贝方式,可以适用于所有情况的数据备份,上述实施例中所涉及到的逻辑备份,即通过逻辑读取方式的备份,例如读取数据项的可见版本的方式,也可以适用于所有情况的数据备份。基于物理备份和逻辑备份的灵活结合,来实现数据备份,能够大大提高备份效率,本发明实施例对上述物理备份和逻辑备份的结合方式不做限定。以下述实施场景为例,通过上述物理备份和逻辑备份的结合可以制定各种备份策略,以在满足运营过程中的备份需求的同时,保证高效率的备份。
在一种实施场景中,可以将上述三种备份方法搭配,来制定备份策略,即什么时候采取什么手段(逻辑备份、物理备份)进行备份。可选的备份策略与传统的数据库备份策略相同,例如,一种可行的备份策略如下:每半年做一个数据库的全备份(包括所有的数据即全态数据),每一个月做一次零级备份(不包含只读表空间),每个星期做一次一级备份,每天做一次二级备份。该备份级别可以基于实际需求设定。而另一种可行的备份策略如下:采取双策略进行备份,即逻辑备份和物理备份结合。根据数据量和对数据丢失的容忍度,先定期做物理备份,然后在每2个完整的物理备份时间间隔内,做逻辑备份,通过执行上述备份策略,可以达到提高数据安全性和一致性的目的,还能够保证高效率的备份。
需要说明的是,本发明实施例涉及的数据项的可见版本,是指在备份任务所对应的事务快照所对应时刻能够被事务所读取的版本。对于数据表内的任一元组的任一版本,根据事务快照以及所述版本的创建时刻、删除时刻以及所述版本的提交时刻,确定所述版本是否可见。服务器从数据表中每读取一条元组,均可以读取到该元组的生命周期信息,也即是该版本的创建时刻、删除时刻以及所述版本的提交时刻等信息,以基于历史时间段的可见性判断为例:
(一):当该版本为插入操作生成,当该创建时刻在该历史时间段的起始时刻之前,该提交时刻在该历史时间段之间,确定该版本可见;或者,当该创建时刻和该提交时刻均在该历史时间段之间,确定该版本可见。
(二):当该版本为删除操作生成,当该删除时刻在该历史时间段的起始时刻之前,该提交时刻在该历史时间段之间,确定该版本可见;或者,当该删除时刻和该提交时刻均在该历史时间段之间,确定该版本可见。
(三):当该版本为更新操作生成,当该创建时刻在该历史时间段的起始时刻之前,该提交时刻在该历史时间段之间,确定该版本可见;或者,当该创建时刻在该历史时间段的起始时刻之后,该提交时刻在该历史时间段之间,确定该版本可见。
图7是本发明实施例提供的一种数据备份装置的结构示意图,参见图7,该装置包括:
接收模块701,用于接收备份任务,该备份任务用于对目标数据表的数据项进行备份;
获取模块702,用于当该备份任务的备份时间为历史时间段时,获取第一历史事务快照和第二历史事务快照之间的第一快照差,该第一历史事务快照和该第二历史事务快照分别为该历史时间段的起始时刻和结束时刻的事务快照;
备份模块703,用于根据该第一快照差,执行该备份任务,得到备份数据,该备份数据至少包括该目标数据表中数据项的可见版本。
本发明实施例提供的装置,在时态数据库的基础上,提出了基于时态数据的备份方法使得对于全态数据中的任何状态的数据,都可以采取多种灵活的方式,例如逻辑方式或物理方式以及逻辑物理结合的方式来实现备份,为时态数据的有效存储和安全可靠性,提供了有效保障。
在一种可能实施方式中,该备份模块703还用于:
确定第一数据块,该第一数据块存储有该目标数据表的历史态数据;
如果基于该第一快照差,确定该第一数据块所存储的历史态数据均为可见版本,以块拷贝的形式,对该第一数据块进行备份,得到备份数据。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
如果基于该第一快照差,确定该第一数据块中可见版本的比例大于或等于第一预设比例时,以块拷贝的形式,对该第一数据块进行备份,对该第一数据块中不可见的历史态数据进行标记,得到备份数据;
如果基于该第一快照差,确定该第一数据块所存储的历史态数据中可见版本的比例小于该第一预设比例时,以逻辑读取的形式,读取该第一数据块中的可见版本,得到备份数据。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
当该备份任务的备份时间为当前时刻时,获取该当前时刻的常规事务快照;
基于该常规事务快照,以块拷贝的形式,对当前态数据所在的数据块进行备份,得到备份数据。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
当该备份任务的备份目标包括当前态数据,在备份过程的开始时刻直到该备份过程的结束时刻,对该当前态数据的日志文件进行分段备份。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
当该备份任务的备份时间为一个历史时刻时,获取第三历史事务快照,该第三历史事务快照为该历史时刻的事务快照;
根据该第三历史事务快照,执行该备份任务,得到备份数据,该备份数据至少包括该目标数据表中数据项的可见版本。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
当该备份任务的备份时间包括以当前时刻为结束点的时间段,获取第四历史事务快照和第五历史事务快照之间的第二快照差,该第四历史事务快照和该第五历史事务快照分别为该时间段的起始时刻的事务快照和该当前时刻的常规事务快照;
根据该第二快照差,对当前态数据和该目标数据表中的可见版本进行备份,该备份数据至少包括该目标数据表中数据项的可见版本。
在一种可能实施方式中,当该备份任务的备份目标包括历史态数据和过渡态数据,则该备份数据中包括该历史态数据和过渡态数据的元信息文件和数据文件。
在一种可能实施方式中,当该备份任务的备份目标包括当前态数据,则该备份数据中还包括该当前态数据的元信息文件、数据文件和日志文件。
在一种可能实施方式中,该备份数据中的历史态数据和过渡态数据的元信息文件的文件命名相关联。
在一种可能实施方式中,该备份模块703还用于在对元信息进行备份时,根据备份目标的元信息和该备份目标的相关元信息,构造元信息列表,基于该元信息列表进行备份,得到元信息文件。
在一种可能实施方式中,该备份数据的数据形式为:在目录下存储各类文件,或,存储为多个tar包。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
在备份过程中,当该目标数据表中第一数据文件的数据项均符合该备份任务的备份条件时,则备份该第一数据文件;
当该目标数据表中第一数据文件的部分数据项符合该备份任务的备份条件且该部分数据项的比例大于或等于第二预设比例时,则备份该第一数据文件,对该第一数据文件中的无效数据进行标记;
当该目标数据表中第一数据文件的部分数据项符合该备份任务的备份条件且该部分数据项的比例小于该第二预设比例时,以逻辑读取的形式,读取该第一数据文件中的数据项。
在一种可能实施方式中,在执行该备份任务时,采用下述至少一种方式实现:
如果该备份任务的备份目标包括多个数据表,支持并行对该多个数据表进行备份;
如果该备份任务的备份目标包括多个数据文件,支持并行对该多个数据文件进行备份;
如果该备份任务的备份目标包括多个数据块,支持并行对该多个数据块进行备份。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据备份装置在数据备份时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据备份装置与数据备份方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本发明实施例提供的一种服务器的结构示意图,该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)801和一个或一个以上的存储器802,其中,所述存储器802中存储有至少一条指令,所述至少一条指令由所述处理器801加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质应用于服务器,该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该指令、该程序、该代码集或该指令集由处理器加载并执行以实现上述实施例的数据备份方法中服务器所执行的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。