数据备份方法、数据恢复方法及装置

文档序号:95812 发布日期:2021-10-12 浏览:4次 >En<

阅读说明:本技术 数据备份方法、数据恢复方法及装置 (Data backup method, data recovery method and device ) 是由 赵成 阮伟毅 于 2020-03-20 设计创作,主要内容包括:本申请公开了一种数据备份方法、数据恢复方法及装置,属于数据库领域。所述方法包括:数据备份方法,其特征在于,所述方法包括:获取多个分片数据中每个分片数据的第一元数据,所述多个分片数据是对日志数据进行分片处理得到的数据;获取所述日志数据的第二元数据;存储备份数据,所述备份数据包括多个所述第一元数据和所述第二元数据,所述备份数据用于恢复第一时刻至第二时刻之间的增量分片数据,所述第一时刻为开始获取所述第一元数据的时刻,所述第二时刻为结束获取所述第二元数据的时刻。本申请解决了无法确定备份过程中产生的增量分片数据的问题,本申请用于数据库中的数据备份。(The application discloses a data backup method, a data recovery method and a data recovery device, and belongs to the field of databases. The method comprises the following steps: a method for data backup, the method comprising: acquiring first metadata of each piece of fragment data in a plurality of pieces of fragment data, wherein the plurality of pieces of fragment data are data obtained by carrying out fragment processing on log data; acquiring second metadata of the log data; and storing backup data, wherein the backup data comprises a plurality of first metadata and second metadata, and the backup data is used for restoring incremental fragment data between a first time and a second time, the first time is the time when the first metadata starts to be acquired, and the second time is the time when the second metadata finishes to be acquired. The method and the device solve the problem that incremental fragment data generated in the backup process cannot be determined, and are used for data backup in the database.)

数据备份方法、数据恢复方法及装置

技术领域

本申请涉及数据库领域,特别涉及一种数据备份方法、数据恢复方法及装置。

背景技术

关系型数据库(relational database)是指采用了关系模型来组织数据的数据库。在关系型数据库中,事务(transaction)在执行过程中会生成事务日志(redo log),该事务日志是可以直接存放在磁盘上的一组文件。

为了提高数据库(Database,DB)的容灾性,需要备份事务日志(如对重要数据的事务日志进行备份)。但是当关系型数据库是分布式数据库(Distributed Database,DDB)时,事务日志的日志数据会被划分为多个分片(slice)日志数据(简称分片),分别存储在数据存储节点中。如果直接将多个分片数据分别备份,可能会在备份过程中产生增量分片数据,该增量分片数据在数据恢复时无法确定,无法保证备份数据的业务一致性;如果在备份多个分片数据的过程中加锁,以避免产生增量分片数据,又容易导致业务中断时间过长。因此亟需一种能够在分布式数据库中进行数据的有效备份的方法。

发明内容

本申请实施例提供了一种数据备份方法、数据恢复方法及装置。该技术方案如下:

第一方面,本申请提供一种数据备份方法,该方法可以由管理节点执行,该方法包括:

获取多个分片数据中每个分片数据的第一元数据,该多个分片数据是对日志数据进行分片处理得到的数据;获取该日志数据的第二元数据;存储备份数据,该备份数据包括多个该第一元数据和该第二元数据,该备份数据用于恢复第一时刻至第二时刻之间的增量分片数据,该第一时刻为开始获取该第一元数据的时刻,该第二时刻为结束获取该第二元数据的时刻。

本申请实施例通过在备份数据中携带多个分片数据的第一元数据、日志数据的第二元数据,能够基于获取的备份数据有效恢复第一时刻至第二时刻之间的增量分片数据。在无需加数据锁的前提下,确定增量分片数据,从而保证备份数据的业务一致性,实现分布式数据库中的有效数据备份,且不影响数据库业务。

本申请实施例中备份数据中还可以包括日志数据,该备份数据包括的日志数据包括目标备份时段的增量日志数据,以恢复增量分片数据。本申请实施例以以下几种情况为例进行说明:

第一种情况,备份数据还包括截至第三时刻获取的日志数据(即上传时刻获取的日志数据)、第一指示信息和第二指示信息。该第三时刻为第二时刻之后的指定时刻,例如为距第二时刻指定时长的时刻,又例如为可获取的所有日志数据全部被存储的时刻。第一指示信息用于指示第一时刻,第二指示信息用于指示第二时刻。

第二种情况,该备份数据还包括该第二元数据对应的日志数据、第一指示信息和第二指示信息,该第一指示信息用于指示该第一时刻,该第二指示信息用于指示该第二时刻。

第三种情况,备份数据还包括日志数据中第一时刻至第二时刻之间产生的增量日志数据;可选的,该数据备份方法还包括:基于第一指示信息和第二指示信息,在该日志数据中确定该第一时刻至该第二时刻之间产生的增量日志数据,其中,该第一指示信息用于指示该第一时刻,该第二指示信息用于指示该第二时刻。

示例的,该第一指示信息包括:该第一时刻的全局分片落盘LSN,该全局分片落盘LSN为对应时刻已全局连续落盘的分片数据对应的LSN中最大的LSN;该第二指示信息包括:该第二时刻的连续落盘LSN,该连续落盘LSN为对应时刻已连续落盘的日志数据对应的LSN中最大的LSN。

在前述三种情况的基础上,备份数据还可以包括第三时刻获取的分片数据。或者,备份数据还可以包括多个第一元数据分别对应的多个分片数据。

由于备份数据的存储过程中,分片数据可能会产生增量数据,如果在第三时刻将获取的所有分片数据存储,存储后的数据的结束位置(第三时刻对应位置)与对应的元数据所指示的结束位置(第一时刻至第二时刻之间的时刻对应位置)不一致,并且会额外存储增量数据(即第二时刻到第三时刻之间的增量数据),增加存储介质的负载。存储与多个第一元数据分别对应的多个分片数据,可以使得存储后的数据的结束位置与对应的元数据所指示的结束位置一致,避免额外存储增量数据,减少存储介质的负载。

由于管理节点是基于分片关系数据确定日志数据对应的分片关系数据的,因此在恢复分片关系数据时,也需要获取分片关系数据。在一种可选方式中,可以直接存储分片关系数据,以便在数据恢复时使用;在另一种可选方式中,可以存储分片关系规则,以在数据恢复时基于该分片关系规则获取分片关系数据;在再一种可选方式中,分片关系数据具有元数据,也即是分片关系对应的数据包括:分片关系数据和第三元数据,则该备份数据还包括分片关系数据的第三元数据,管理节点可以存储该第三元数据,以便在数据恢复时基于该元数据获取分片关系数据。其中,该第三元数据用于描述该分片关系数据。通过第三元数据来获取分片关系数据,可以实现分片关系数据的快速获取。

可选的,该备份数据还包括:与多个该第一元数据分别对应的该多个分片数据,以及与该第三元数据对应的该分片关系数据。

可选的,该日志数据和该分片数据中任一数据的元数据包括:至少一个文件中每个文件的数据写入信息,该至少一个文件用于存储该任一数据。也即是,每个文件包括两部分:一部分用于存储该任一数据,另一部分用于存储数据写入信息。其中,每个文件中可以设置固定大小的指定位置(也可以称为指定空间),用于存储数据写入信息。示例的,该指定位置可以为该文件的文件头或者文件尾。数据写入信息用于描述该文件中的该任一数据的写入情况。例如,任一文件的数据写入信息用于记录该任一文件在该至少一个文件中的位置,以及该任一文件中的写入数据(即写入的该任一数据)的结束位置。通过此种元数据可以有效标识各个文件的位置,从而在数据恢复时,实现文件的依次连续获取,保证文件的连续性,从而恢复得到有效的该任一数据。

由于LSN表征了事务写入到事务日志的字节总量。则显然,LSN是一种针对事务日志的典型的数据量的指示信息。又由于一个文件的日志数据是不断写入的。随着事务记录写入条数的增多,LSN也逐渐增大。因此,文件中的写入数据所携带的最大的LSN(即最近写入的事务记录的LSN)能够反映该写入数据的结束位置。可选的,该任一文件的数据写入信息包括:该任一文件中的写入数据中携带的最大日志序列号LSN,以此来标识写入数据的结束位置。可选的,该日志数据对应的任一文件的数据写入信息还包括:该任一文件的文件位置标识。文件位置标识用于标识该任一文件在其所属的至少一个文件中的位置。

第二方面,本申请提供一种数据恢复方法,该方法可以由管理节点执行,该方法包括:

获取已存储的备份数据,该备份数据包括多个第一元数据和第二元数据,每个该第一元数据为一个分片数据的元数据,该多个第一元数据对应的多个分片数据为该日志数据的分片数据;基于该备份数据,恢复第一时刻至第二时刻之间的增量分片数据;其中,该第一时刻为存储该备份数据前开始获取该第一元数据的时刻,该第二时刻为存储该备份数据前结束获取该第二元数据的时刻。

本申请实施例通过分别获取多个分片数据中每个分片数据的第一元数据、分片关系数据的第二元数据,能够基于获取的元数据有效恢复第一时刻至第二时刻之间的增量分片数据。在无需加数据锁的前提下,确定增量分片数据,从而保证备份数据的业务一致性,实现分布式数据库中的有效数据备份,且不影响数据库业务。

可选的,该基于该备份数据,恢复第一时刻至第二时刻之间的增量分片数据的过程,包括:恢复该日志数据中该第一时刻至该第二时刻之间产生的增量日志数据;基于该多个第一元数据,恢复该多个分片数据;基于恢复的该增量日志数据以及分片关系数据,确定该第一时刻至该第二时刻之间的至少一个增量分片数据,该分片关系数据用于记录日志数据的子数据与分片的对应关系;基于该分片关系数据和该至少一个增量分片数据,更新该多个分片数据,更新后的该多个分片数据包括该至少一个增量分片数据。

备份数据中还可以包括日志数据,该备份数据包括的日志数据包括目标备份时段的增量日志数据。本申请实施例以以下几种情况为例进行说明:

第一种情况,备份数据还包括截至第三时刻获取的日志数据(即上传时刻获取的日志数据)、第一指示信息和第二指示信息。该第三时刻为第二时刻之后的指定时刻,例如该第三时刻为距第二时刻指定时长的时刻,又例如该第三时刻为可获取的所有日志数据全部被存储的时刻(例如备份数据需要被存储在云存储空间,该第三时刻即为在数据存储节点本地获取的日志数据全部被上传的时刻)。第一指示信息用于指示第一时刻,第二指示信息用于指示第二时刻。

在第一种可选示例中,假设该第一指示信息为全局分片落盘LSN,第二指示信息为连续落盘LSN。管理节点可以基于获取的数据对应关系,确定全局分片落盘LSN在日志数据中所对应的目标LSN,然后基于目标LSN和连续落盘LSN确定增量日志数据,该增量日志数据对应的LSN为目标LSN到连续落盘LSN之间的LSN。

在第二种可选示例中,该第一指示信息和第二指示信息可以是时间戳,例如原子钟时间戳。管理节点可以基于第一指示信息中的时间戳(表征第一时刻)和第二指示信息中的时间戳(表征第二时刻)确定目标时间段(即两个时间戳之间的差值),然后基于备份数据中的日志数据中的时间戳,在备份数据中的日志数据中确定第一时刻和第二时刻之间的增量日志数据,该增量日志数据中的时间戳属于目标时间段。

在第三种可选示例中,该第一指示信息和第二指示信息可以是全局唯一标识。示例的,该全局唯一标识可以表征时间上,或者空间上的先后顺序。该全局唯一标识按照递增的方式分配。例如,其可以为递增的数字,或依序递增的字母等。管理节点可以基于第一指示信息中的全局唯一标识(表征第一时刻)和第二指示信息中的全局唯一标识(表征第二时刻)确定目标变量范围(即以两个全局唯一标识为端点的范围),然后基于备份数据中的日志数据中的全局唯一标识,在备份数据中的日志数据中确定第一时刻和第二时刻之间的增量日志数据,该增量日志数据中的全局唯一标识属于目标变量范围。

第二种情况,备份数据还包括第二元数据对应的日志数据、第一指示信息和第二指示信息。在进行数据恢复时,可以基于该第一指示信息和该第二指示信息,在该第二元数据对应的日志数据中确定的该第一时刻至该第二时刻之间产生的增量日志数据。

第三种情况,备份数据还包括日志数据中第一时刻至第二时刻之间产生的增量日志数据;在进行数据恢复时,分析节点可以直接获取增量日志数据。

可选的,该第一指示信息包括:该第一时刻的全局分片落盘LSN,该全局分片落盘LSN为对应时刻已全局连续落盘的分片数据对应的LSN中最大的LSN;该第二指示信息包括:该第二时刻的连续落盘LSN,该连续落盘LSN为对应时刻已连续落盘的日志数据对应的LSN中最大的LSN。

管理节点获取分片关系数据的方式可以有多种。在一种可选方式中,备份数据包括分片关系数据,管理节点可以直接在该备份数据中获取分片关系数据;在另一种可选方式中,管理节点可以预先存储有分片关系规则,基于该分片关系规则获取分片关系数据;在再一种可选方式中,分片关系数据具有元数据,该分片关系数据的元数据称为第三元数据,备份数据包括该第三元数据,管理节点基于该第三元数据恢复分片关系数据。

可选的,该基于该分片关系数据和该至少一个增量分片数据,更新该多个分片数据的过程,包括:对于每个该增量分片数据,当对应的目标分片存储有与该增量分片数据相同的数据时,禁止写入该增量分片数据,或者,采用该增量分片数据覆盖该对应的目标分片中与该增量分片数据相同的数据,该目标分片为基于该分片关系数据确定的该增量分片数据对应的分片。

当对应的目标分片存储的数据均与增量分片数据不同时,说明目标分片存储的数据均与增量分片数据存在重复的数据,采用上述两种方式,可以避免最终存储的分片数据中存在重复的数据,减少冗余数据对存储空间的占用,实现幂等特性。

可选的,该日志数据、该分片关系数据和该分片数据中任一数据的元数据包括:至少一个文件中每个文件的数据写入信息,该至少一个文件用于存储该任一数据;任一文件的数据写入信息用于记录该任一文件在该至少一个文件中的位置,以及该任一文件中的写入数据的结束位置。

可选的,对于该日志数据或该分片数据,该任一文件的数据写入信息包括:该任一文件中的写入数据中携带的最大日志序列号LSN,以及该任一文件的文件位置标识。

第三方面,本申请提供一种数据备份装置,该装置可以包括至少一个模块,该至少一个模块可以用于实现上述第一方面或者第一方面的各种可能实现提供的该数据备份方法。

第四方面,本申请提供一种数据恢复装置,该装置可以包括至少一个模块,该至少一个模块可以用于实现上述第一方面或者第一方面的各种可能实现提供的该数据恢复方法。

第五方面,本申请提供一种计算机设备,该计算机设备包括处理器和存储器。该存储器存储计算机指令;该处理器执行该存储器存储的计算机指令,使得该计算机设备执行上述第一方面或者第一方面的各种可能实现提供的方法,使得该计算机设备部署上述第三方面或者第三方面的各种可能实现提供的该数据备份装置。

第六方面,本申请提供一种计算机设备,该计算机设备包括处理器和存储器。该存储器存储计算机指令;该处理器执行该存储器存储的计算机指令,使得该计算机设备执行上述第二方面或者第二方面的各种可能实现提供的方法,使得该计算机设备部署上述第四方面或者第四方面的各种可能实现提供的该数据恢复装置。

第七方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,该计算机指令指示该计算机设备执行上述第一方面或者第一方面的各种可能实现提供的方法,或者该计算机指令指示该计算机设备部署上述第三方面或者第三方面的各种可能实现提供的数据备份装置。

第八方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,该计算机指令指示该计算机设备执行上述第二方面或者第二方面的各种可能实现提供的方法,或者该计算机指令指示该计算机设备部署上述第四方面或者第四方面的各种可能实现提供的数据恢复装置。

第九方面,本申请提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面或者第一方面的各种可能实现提供的方法,使得该计算机设备部署上述第三方面或者第三方面的各种可能实现提供的数据备份装置。

第十方面,本申请提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第二方面或者第二方面的各种可能实现提供的方法,使得该计算机设备部署上述第四方面或者第四方面的各种可能实现提供的数据恢复装置。

第十一方面,提供一种分布式数据库系统,包括:管理节点和数据节点,该管理节点包括第二方面或者第二方面的各种可能实现该的数据备份装置或第三方面该的计算机设备。或者,该管理节点包括第四方面或者第四方面的各种可能实现该的数据恢复装置或第六方面该的计算机设备。

第十二方面,提供一种芯片,该芯片可以包括可编程逻辑电路和/或程序指令,当该芯片运行时用于实现如第一方面任一该的数据备份方法。或者,当该芯片运行时用于实现如第二方面任一该的数据恢复方法。

附图说明

图1是本申请实施例提供的一种示意性的日志数据与分片日志数据以及分片的关系示意图;

图2是本申请实施例提供的数据备份方法所涉及分布式数据库系统的一种应用环境的示意图;

图3是本申请实施例提供的数据备份方法所涉及分布式数据库系统的另一种应用环境的示意图;

图4是本申请实施例提供的一种数据备份方法的时间轴示意图;

图5是本申请实施例提供的一种数据备份方法的流程示意图;

图6是本申请实施例提供的一种事务记录的结构示意图;

图7为本申请实施例提供的一种第一时刻的分片数据中的分片日志数据存储状态示意图;

图8为本申请实施例提供的一种第二时刻的日志数据存储状态示意图;

图9为本申请实施例提供的一种目标备份时段对应的日志数据的获取方式示意图;

图10为本申请实施例提供的另一种目标备份时段对应的日志数据的获取方式示意图;

图11为本申请实施例提供的一种增量日志的获取方式示意图;

图12是本申请实施例提供的数据备份方法所涉及分布式数据库系统的又一种应用环境的示意图;

图13是本申请实施例提供的一种数据备份方法的时间轴示意图;

图14是本申请实施例提供的数据备份方法所涉及分布式数据库系统的又一种应用环境的示意图;

图15是本申请实施例提供的一种数据恢复方法的流程示意图;

图16是本申请实施例提供的一种基于增量日志数据获取至少一个增量分片数据的原理示意图;

图17是本申请实施例提供的另一种数据备份方法的流程示意图;

图18是本申请实施例提供的一种数据恢复方法的流程示意图;

图19是本申请实施例提供的一种数据备份装置的框图;

图20是本申请实施例提供的另一种数据备份装置的框图;

图21是本申请实施例提供的一种数据恢复装置的框图;

图22是本申请实施例提供的另一种数据恢复装置的框图;

图23是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

为了便于读者理解,以下对本申请实施例中所涉及的名词进行解释:

关系型数据库:是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据。每个关系模型可以称为一个关系表。根据存储原理的不同,关系型数据库可以分为分布式关系型数据库和非分布式关系型数据库。

事务:是维护数据库数据一致性和完整性的单位,其具备“要么全成功,要么全失败”的特性。一个事务在提交前,数据库不对其数据的一致性和完整性负责。但事务一旦提交,数据库就要保证数据的一致性和完整性,简单来说就是事务一旦提交后,就不能丢数据。在关系型数据库中,为了提升性能,一般把事务数据(即事务执行时所涉及的数据,也称事务内容)写入到事务日志和缓冲池(Buffer Pool)后,事务就提交了。

页面(page):也称页、数据页、物理页或物理页面,页面是数据库系统存储的基本单位。例如,在某一数据库系统中,页面的大小是8千字节(KB),则该数据库系统中每兆字节有128页。

事务日志:在关系型数据库中,用于记录事务在执行过程中所涉及的数据。该事务日志是可以直接存放在磁盘上的一组文件,其通常是顺序存储的物理日志。事务日志用于记录页面的历史修改信息(通常是物理修改信息)。比如,某一事物日志用于记录对1个页面上的第10字节(byte)至第13字节的历史修改信息。采用事物日志记录页面的历史修改信息,比重新生成一个页面更加高效,从而可以保证较高的写入效率。该事务日志通常被存储在一个或多个日志文件(例如2个日志文件)中,日志文件中存储着事务记录(redorecords),每一个事务记录也被称作为事务条目(redo entry),该事务记录是一组改变向量(change vectors,cv),也称改变载体,每一个改变载体描述的是数据库中单个数据块的改变。例如:一个雇员(employee)表中的薪水值被修改,会产生一个事务记录,这个事务记录包括一个改变载体,该改变载体描述的是这个雇员表中数据块的改变。在关系型数据库中,每一个数据库实例都设置有一个对应的事务日志。

在通过事务处理了数据查询指令后,相应的事务数据在事务日志和缓冲池中均已经发生变化,但还未将对应的页面记录到存储介质(如磁盘)中,这种与缓冲池中记录内容不同的页面称为脏页。基于缓冲池的数据,将脏页记录到存储介质的过程称为刷脏。若数据库还有部分脏页没有写入存储介质时,发生了故障,如崩溃(crash),缓冲池中的数据就会丢失,如此就需要存储在存储介质中的事务日志来还原缓冲池中的数据。因此,事务日志的主要作用进行关系型数据库中的数据还原,保证关系型数据库中的数据的一致性和完整性。

元数据(metadata):又称中介数据或中继数据,为描述数据的数据(data aboutdata),通常为用于描述数据属性(property)的信息,元数据可以用于支持如指示存储位置、历史数据、资源查找或文件记录等功能。

分片:是数据存储节点中的一个独立的数据区域(也称存储空间),该区域可以是物理上与其他分片隔离的,也是可以是逻辑上进行隔离的。

日志序列号(log sequence number,LSN):是一个递增型的整形数字,表示事务写入到事务日志的字节总量。由于其一直递增,LSN可以作为表示不同时刻写入的事务数据的唯一标识。LSN主要用于数据库发生故障时对数据进行恢复。LSN既可以保存在事务日志中,也可以保存在缓冲池中。

落盘:指的是数据写入存储介质。该存储介质为非易失性计算机可读存储介质,如磁盘、只读存储器或光盘等。

日志优先(write ahead log,WAL)原则:也称日志先行原则,即当事务提交时,先在存储介质中写入事务日志,再修改页面数据,此处的页面数据指的是缓冲池中的数据页和索引页的数据。

快照(snapshot):关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时刻(拷贝开始的时刻)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。本申请实施例中的快照技术可以参考新技术文件系统(NewTechnology File System,NTFS)或第四代扩展文件系统(英语:Fourth extendedfilesystem,EXT4)的快照技术。应用于数据库中的快照技术也称数据库快照。

为了提高数据库的容灾性,需要备份事务日志。在一些非分布式关系型数据库(如MySQL)中,会在备份事务日志时,加数据锁(如全局读锁),在完成事务日志的备份后再解锁。但是当关系型数据库是分布式数据库时,如图1所示,事务日志的日志数据会被划分为多个分片日志数据,分别存储在数据存储节点的分片中,每个分片中的数据称为分片数据。通常每个分片数据至少包括分片日志数据,还可以包括分片页面数据。其中分片日志数据包含日志数据的部分内容,分片页面数据是基于对应的分片数据生成的,例如分片页面数据是由数据存储节点将对应的分片日志数据转化得到的。值得说明的是,当分片数据中的某一分片日志数据转化为分片页面数据后,该某一分片日志数据可以删除,也可以保留,本申请实施例对此不做限定。在分布式数据库中,主要对日志数据对应的多个分片数据进行备份。由于分片数据是基于日志数据生成的,因此在获取了多个分片数据后,若需要恢复日志数据,基于获取的多个分片数据即可恢复日志数据。但是如果一个日志数据对应的分片数据较多,实际的备份完成时刻与备份开始时刻间隔的时间较长,则对多个分片数据进行备份的时长较长。如果直接将多个分片数据分别备份,可能会在备份过程中产生增量分片数据,该增量分片数据在数据恢复时无法确定,无法保证备份数据的业务一致性;如果在备份多个分片数据的过程中加锁,以避免产生增量分片数据,又容易导致业务中断时间过长。因此亟需一种能够在分布式数据库中进行数据的有效备份的方法。

本申请实施例提供一种数据备份方法,可以应用于分布式关系型数据库,并解决上述问题。示例的,该分布式关系型数据库可以是基于NTFS或EXT4的文件系统构建,也可以基于其他分布式文件系统或分布式存储系统构建。如greenplum数据库或者TaurusDB等。其中,greenplum DB简称gpdb。请参考图2,图2是本申请实施例提供的数据备份方法所涉及分布式数据库系统(Distributed Database System,DDBS)的一种应用环境的示意图。该DDBS可以为一个服务器或者由多个服务器组成的服务器集群,该DDBS包括分布式数据库管理系统(Distributed Database Management System,DDBMS)和DDB。在分布式数据库系统中,一个应用程序可以通过DDBS对DDB进行透明操作,DDB中的数据分别在不同的局部数据库中存储、由一个或多个DDBMS进行管理、在不同的机器上运行、由不同的操作系统支持,并被不同的通信网络连接在一起。其中,DDBS10包括:管理节点(也称数据库引擎,协调数据节点,coordinator)101和多个数据节点102。DDBMS可以部署在管理节点101上,DDB可以部署在多个数据节点(data node)102上。

DDBS10可以包括一个或多个管理节点101,管理节点101用于管理相应的数据节点102,并实现应用程序20对数据节点102的操作,例如执行数据添加操作、数据删除操作、数据修改操作或数据查询操作等。

本申请实施例中,管理节点101可以为单独的一个节点,或者多个数据节点102中指定数据节点或者选举得到的数据节点,其可以为一个服务器或者由多个服务器组成的服务器集群。在一种实现方式中,每个数据节点可以为一个服务器或者由多个服务器组成的服务器集群;在另一实现方式中,每个数据节点表征DDBS的一个设定的最小处理单元。示例的,每个数据节点可以为一个虚拟机或一个容器,其管理和/或存储数据的一个应用实例或一个数据库执行进程。分布式数据库可以具有一个或多个表空间(tablespace),表空间是关系型数据库的逻辑划分,一个表空间通常属于一个数据库。一个表空间通常包括一个或多个关系表。

进一步的,管理节点101还可以进行任务日志的日志数据以及相应的分片数据的备份。如图3所示,图3是本申请实施例提供的数据备份方法所涉及分布式数据库系统的另一种应用环境的示意图。图3以DDBS10中的一个管理节点101为例对分布式数据库系统进行说明,假设该管理节点101包括:处理子节点1011,备份子节点1012和虚拟路由(VirtualRouter)1013,多个数据节点102包括多个数据存储节点,该多个数据存储节点包括数据存储节点A至数据存储节点G。该多个数据存储节点通常占用分布式数据库系统的内存空间。

其中,处理子节点1011用于接收数据处理请求(如数据的读取、写入、增加、删除或修改请求),并基于接收的数据处理请求,通过虚拟路由1013对目标数据存储节点进行数据的处理。处理子节点1011支持结构化查询语言(Structured Query Language,SQL)功能。该处理子节点1011的功能可以由数据库实例实现,该数据库实例为数据写入的主体。备份子节点1012是备份流程的调度者,用于通过虚拟路由1013,发送备份流程中的各个请求(或指令)到DDBS中的各个数据节点,以将日志数据和分片数据进行备份,该请求可以包括后续实施例涉及的日志备份请求或快照请求。虚拟路由1013用于进行请求的路由,以实现请求的分发,以供接收到请求的数据节点执行与请求对应的动作,如数据的读写。其中,处理子节点1011、备份子节点1012和路由子节点的功能可以分别由一个独立的进程实现,也可以由同一进程实现,该同一进程为数据库实例中的一个进程。

数据存储节点由于其存储数据的类型不同,可以划分为日志存储节点和分片存储节点。其中,日志存储节点用于存储日志数据,每个日志数据有1个或者多个副本,称为日志数据副本,一份日志数据的内容通过其副本进行存储。同一份日志数据的不同副本分布在不同的日志存储节点上。分片存储节点用于存储分片数据,每个分片数据有1个或者多个副本,一份分片数据的内容通过其副本进行存储。同一份分片数据的不同副本分布在不同的分片存储节点的分片中。图3假设数据存储节点A至C为日志存储节点;数据存储节点D至G为分片存储节点。其中,日志数据有3个副本,分别为日志数据副本1至3,该日志数据副本1至3分别存储在数据存储节点A至C中;与前述日志副本对应的3个分片数据分别为分片数据1至3,该3个分片数据中,每个分片数据有3个副本,分别为副本1至3,每个分片数据的3个副本分别存储在数据存储节点D至F中的3个数据存储节点中。例如,分片数据1的副本1至3分别存储在数据存储节点D、E和G;分片数据2的副本1至3分别存储在数据存储节点D、E和G;分片数据3的副本1至3分别存储在数据存储节点D、F和G。

需要说明的是,本申请实施例所提供的数据备份方法,事务日志或者页面的写入方式采用只追加(Append only)模式,该模式支持只新增写入数据,不通过覆盖方式修改已写入的数据。

在一种可选方式中,本申请实施例提供的分布式关系型数据库的文件系统本身支持只追加模式。在只追加模式下的文件系统中,只允许追加文件但不可以改写文件,生成的文件称为只追加文件(Append Only File,AOF)。

在另一种可选方式中,本申请实施例提供的分布式关系型数据库的文件系统本身未设置Append only模式。但是无论该分布式关系型数据库是基于NTFS或EXT4的文件系统构建,还是基于其他分布式文件系统或分布式存储系统构建,只要事务日志或者页面的写入方式采用只追加模式,都可以通过本申请实施例提供的数据备份方法进行备份。

为了便于读者理解,下面对本申请实施例所提供的数据备份方法的原理进行介绍。在分布式数据库中,基于日志优先原则,在每次产生事务日志后,将该事务日志的日志数据先写入对应的数据存储节点,实现日志数据的落盘(即存储日志数据的指定个数的副本);在本次事务日志的日志数据落盘后,将其划分为多个分片数据,再写入对应的数据存储节点,实现分片数据的落盘(即存储每个分片数据的指定个数的副本)。其中,分片数据包括分片日志数据和分片页面数据中的至少一种。其中,分片页面数据是基于对应的分片日志数据生成的,例如分片页面数据是由对应的分片日志数据转化得到的。传统的分布式关系数据库中,日志数据和分片数据并不对应设置元数据,本申请实施例为日志数据和分片数据配置元数据,以定位增量分片数据。

如图4所示,图4是本申请实施例提供的一种数据备份方法的时间轴示意图。在本申请实施例中,管理节点在接收到日志备份请求后,开始进行日志数据和分片数据的备份。为了获取在分片数据备份过程中所产生增量分片数据,需要确定目标备份时段,为了便于读者理解,后续实施例将目标备份时段的开始时刻称为第一时刻,将目标备份时段的结束时刻称为第二时刻。该目标备份时段包括分片数据的元数据备份时段和日志数据的元数据备份时段,在确定了目标备份时段后,可以通过该时段获取的分片数据的元数据恢复分片数据,恢复后的分片数据至少包括第一时刻前的分片数据。通过该时段的日志数据的元数据来恢复该时段的增量分片数据,从而可以通过恢复后的分片数据以及增量分片数据确定最终的分片数据,保证备份数据的一致性。为了便于读者理解,后续实施例将日志数据的元数据称为第一元数据,将分片数据的元数据称为第二元数据。

本申请实施例提供一种数据备份方法,应用于如图2或图3所示的应用环境,该数据备份方法的全部或部分可以由前述管理节点执行,如由管理节点中的备份子节点执行。在本申请实施例中,数据备份方法有多种实现方式,对于不同的实现方式,相应的数据恢复方法也不同,本申请实施例以以下两种实现方式对该数据备份方法进行说明。

在第一种实现方式中,用于指示第一时刻和第二时刻的指示信息在数据备份阶段确定。如图5所示,数据备份方法包括:

步骤201、管理节点存储日志数据。

当管理节点检测到应用程序发送的数据处理请求后,通过事务来控制相应的数据节点执行数据处理请求所请求执行的操作。例如,管理节点可以基于数据处理请求,发起多个分布式事务,在执行每个分布式事务时生成一个或多个分布式计划,并指示相应的数据节点执行生成的分布式计划,从而实现数据处理请求所请求的操作。

在前述事务执行的过程中,产生相应的事务数据,管理节点将事务数据相应写入事务日志中,以实现日志数据的存储,也即是日志数据的落盘。

步骤202、管理节点存储与日志数据对应的分片数据。

分布式数据库中,在日志数据落盘后,管理节点可以将日志数据进行分片处理,得到多个分片数据,并在对应的数据存储节点的分片上存储多个分片数据,也即是进行多个分片数据的落盘。每个分片数据包括分片日志数据和分片页面数据中的至少一种。

可选的,管理节点中存储有分片关系数据,该分片关系数据用于记录日志数据的子数据与分片的对应关系,一个(或称一份)子数据可以包括一个或多个事务记录。示例的,该分片关系数据可以由图3中管理节点的处理子节点保存,例如由该处理子节点中的一个进程保存。该分片关系数据可以以表的形成存储,因此也称为分片列表。该分片列表可以采用全量更新的方式更新该日志数据的子数据与分片的对应关系,也即是,在每次对应关系需要更新时,采用新的分片列表替换原有的分片列表;该分片列表也可以采用增量更新的方式更新日志数据的子数据与分片的对应关系,也即是,在首次保存该分片列表后,若需要更新对应关系,只更新与原有分片列表记录的数据不同的数据,也即是更新增量数据。

可选的,该分片关系数据可以包括第一对应关系和第二对应关系,第一对应关系用于记录日志的子数据与数据库对象的对应关系,第二对应关系用于记录数据库对象与分片的对应关系,该数据库对象指的是关系型数据库中数据处理过程所针对的对象。其可以为表空间(如关系表)、页面、索引或者其他与数据库分类(也称归属)相关的对象。

示例的,该第一对应关系可以记录子数据的标识信息与页面的标识信息的对应关系,第二对应关系可以记录页面的标识信息和分片的标识信息的对应关系。子数据的标识信息与页面的标识信息的对应关系通常为多对一的对应关系,该页面的标识信息和分片的标识信息的对应关系通常为一对一,或者多对一的关系,例如一个分片可以对应100个页面。其中,页面的标识信息用于唯一标识一个页面,该标识信息可以由一个或多个字符组成。例如,该字符可以为二进制字符,例如0或1,也可以为十进制字符。值得说明的是,一个关系型数据库中可能存储有一个或多个关系表,每个关系表都包括多个页面。为了实现对页面的唯一标识,当关系型数据库中仅存储一个关系表时,该页面的标识信息可以仅包括页面的身份标识码(identity document,ID,简称标识);当关系型数据库中存储多个关系表时,该页面的标识信息可以包括关系表的ID和页面的ID。

分片的标识信息用于唯一标识一个分片,该标识信息可以由一个或多个字符组成。例如,该字符可以为二进制字符,例如0或1,也可以为十进制字符。值得说明的是,当分布式关系型数据库中包括多个数据存储节点,每个数据存储节点上包括多个分片。为了实现对分片的唯一标识,在一种可选方式中,可以为所有分片分配互不相同的分片ID,作为对应分片的标识信息;在另一种可选方式中,不同数据存储节点上的分片ID有重叠,则分片的标识信息可以包括数据存储节点的ID和分片ID。

每个数据库对象在被操作时会产生日志数据。管理节点可以基于前述分片关系数据将日志数据进行分片处理。例如,对于获取的日志数据的每个子数据,管理节点可以查询第一对应关系,得到该子数据对应的数据库对象;然后,采用该子数据对应的数据库对象查询该第二对应关系,得到对应的分片,(即确定每个子数据对应的分片,该过程可以视为将每个子数据映射到对应的分片中)。最终,管理节点将对应于同一个分片的子数据确定为一个分片日志数据,然后将每个分片日志数据写入到对应的分片中,即完成分片日志数据的存储,一个或多个分片日志数据存储后,可以转化为分片页面数据,最终一个分片内存储的分片数据可以包括分片日志数据和/或分片页面数据。

值得说明的是,该分片关系数据也可以仅包括前述第二对应关系,每个子数据在生成时携带其对应的数据库对象(也称所属的数据库对象)的标识信息。对于获取的日志数据的每个子数据,管理节点可以采用该子数据所携带的数据库对象的标识信息查询第二对应关系,得到对应的分片。无需查询两个对应关系。示例的,假设数据库对象为页面,该第二对应关系可以如表1所示。页面ID为00至04的页面分别与分片ID为0至3的分片一一对应。

表1

页面ID 分片ID
00 0
01 1
02 2
03 3

假设通过查询第一对应关系或者提取子数据中携带的页面ID确定当前获取的日志数据包括:属于页面00的子数据A,属于页面01的子数据B,则查询上述表1,可以将子数据A作为分片数据写入分片0;将子数据B作为分片数据写入分片1。从而实现了日志数据所包括的分片数据的存储。

步骤203、管理节点获取第一指示信息,该第一指示信息用于指示第一时刻。

在本申请实施例中,管理节点在接收到日志备份请求后,开始进行日志数据和分片数据的备份。该第一时刻是目标备份时段的开始时刻。该第一时刻与后续开始获取第一元数据(即第一个第一元数据的获取时刻)的时刻通常为同一时刻,或者两者的时间差忽略不计。

用于指示第一时刻的第一指示信息可以是时间戳,例如原子钟时间戳,也可以是全局唯一标识,还可以为第一时刻的全局分片落盘LSN(Global Slice Persist LSN)。

其中,当第一指示信息为时间戳时,日志数据的每个已落盘的事务记录中均携带对应的时间戳。管理节点直接在第一时刻获取相应的时间戳即可;当第一指示信息为全局唯一标识时,日志数据的每个已落盘的事务记录中均携带对应的全局唯一标识。管理节点直接在第一时刻获取相应的全局唯一标识即可。

目前的事务日志中,每个事务日志的日志数据包括一个或多个事务记录,每条事务记录均携带一个LSN。如图6所示,图6是一种事务记录的结构示意图。该事务记录包括日志类型位、日志长度位、LSN位、数据位和校验位。其中,日志类型位用于记录该事务日志对页面的修改方式(也称修改类型),例如日志类型位的内容用于指示修改了2个byte、创建一个空页面或者修改文件名等等,日志长度位用于记录该事务记录的长度,例如长度为100字节;LSN位用于记录该事务记录的LSN;数据位用于记录该事务记录中的实际数据(或称实际内容);校验位用于记录校验值,该校验值用于校验数据位所携带的数据的准确性。其中,日志类型位、日志长度位、LSN位和校验位的长度固定。例如,日志类型位的长度为4字节,日志长度位的长度是8字节,LSN位的长度是8字节,校验位的长度是8字节。

由于分片日志数据是基于日志数据得到的,其数据结构与日志数据的数据结构相同,携带有LSN;而分片页面日志数据是由对应的分片日志数据转化得到的,也携带对应的分片日志数据的LSN。因此,事务日志的日志数据和分片数据中均携带LSN。全局分片落盘LSN是基于分片数据中的LSN确定的,采用全局分片落盘LSN可以实现基于事务日志中原有的数据结构来标识第一时刻,在尽量减少对整体文件系统的影响的前提下,保证确定的第一时刻的准确性。

其中,该全局分片落盘LSN为对应时刻(在本申请实施例中为第一时刻)已全局连续落盘的分片数据对应的LSN中最大的LSN。其中,已全局连续落盘指的是已落盘且全局连续落盘。在本申请实施例中,可以先获取每个分片数据的已落盘的数据,再在获取的已落盘的数据中获取连续落盘的数据,作为已全局连续落盘的分片数据。值得说明的是,由于分片页面数据是在分片日志数据落盘后转化得到的,也即是,携带的LSN与对应分片日志数据携带的LSN相同。因此,前述全局分片落盘LSN可以为对应时刻已全局连续落盘的分片日志数据对应的LSN中最大的LSN,无需考虑分片页面数据中的LSN。

一个(或称一份)分片数据已落盘指的是该分片数据的各个副本均已存储。对于同一分片数据,由于写入的存储介质的不同,写入速度也相应不同,因此,其落盘的数据会不断变化,对应的LSN也不断变化。

以图7为例,图7为第一时刻的分片数据中的分片日志数据存储状态示意图,假设分片日志数据1的副本1至3需要分别存储在数据存储节点D、E和G,分片日志数据1中的事务记录的LSN为LSN100至LSN300;分片日志数据2的副本1至3需要分别存储在数据存储节点D、E和G,分片日志数据2中的事务记录的LSN为LSN301至LSN200;分片日志数据3的副本1至3需要分别存储在数据存储节点D、F和G,分片日志数据3中的事务记录的LSN为LSN201至LSN200。假设,LSN100至LSN200表示连续的LSN。在第一时刻,分片日志数据1的副本1已写入数据存储节点D的数据的LSN为LSN100至LSN300,分片日志数据1的副本2已写入数据存储节点E的数据的LSN为LSN100至LSN140,以及LSN160至LSN170,分片日志数据1的副本3已写入数据存储节点E的数据的LSN为LSN100至LSN140,以及LSN171至LSN180。则分片日志数据1落盘的事务记录的LSN为LSN100至LSN140。同理,图7中分片日志数据2已落盘的事务记录的LSN301至LSN350,图7中3已落盘的事务记录的LSN401至LSN460。

连续落盘指的是数据按照LSN由小到大的顺序落盘。一旦LSN在中间断开,后面的数据即不为连续数据。全局连续落盘指的是,所有分片数据连续落盘。即所有分片数据中按照LSN由小到大的顺序落盘。

请继续参考图7,分片日志数据1至3已落盘的事务记录的LSN分别为LSN100至LSN140、LSN301至LSN350和LSN401至LSN460。其中,虽然对于分片日志数据2,与LSN301至LSN320事务日志可以视为连续落盘,但是对于所有分片日志数据,即分片日志数据1至3,从LSN140与LSN301之间的LSN存在断开,因此,全局连续落盘的数据对应的LSN为LSN100至LSN140。其中,最大的LSN为LSN140,则全局分片落盘LSN为LSN140。

本申请实施例中,还可以采用指示第一时刻的第一指示信息还可以为其他信息,只要能表征第一时刻即可。例如,其还可以等于全局分片落盘LSN-K,K≥1,K为可接受误差范围内的数值,例如g=1或2。

步骤204、管理节点获取多个分片数据中每个分片数据的第一元数据。

多个分片数据是对日志数据进行分片处理得到的数据,即该多个分片数据为一个(或称一份)日志数据对应的分片数据。在本申请实施例中,事务日志对应的数据包括日志数据和该日志数据的元数据。其中,日志数据为事务在执行过程中所涉及的数据,也称事务内容;元数据用于描述该日志数据。通过该元数据可以定位到日志数据,也即是确定日志数据的存储位置。

由于本申请实施例提供的数据备份方法,事务日志或者页面的写入方式采用只追加模式,而采用该模式下的文件系统中,文件的大小(即文件中能够写入的数据量)设置有上限。如果待写入的数据较大(即数据的大小大于该上限),则需要分成多个文件进行写入。因此在数据落盘后,落盘的数据存储在至少一个文件中。例如,一个日志数据存储在至少一个文件(通常为至少两个文件)中,一个页面数据存储在至少一个文件中。当需要将落盘的数据存储在多个文件中时,该多个文件是需要具有一定顺序的。在数据恢复时,该多个文件是可以依序链接的,也即是该多个文件存在先后关系,通过这种前后关系,可以把多个文件连接起来。因此,本申请实施例中,日志数据的元数据可以包括:至少一个文件中每个文件的数据写入信息,该至少一个文件用于存储日志数据。也即是,每个文件包括两部分:一部分用于存储日志数据,另一部分用于存储数据写入信息。其中,每个文件中可以设置固定大小的指定位置(也可以称为指定空间),用于存储数据写入信息。示例的,该指定位置可以为该文件的文件头或者文件尾。数据写入信息用于描述该文件中的日志数据的写入情况。例如,该数据写入信息用于记录对应的文件在其所属的至少一个文件中的位置,以及该对应的文件中的写入数据(即写入的日志数据)的结束位置。通过此种元数据可以有效标识各个文件的位置,从而在数据恢复时,实现文件的依次连续获取,保证文件的连续性,从而恢复得到有效的日志数据。

由于在事务日志或者页面的写入方式采用只追加模式的文件系统中,文件只能写入,其数据量是递增的。因此可以通过写入文件的数据量来标识文件中的写入数据的结束位置。可选的,对于任一文件,可以在每次写入数据后,将当前写入的数据总量(即当前时刻之前的所有写入时刻所写入的数据量的总和)来标识该文件中的写入数据的结束位置。例如,假设对于文件F1,其记录了3个时刻分别写入的100字节的数据,相应的,管理节点在每次写入数据时,确定对应时刻写入的数据量,并记录该数据量。假设管理节点在3个时刻分别在指定位置写入3个指示信息,该3个指示信息分别指示数据量为100字节、200字节和300字节。如该指示信息为数据量的数值,如100、200和300。如此,在每次进行写入数据的结束位置的查询时,直接查询最近写入的数据量的指示信息即可快速确定写入数据的结束位置。例如,查询得到最近写入的指示信息为300,则确定写入数据的结束位置为写入300字节数据的位置。

如前所述,LSN表征了事务写入到事务日志的字节总量。则显然,LSN是一种针对事务日志的典型的数据量的指示信息。由于一个文件的日志数据是不断写入的。随着事务记录写入条数的增多,LSN也逐渐增大。因此,文件中的写入数据所携带的最大的LSN(即最近写入的事务记录的LSN)能够反映该写入数据的结束位置。在本申请实施例中,对于该日志数据对应的至少一个文件中任一文件,该任一文件的数据写入信息可以包括:该任一文件中的写入数据中携带的最大LSN,以此来标识写入数据的结束位置。

例如,对于文件F2,其记录了3个时刻写入的数据。相应的,在每次写入数据时,通过读取对应时刻写入的数据中事务记录中的LSN位(该事务记录的结构可以参考前述图6),确定本次写入数据的最大LSN,并将本次写入数据的最大LSN记录在元数据中,以标识本次写入数据的结束位置。假设3次写入数据的最大LSN分别为0xFFFFFFFFF000、0xFFFFFFFFF00F和0xFFFFFFFFF0FF。则管理节点最终记录在该文件F2中的LSN包括:0xFFFFFFFFF000、0xFFFFFFFFF00F和0xFFFFFFFFF0FF。其中,最大的LSN:0xFFFFFFFFF0FF标识最近一次写入数据的结束位置。

可选的,该日志数据对应的任一文件的数据写入信息还包括:该任一文件的文件位置标识。文件位置标识用于标识该任一文件在其所属的至少一个文件中的位置。其中,文件位置标识可以由一个或多个字符组成。例如,该字符可以为二进制字符,例如0或1,也可以为十进制字符。

在一种可选方式中,由于一些文件的标识本身具有标识其位置的功能,因此该文件位置标识可以为文件的标识。例如,日志数据存储在3个文件中,该三个文件的标识按照其排布顺序分配,分别为00、01和10,则文件00中的文件位置标识为00。

在另一种可选方式中,文件位置标识可以包括:该任一文件的前一个文件的标识和/或后一个文件的标识。值得说明的是,当该任一文件为前述至少一个文件的首个文件,则其前一个文件为空;当该任一文件为前述至少一个文件的末尾文件,则其后一个文件为空;当日志数据只存储在一个文件中,也即是前述至少一个文件实质仅为一个文件,则该文件中的数据写入信息包括的该文件的前一个文件的标识和后一个文件的标识均为空。仍然以日志数据存储在前述3个文件中为例,则文件00中的文件位置标识为01(即仅包括后一个文件的标识);文件01中的文件位置标识为00+10(即包括前一个文件的标识和后一个文件的标识);文件10中的文件位置标识为01(即仅包括前一个文件的标识)。

在本申请实施例中,每个分片对应的数据包括分片数据和该分片数据的元数据。其中,该元数据用于描述该分片数据。通过该元数据可以定位到分片数据,也即是确定分片数据的存储位置。

由于分片日志数据是由日志数据划分得到的,因此每个分片日志数据实际上是日志数据的一部分,具有与日志数据相同的属性。参考前述日志数据,在分片日志数据落盘后,一个(或称一份)分片日志数据存储在至少一个文件中。并且,数据存储节点可以将分片中的部分分片日志数据转化为分片页面数据,该分片页面数据存储在至少一个文件中。值得说明的是,属于同一分片的分片日志数据和分片页面数据所存储的文件可以相同也可以不同。例如,在同一分片中,分片日志数据存储在文件1至3,分片页面数据存储在文件4至6中;又例如,分片日志数据存储在文件1至6中,分片页面数据也存储在文件1至6中,其中,每个文件存储有部分分片日志数据和部分分片页面数据。分片日志数据和分片页面数据在文件中的存储方式是根据数据库系统的存储规则设定的,本申请实施例对此不做限定。

本申请实施例中,分片数据的元数据可以包括:至少一个文件中每个文件的数据写入信息,该至少一个文件用于存储日志数据。也即是,存储分片数据的每个文件包括两部分:一部分用于存储分片数据,另一部分用于存储数据写入信息。其中,每个文件中可以设置固定大小的指定位置,用于存储数据写入信息。示例的,该指定位置可以为该文件的文件头或者文件尾。数据写入信息用于描述该文件中的分片数据的写入情况,例如,该数据写入信息用于记录对应的文件在其所属的至少一个文件中的位置,以及该对应的文件中的写入数据(即写入的分片数据)的结束位置。通过此种元数据可以有效标识各个文件的位置,从而在数据恢复时,实现文件的依次连续获取,保证文件的连续性,从而恢复得到有效的分片数据。

与前述存储日志数据的文件同理的,在本申请实施例中,对于分片数据对应的至少一个文件中任一文件,该任一文件的数据写入信息包括:该任一文件中的写入数据中携带的最大LSN,以此来标识写入数据的结束位置。

可选的,该分片数据对应的任一文件的数据写入信息还包括:该任一文件的文件位置标识。该文件位置标识用于标识该任一文件在其所属的至少一个文件中的位置。该文件位置标识的结构可以参考前述日志数据对应的文件位置标识的结构。

存储分片数据的文件的结构和前述存储日志数据的文件的结构可以相同,或相近,因此本申请实施例中对分片数据的文件的结构不再赘述。

本申请实施例中,管理节点可以依次(也称串行)获取多个分片数据中每个分片数据的第一元数据,也可以并行获取多个分片数据中每个分片数据的第一元数据。

可选的,管理节点可以采用快照技术获取第一元数据,如此能有效加快获取第一元数据的速度,提高备份效率。

步骤205、管理节点获日志数据的第二元数据。

可选的,管理节点可以采用快照技术获取第二元数据,如此能有效加快获取第二元数据的速度,提高备份效率。

步骤206、管理节点获取第二指示信息,该第二指示信息用于指示第二时刻。

前述第二时刻是目标备份时段的结束时刻。值得说明的是,该第二时刻与前述获取第二元数据的时刻(即前述步骤205的结束时刻)通常为同一时刻,或者两者的时间差忽略不计。

用于指示第二时刻的第二指示信息与前述第一指示信息的类型一致,如此可以保证第一时刻和第二时刻指示方式的一致性,以采用相同的方式获取第一时刻和第二时刻,提高目标备份时段的确定时效。与前述第一指示信息对应的,该第二指示信息可以是时间戳,例如原子钟时间戳,也可以是全局唯一标识,还可以为第二时刻的连续落盘LSN(flushto disk LSN)。

连续落盘LSN是基于日志数据中的LSN确定的,采用连续落盘LSN可以实现基于事务日志中原有的数据结构来标识第一时刻,在尽量减少对整体文件系统的影响的前提下,保证确定的第二时刻的准确性。

其中,连续落盘LSN为对应时刻(在本申请实施例中为第二时刻)已连续落盘的日志数据对应的LSN中最大的LSN。其中,已连续落盘指的是已落盘且连续落盘。在本申请实施例中,可以先获取日志数据的已落盘的数据,再将获取的已落盘的数据中连续落盘的数据,作为已连续落盘的日志数据。

一个日志数据已落盘指的是该日志数据的各个副本均已存储。对于同一日志数据,由于写入的存储介质的不同,写入速度也相应不同,因此,其连续落盘LSN会不断变化。

以图8为例,图8为第二时刻的日志数据存储状态示意图,假设日志数据的副本1至3需要分别存储在数据存储节点A至C,日志数据中的事务记录的LSN为LSN700至LSN1000。假设,在第二时刻,日志数据的副本1已写入数据存储节点A的数据的LSN为LSN700至LSN750,日志数据的副本2已写入数据存储节点B的数据的LSN为LSN700至LSN720,日志数据的副本3已写入数据存储节点C的数据的LSN为LSN700至LSN800。则数据存储节点D、E和G中与已连续落盘的日志数据对应的LSN为LSN700至LSN720。其中,最大的LSN为LSN720。则日志数据的连续落盘LSN为LSN720。

步骤207、管理节点存储备份数据,该备份数据包括:多个第一元数据和第二元数据。

其中,多个第一元数据和第二元数据用于恢复第一时刻至第二时刻之间的增量分片数据。

如前所述,该日志备份请求主要用于指示备份日志数据对应的多个分片数据。本申请实施例中备份数据中还可以包括日志数据,该备份数据包括的日志数据包括目标备份时段的增量日志数据,以恢复增量分片数据。本申请实施例以以下几种情况为例进行说明:

第一种情况,备份数据还包括截至第三时刻获取的日志数据(即上传时刻获取的日志数据)、第一指示信息和第二指示信息。该第三时刻为第二时刻之后的指定时刻,例如为距第二时刻指定时长的时刻,又例如为可获取的所有日志数据全部被存储的时刻(例如备份数据需要被存储在云存储空间,该第三时刻即为在数据存储节点本地获取的日志数据全部被上传的时刻)。第一指示信息用于指示第一时刻,第二指示信息用于指示第二时刻。在进行数据恢复时,如图9所示,可以基于第一指示信息和第二指示信息指示的第一时刻以及第二时刻,在第三时刻获取的日志数据30a中确定目标备份时段对应的日志数据301(图中阴影部分)。

第二种情况,备份数据还包括第二元数据对应的日志数据、第一指示信息和第二指示信息。相应的,存储备份数据的过程包括存储与第二元数据对应的日志数据。也即是,对于用于存储该日志数据的至少一个文件,在第二元数据所指示的结束位置停止该至少一个文件的存储。例如,假设前述文件F2为用于存储日志数据的一个文件,第二元数据包括与该文件F2对应的数据写入信息:LSN:0xFFFFFFFFF0FF,则存储的文件F2中的写入数据的结束位置为LSN:0xFFFFFFFFF0FF所在的事务记录。

在进行数据恢复时,如图10所示,可以基于第一指示信息和第二指示信息指示的第一时刻以及第二时刻,在第二元数据获取的日志数据30b中确定目标备份时段对应的日志数据301。

在前述第一种情况和第二种情况中,由于在备份数据中携带日志数据主要为了获取目标备份时段的增量日志数据,因此,只要保证备份数据中的日志数据包括该增量日志数据即可,因此备份数据中,日志数据的开始位置在第一时刻对应位置之前的位置即可。例如,该开始位置为第二时刻之前且距离第二时刻指定时长的时刻所对应位置,该指定时长大于前述目标备份时段的时长。

第三种情况,备份数据还包括日志数据中第一时刻至第二时刻之间产生的增量日志数据;则在前述步骤406之前,分析节点还需要确定该第一时刻至第二时刻之间产生的增量日志数据,即目标备份时段对应的日志数据。

可选的,管理节点可以基于第一指示信息和第二指示信息,在日志数据中确定第一时刻至第二时刻之间产生的增量日志数据。

以第一指示信息为全局分片落盘LSN,第二指示信息为连续落盘LSN为例。参考前述步骤202,通过分片关系数据,管理节点基于日志数据确定了多个分片数据。在一种可选方式中,分片数据(例如分片日志数据)与其所属的日志数据的LSN相同,也即是在将分片数据写入对应分片时,不改变分片数据中事务记录所携带的LSN;在另一种可选方式中,分片数据与其所属的日志数据的LSN不同,也即是在将分片数据写入对应分片时,改变分片数据中事务记录所携带的LSN(分片数据中携带的LSN与所属的日志数据中携带的LSN存在映射关系)。在该两种可选方式中,可以通过建立数据对应关系来记录分片数据的LSN与其所属的日志数据的LSN的对应关系,如完全相同,或者存在映射。

管理节点可以基于该数据对应关系,确定全局分片落盘LSN在日志数据中所对应的目标LSN,然后基于目标LSN和连续落盘LSN确定增量日志数据,该增量日志数据对应的LSN为目标LSN到连续落盘LSN之间的LSN。请参考图7和图8,假设分片数据与其所属的日志数据的LSN相同,则目标LSN等于全局分片落盘LSN,为LSN140。连续落盘LSN为LSN720。则增量日志数据对应的LSN为LSN140至LSN720,将LSN140至LSN720所在的事务记录确定为增量日志数据即可。

相应的,存储备份数据的过程包括存储增量日志数据。也即是,对于用于存储该日志数据的至少一个文件,存储该至少一个文件中目标LSN和连续落盘LSN之间的LSN所对应的事务记录。例如,假设前述文件F2为用于存储日志数据的一个文件,目标LSN和连续落盘LSN分别为0xFFFFFFFFF000和0xFFFFFFFFF0FF,则存储的文件F2中的0xFFFFFFFFF000至0xFFFFFFFFF0FF所在的事务记录。

在进行数据恢复时,如图11所示,分析节点可以直接获取增量日志数据301。

由于备份数据的存储过程中,日志数据可能会产生增量数据,如果按照上述第一种情况提供的方式进行备份数据的存储,即截止第三时刻将获取的所有日志数据存储,存储后的数据的结束位置(第三时刻对应位置)与对应的元数据所指示的结束位置(第一时刻至第二时刻之间的时刻对应位置)不一致,并且会额外存储增量数据(即第二时刻到第三时刻之间的增量数据),增加存储介质的负载。按照上述第二种情况和第三种情况提供的方式进行备份数据的存储,可以使得存储后的数据的结束位置与对应的元数据所指示的结束位置一致,避免额外存储增量数据,减少存储介质的负载。进一步的,按照前述第三种情况进行提供的方式进行备份数据的存储,还可以避免额外存储第一时刻之前的日志数据,进一步减少存储介质的负载。

在前述三种情况的基础上,备份数据还可以包括第三时刻获取的分片数据。或者,备份数据还可以包括多个第一元数据分别对应的多个分片数据。

当备份数据还包括与多个第一元数据分别对应的多个分片数据时,存储备份数据的过程包括存储与多个第一元数据分别对应的多个分片数据。也即是,对于用于存储每个分片数据的至少一个文件,在第一元数据所指示的结束位置停止该至少一个文件的存储。假设文件F3为用于存储一个分片数据的一个文件,与该分片数据对应的第二元数据包括与该文件F3对应的数据写入信息:LSN:0xFFFFFFFFF0F1,则存储的文件F3中的写入数据的结束位置为LSN:0xFFFFFFFFF0F1所在的事务记录。

由于备份数据的存储过程中,分片数据可能会产生增量数据,如果在第三时刻将获取的所有分片数据存储,存储后的数据的结束位置(第三时刻对应位置)与对应的元数据所指示的结束位置(第一时刻至第二时刻之间的时刻对应位置)不一致,并且会额外存储增量数据(即第二时刻到第三时刻之间的增量数据),增加存储介质的负载。存储与多个第一元数据分别对应的多个分片数据,可以使得存储后的数据的结束位置与对应的元数据所指示的结束位置一致,避免额外存储增量数据,减少存储介质的负载。

在本申请实施例中,数据备份请求用于指示获取该请求下发时刻之前的目标时长内的分片数据,以实现对近期的分片数据的备份。该目标时长大于前述主要备份时长,该目标时长的确定可以有多种方式。在一种可选方式中,该目标时长是预先设置的时长,例如十分钟或一小时等;在另一种可选方式中,该目标时长是携带在数据备份请求中的,其可以由用户指定;在又一种可选方式中,该目标时长可以是前一次数据备份请求的下发时刻到本次数据备份请求的下发时刻之间的时长。本申请实施例对此不做限定。

请参考步骤202,由于管理节点是基于分片关系数据确定日志数据对应的分片关系数据的,因此在恢复分片关系数据时,也需要获取分片关系数据。在一种可选方式中,可以直接存储分片关系数据,以便在数据恢复时使用;在另一种可选方式中,可以存储分片关系规则,以在数据恢复时基于该分片关系规则获取分片关系数据;在再一种可选方式中,分片关系数据具有元数据,也即是分片关系对应的数据包括:分片关系数据和元数据,管理节点可以存储该元数据,以便在数据恢复时基于该元数据获取分片关系数据。其中,元数据用于描述该分片关系数据。通过该元数据可以确定分片关系数据中记录的对应关系的位置。例如该分片关系数据以表的形成存储,则元数据用于记录分片列表中的每个项目的位置。为了便于标识,本申请实施例将分片关系数据的元数据称为第三元数据。

与前述日志数据和分片数据的存储方式同理,在分片关系数据落盘后,一个(或称一份)分片关系数据存储在至少一个文件中。本申请实施例中,分片关系数据的第三元数据可以包括:至少一个文件中每个文件的数据写入信息,该至少一个文件用于存储分片关系数据。也即是,存储分片关系数据的每个文件包括两部分:一部分用于存储分片关系数据,另一部分用于存储数据写入信息。其中,每个文件中可以设置固定大小的指定位置,用于存储数据写入信息。示例的,该指定位置可以为该文件的文件头或者文件尾。数据写入信息用于描述该文件中的分片关系数据的写入情况,例如,该数据写入信息用于记录对应的文件在至少一个文件中的位置,以及该对应的文件中的写入数据(即写入的分片关系数据)的结束位置。通过此种第三元数据可以有效标识各个文件的位置,从而在数据恢复时,实现文件的依次连续获取,保证文件的连续性,从而恢复得到有效的分片关系数据。

在本申请实施例中,对于分片关系数据对应的至少一个文件中任一文件,该任一文件的数据写入信息包括:该任一文件中的写入数据的偏移量(offset),以此来标识写入数据的结束位置。该偏移量也称有效地址或段内偏移,指的是存储单元的结束地址与起始地址的差值。

可选的,该分片关系数据对应的任一文件的数据写入信息还包括:该任一文件的文件位置标识。该文件位置标识用于标识该任一文件在至少一个文件中的位置。该文件位置标识的结构可以参考前述日志数据对应的文件位置标识的结构。

本申请实施例,以存储该第三元数据为例进行说明,则在前述步骤203中获取所有第二元数据之后,前述数据备份方法还包括:获取分片关系数据的第三元数据,该分片关系数据用于记录日志数据的子数据与分片的对应关系。其定义可以参考前述步骤202中相关内容。

可选的,管理节点可以采用快照技术获取第三元数据,如此能有效加快获取第三元数据的速度,提高备份效率。

值得说明的是,在数据备份方法的第一种实现方式中,前述第一指示信息和第二指示信息还可以通过其他方式获取。例如,第一指示信息可以通过获取的第一元数据确定。如此,前述步骤203和步骤204的先后顺序可以颠倒。

在第一种可选方式中,分片数据的每个已落盘的事务记录中均携带对应落盘时刻的时间戳,分片数据的第一元数据中均记录获取该元数据时的时间戳(例如在采用快照技术获取第一元数据的快照时,在获取的快照中记录对应时间戳),则获取第一指示信息的过程包括:在获取的所有第一元数据携带的时间戳中,将离当前时刻最远的时间戳(即第一个获取的第一元数据的时间戳)确定为第一指示信息,该第一指示信息能够有效指示获取第一元数据的开始时刻。

在第二种可选方式中,分片数据的每个已落盘的事务记录中均携带对应落盘时刻的全局唯一标识,示例的,该全局唯一标识可以表征时间上,或者空间上的先后顺序。该全局唯一标识按照递增的方式分配。例如,其可以为递增的数字,或依序递增的字母等。分片数据的第一元数据中均记录获取该元数据时的全局唯一标识(例如在采用快照技术获取第一元数据的快照时,在获取的快照中记录对应全局唯一标识),则获取第一指示信息的过程包括:在获取的所有第一元数据携带的全局唯一标识中,将最小的全局唯一标识(即第一个获取的第一元数据的全局唯一标识)确定为第一指示信息,该第一指示信息能够有效指示获取第一元数据的开始时刻。

例如,第二指示信息可以通过获取的第二元数据确定。与前述第一种可选方式对应的,日志数据的每个已落盘的事务记录中均携带对应落盘时刻的时间戳,日志数据的第二元数据中记录获取该元数据时的时间戳(例如在采用快照技术获取第二元数据的快照时,在获取的快照中记录对应时间戳),则获取第二指示信息的过程包括:将第二元数据携带的时间戳确定为第二指示信息,该第二指示信息能够有效指示获取第二元数据的结束时刻。

与前述第二种可选方式对应的,日志数据的每个已落盘的事务记录中均携带对应落盘时刻的全局唯一标识,该全局唯一标识按照递增的方式分配。日志数据的第二元数据中记录获取该元数据时的全局唯一标识(例如在采用快照技术获取第二元数据的快照时,在获取的快照中记录对应全局唯一标识),则获取第二指示信息的过程包括:将第二元数据携带的全局唯一标识确定为第二指示信息,该第二指示信息能够有效指示获取第二元数据的结束时刻。

前述第一指示信息和第二指示信息还可以通过其他方式获取,只要能够有效标识第一时刻和第二时刻即可,本申请实施例对此不再赘述。

需要说明的是,前述步骤201和202中,存储日志数据以及对应的分片数据的动作,是管理节点正常工作时的存储动作,也即是对事物日志的正常记录;前述步骤207中对备份数据的存储动作,是管理节点的备份动作,相应的数据需要存储到指定的备份空间。本申请实施例中,假设管理节点支持以下两种备份功能中的至少一种:

第一种备份功能,云备份功能。相应的,备份空间为云存储(cloud storage)空间。如图12所示,图12是本申请实施例提供的数据备份方法所涉及分布式数据库系统的又一种应用环境的示意图。该应该环境还包括:云存储节点20,该云存储节点上部署有云存储空间,该云存储节点20可以为一个或多个服务器。在该应用环境中,前述步骤207的管理节点存储备份数据的过程包括:管理节点将备份数据上传至云存储节点的云存储空间中。管理节点在获取备份数据后,可以直接将获取的备份数据导出并上传,无需再占用额外的存储空间。对数据存储节点的影响较小。

第二种备份功能,本地备份功能。相应的,备份空间为本地存储空间,请参考图3,该本地存储空间部署在数据存储节点中。在该应用环境中,前述步骤207的管理节点存储备份数据的过程包括:管理节点将备份数据存储至数据存储节点的本地存储空间中。

需要说明的是,数据存储节点通常存储有日志数据的多个副本,以及分片数据的多个副本。同一个数据的所有副本的内容相同。因此,为了减少备份数据的数据量,尤其在云备份时,减少上传备份数据的网络开销,同一个数据通常仅需备份一次,也即是只备份一个副本,该副本是在该数据对应的多个副本中确定的,例如随机选择得到的。如图12所示,在进行云存储时,管理节点仅上传了日志数据副本1、分片数据1的副本1、分片数据2的副本1以及分片数据3的副本1。

图13是本申请实施例提供的一种数据备份方法的时间轴示意图。本申请实施例结合图12和图13对数据备份流程进行说明,假设采用快照技术获取第一元数据、第二元数据和第三元数据,为了便于说明,本申请实施例将第一元数据的快照称为第一快照,将第二元数据的快照称为第二快照,将第三元数据的快照称为第三快照。请参考图12和图13,在管理节点接收到日志备份请求后备份开始,管理节点在获取全局分片落盘LSN后,获取多个第一快照、第二快照和第三快照,然后获取连续落盘LSN,之后上传备份数据,该备份数据包括多个第一快照、第二快照和第三快照,以及与多个第一快照、第二快照和第三快照对应的分片数据、日志数据和分片关系数据。在完成数据上传后备份结束。其中,从获取全局分片落盘LSN(标识第一时刻)到获取连续落盘LSN(标识第二时刻)之间的时段为目标备份时段,获取所有第一快照的时段为分片数据的元数据备份时段,目标备份时段包括该分片数据的元数据备份时段。

由于获取了全局分片落盘LSN和连续落盘LSN,可以确定目标备份时段,基于从而确定日志数据在该目标备份时段的增量日志数据,基于该增量日志数据可以确定该目标备份时段的增量分片数据。当按照前述第三种情况进行提供的方式进行备份数据的存储,可以仅存储目标备份时段的增量日志数据,该目标备份时段的时长通常仅几分钟,因此增量日志数据的数据量较小,有效减少存储介质的负载。若采用云存储的方式进行数据备份,可以减少上传备份数据的网络开销。

传统数据库中的数据备份方法,在日志备份请求下发后,将所有日志数据备份完成的时刻作为备份完成时刻,而当日志数据量较大时,该备份完成时刻与日志备份请求的下发时刻相距较远。若该备份过程对用户可视,则对用户而言,需要等待很久才能看到数据备份完成的提示信息,用户体验较差。

本申请实施例中,日志备份请求要求备份结束时刻尽量接近日志备份请求的下发时刻,从而避免过长的时延。在前述存储备份数据的过程中,备份数据中的数据可以并行保存。也即是在每获取一份数据后,即将该数据保存。由于第一元数据至第三元数据的数据量较小,因此可以实现元数据的快速获取和保存。由于在第二时刻之前,第一元数据至第三元数据均已获取并保存。而确定了第一时刻,第二时刻以及第一元数据至第三元数据,即可在后续获取备份数据中的其他数据(如日志数据和分片数据)后,至少恢复第二时刻之前的分片数据。因此,虽然第二时刻后,备份数据中的其他数据陆续备份存储,但是用户可感知的能够保证数据一致性的结束时刻为第二时刻,因此第二时刻可以视为备份结束时刻。该备份结束时刻与日志备份请求的下发时刻非常接近,有效满足了目前的备份需求。并且,当采用快照技术获取第一元数据至第三元数据时,对第一快照至第三快照的备份存储可以在分钟级甚至秒级的时间级内完成,进一步缩短了第二时刻与日志备份请求的下发时刻的时延,提高数据备份的时效性。如此,管理节点可以在获取了第一元数据至第三元数据后,发出数据备份完成的提示信息,用户可以感知到备份快速完成,提高用户体验。

由于备份数据中的其他数据的数据量较大,可以在一些空闲时段进行其他数据的备份存储,从而减少对业务的影响。

本申请实施例通过分别获取多个分片数据中每个分片数据的第一元数据、分片关系数据的第二元数据,能够基于获取的元数据有效恢复第一时刻至第二时刻之间的增量分片数据。在无需加数据锁的前提下,确定增量分片数据,从而保证备份数据的业务一致性,实现分布式数据库中的有效数据备份,且不影响数据库业务。

与前述数据备份方法的第一种实现方式对应的,本申请实施例还提供一种数据恢复方法,该方法可以应用于如图2、图3或图12所示的应用环境,该数据备份方法的全部或部分可以由前述管理节点执行。可选的,如图14所示,图14是本申请实施例提供的数据备份方法所涉及分布式数据库系统的又一种应用环境的示意图。管理节点101还可以包括:恢复子节点1014,恢复子节点1014是恢复流程的调度者,用于通过虚拟路由1013,发送恢复流程中的各个请求(或指令)到DDBS中的各个数据节点,以将日志数据和分片数据进行恢复,该请求可以包括后续实施例涉及的日志恢复请求。该数据备份方法可以由该恢复子节点执行。

如图15所示,该数据恢复方法包括:

步骤401、管理节点获取已存储的备份数据,该备份数据包括:第一元数据、多个第一元数据和第二元数据。

管理节点在接收到日志恢复请求后,获取已存储的备份数据,以确定第一时刻至第二时刻之间的增量分片数据。在备份数据中,每个第一元数据为一个分片数据的元数据,多个第一元数据对应的多个分片数据为日志数据的分片数据。其中,由前述数据备份方法可知,第一时刻为存储备份数据前开始获取第一元数据的时刻,第二时刻为存储备份数据前结束获取第二元数据的时刻。

管理节点可以在用于存储备份数据的指定的备份空间获取备份数据。与前述步骤407对应的,由于管理节点在支持不同的备份功能时,备份数据存储在不同备份空间,本申请实施例分别以管理节点支持以下一种备份功能为例,对获取备份数据的方式进行说明:

第一种备份功能,云备份功能。相应的,备份空间为云存储空间。如图12所示,在该应用环境中,前述步骤401的管理节点获取已存储的备份数据的过程包括:管理节点从云存储节点的云存储空间中下载备份数据。

第二种备份功能,本地备份功能。相应的,备份空间为本地存储空间,请参考图3,该本地存储空间部署在数据存储节点中。在该应用环境中,前述步骤401的管理节点获取已存储的备份数据的过程包括:管理节点从数据存储节点的本地存储空间中读取备份数据。

管理节点可以设置一恢复空间,用于存储恢复得到的数据。后续步骤中的存储动作,均是管理节点的恢复动作,即向恢复空间写入数据的动作。

步骤402、管理节点基于备份数据,恢复第一时刻至第二时刻之间的增量分片数据。

可选的,管理节点基于备份数据,恢复第一时刻至第二时刻之间的增量分片数据的过程,可以包括以下步骤:

步骤A1、管理节点恢复日志数据中第一时刻至第二时刻之间产生的增量日志数据。

可选的,管理节点恢复日志数据中第一时刻至第二时刻之间产生的增量日志数据的过程包括:

步骤A11、管理节点获取日志数据中第一时刻至第二时刻之间产生的增量日志数据。

与前述数据备份方法的步骤207对应的,备份数据中还可以包括日志数据,该备份数据包括的日志数据包括目标备份时段的增量日志数据。本申请实施例以以下几种情况为例进行说明:

第一种情况,备份数据还包括截至第三时刻获取的日志数据(即上传时刻获取的日志数据)、第一指示信息和第二指示信息。该第三时刻为第二时刻之后的指定时刻,例如该第三时刻为距第二时刻指定时长的时刻,又例如该第三时刻为可获取的所有日志数据全部被存储的时刻(例如备份数据需要被存储在云存储空间,该第三时刻即为在数据存储节点本地获取的日志数据全部被上传的时刻)。第一指示信息用于指示第一时刻,第二指示信息用于指示第二时刻。在进行数据恢复时,如图9所示,可以基于第一指示信息和第二指示信息指示的第一时刻以及第二时刻,在第三时刻获取的日志数据30a中确定目标备份时段对应的日志数据301(图中阴影部分)。

在第一种可选示例中,假设该第一指示信息为全局分片落盘LSN,第二指示信息为连续落盘LSN。其中全局分片落盘LSN与连续落盘LSN的解释可以参考前述步骤404相应的解释,本申请实施例对此不再赘述。请参考前述数据备份方法的步骤207的第三种情况中增量日志数据的获取过程。管理节点可以基于获取的数据对应关系,确定全局分片落盘LSN在日志数据中所对应的目标LSN,然后基于目标LSN和连续落盘LSN确定增量日志数据,该增量日志数据对应的LSN为目标LSN到连续落盘LSN之间的LSN。具体过程可以参考前述数据备份方法的步骤207的第三种情况中的内容,本申请实施例对此不做赘述。

在第二种可选示例中,该第一指示信息和第二指示信息可以是时间戳,例如原子钟时间戳。管理节点可以基于第一指示信息中的时间戳(表征第一时刻)和第二指示信息中的时间戳(表征第二时刻)确定目标时间段(即两个时间戳之间的差值),然后基于备份数据中的日志数据中的时间戳,在备份数据中的日志数据中确定第一时刻和第二时刻之间的增量日志数据,该增量日志数据中的时间戳属于目标时间段。

在第三种可选示例中,该第一指示信息和第二指示信息可以是全局唯一标识。示例的,该全局唯一标识可以表征时间上,或者空间上的先后顺序。该全局唯一标识按照递增的方式分配。例如,其可以为递增的数字,或依序递增的字母等。管理节点可以基于第一指示信息中的全局唯一标识(表征第一时刻)和第二指示信息中的全局唯一标识(表征第二时刻)确定目标变量范围(即以两个全局唯一标识为端点的范围),然后基于备份数据中的日志数据中的全局唯一标识,在备份数据中的日志数据中确定第一时刻和第二时刻之间的增量日志数据,该增量日志数据中的全局唯一标识属于目标变量范围。

第二种情况,备份数据还包括第二元数据对应的日志数据、第一指示信息和第二指示信息。在进行数据恢复时,如图10所示,可以基于第一指示信息和第二指示信息指示的第一时刻以及第二时刻,在第二元数据获取的日志数据30b中确定目标备份时段对应的日志数据301。

该第二种情况中,增量日志数据的获取方式可以参考前述第一种情况的对应获取方式,本申请实施例不做赘述。

第三种情况,备份数据还包括日志数据中第一时刻至第二时刻之间产生的增量日志数据;在进行数据恢复时,如图11所示,分析节点可以直接获取增量日志数据301。

该三种情况的实现过程可以参考前述步骤207相应的实现过程,本申请实施例对此不再赘述。

步骤A12、管理节点基于第二元数据将增量日志数据写入恢复空间,从而完成增量日志数据的恢复。

第二元数据的结构可以参考前述数据备份方法中步骤204对应的解释,本申请实施例对此不做赘述。通过第二元数据,可以确定用于存储增量日志数据的至少一个日志数据的文件的位置,以及每个文件中的写入数据的结束位置。将增量日志数据按照第二元数据指示的文件排列顺序写入恢复空间,且每个文件中写入数据的结束位置为第二元数据指示的结束位置。如此即可实现增量日志数据的恢复。

通过前述第二元数据,可以将增量日志数据所属的多个文件按照顺序排列,且文件中的数据也保持一致性,从而在保持数据一致性的前提下,实现文件的依序链接,按序存储。

步骤A2、管理节点基于多个第一元数据,恢复多个分片数据。

第一元数据的结构可以参考前述数据备份方法中步骤204对应的解释,本申请实施例对此不做赘述。对于每个第一元数据,通过该第一元数据可以确定用于存储对应分片数据的至少一个日志数据的文件的位置,以及每个文件中的写入数据的结束位置。将对应分片数据按照第一元数据指示的文件排列顺序写入恢复空间,且每个文件中写入数据的结束位置为第一元数据指示的结束位置。如此即可实现对应分片数据的恢复。

步骤A3、管理节点基于恢复的增量日志数据以及分片关系数据,确定第一时刻至第二时刻之间的至少一个增量分片数据。

分片关系数据用于记录日志数据的子数据与分片的对应关系。该分片关系数据的结构可以参考前述步骤202对应的解释。

管理节点获取分片关系数据的方式可以有多种。在一种可选方式中,备份数据包括分片关系数据,管理节点可以直接在该备份数据中获取分片关系数据;在另一种可选方式中,管理节点可以预先存储有分片关系规则,基于该分片关系规则获取分片关系数据;在再一种可选方式中,分片关系数据具有元数据,该分片关系数据的元数据称为第三元数据,备份数据包括该第三元数据,管理节点基于该第三元数据恢复分片关系数据。该第三元数据的结构可以参考前述数据备份方法中第三元数据的结构,本申请实施例不再赘述。

可选的,参考前述步骤202,假设分片关系数据包括第一对应关系和第二对应关系。管理节点可以基于前述分片关系数据将增量日志数据进行分片处理。例如,对于获取的增量日志数据的每个子数据,管理节点可以查询第一对应关系,得到该子数据对应的数据库对象;然后,采用该子数据对应的数据库对象查询该第二对应关系,得到对应的分片,(即确定每个子数据对应的分片,该过程可以视为将每个子数据映射到对应的分片中)。最终,管理节点将对应于同一个分片的子数据确定为一个分片增量日志数据。从而得到至少一个增量分片数据。

步骤A4、管理节点基于分片关系数据和至少一个增量分片数据,更新多个分片数据,更新后的多个分片数据包括至少一个增量分片数据。

由于多个分片数据是由多个第一元数据恢复得到的,而第一元数据是在第一时刻和第二时刻之间的目标备份时段获取的,在该目标备份时段内一些分片数据在其元数据被获取后,又存在新的数据写入。而至少一个增量分片数据是该目标备份时段完整的增量分片数据,其数据量大于或等于所有分片数据在目标备份时段中其对应元数据获取后新增的数据量之和。相应的,该至少一个增量分片数据与已恢复的分片数据存在数据重复的可能性。如图16所示,假设基于第二元数据以及分片关系数据恢复得到的两个分片数据,分别为分片数据1和分片数据2,分片数据1与第四时刻获取的第二元数据对应,分片数据2与第五时刻获取的第二元数据对应,则与分片数据1对应的增量分片数据(两者存储在同一分片中)为图16中数据502,与分片数据2对应的增量分片数据(两者存储在同一分片中)为图16中数据503。而基于增量日志数据获取的至少一个增量分片数据为图16中的数据501,其包括目标备份时段中与分片数据1对应的数据,以及目标备份时段中与分片数据2对应的数据。由图16可知,数据501减去数据502,再减去数据503,得到的差值数据是会产生重复写入问题的数据。

可选的,本申请实施例中的增量分片数据的更新过程支持幂等特性。该更新过程包括:

步骤A41、对于每个增量分片数据,检测对应的目标分片存储的数据是否存在与该增量分片数据相同的数据。

目标分片是基于分片关系数据确定的该增量日志数据所需写入的分片。示例的,分析设备可以通过比较目标分片存储的数据中事务记录的LSN与增量分片数据的事务记录的LSN。若存在LSN相同的事务记录,将LSN相同的事务记录确定为相同的数据;若不存在LSN相同的事务记录,确定目标分片存储的数据不存在与该增量分片数据相同的数据。

步骤A42、当对应的目标分片存储的数据均与增量分片数据不同时,将增量分片数据写入对应的目标分片。

当对应的目标分片存储的数据均与增量分片数据不同时,说明目标分片存储的数据均与增量分片数据不存在重复的数据,则可以将增量分片数据写入对应的目标分片中。

步骤A43、当对应的目标分片存储有与增量分片数据相同的数据时,禁止写入增量分片数据,或者,采用增量分片数据覆盖对应的目标分片中与增量分片数据相同的数据,目标分片为基于分片关系数据确定的增量分片数据对应的分片。

当对应的目标分片存储的数据均与增量分片数据不同时,说明目标分片存储的数据均与增量分片数据存在重复的数据,采用上述两种方式,可以避免最终存储的分片数据中存在重复的数据,减少冗余数据对存储空间的占用,实现幂等特性。

本申请实施例通过在备份数据中携带多个分片数据的第一元数据、日志数据的第二元数据,能够基于获取的备份数据有效恢复第一时刻至第二时刻之间的增量分片数据。在无需加数据锁的前提下,确定增量分片数据,从而保证备份数据的业务一致性,实现分布式数据库中的有效数据备份,且不影响数据库业务。

在第二种实现方式中,用于指示第一时刻和第二时刻指示信息在数据恢复阶段确定。如图17所示,数据备份方法包括:

步骤601、管理节点存储日志数据。

步骤602、管理节点存储与日志数据对应的分片数据。

步骤603、管理节点获取多个分片数据中每个分片数据的第一元数据。

步骤604、管理节点获日志数据的第二元数据。

步骤605、管理节点存储备份数据,该备份数据包括:多个第一元数据和第二元数据。

其中,备份数据不包括第一指示信息和第二指示信息。

前述步骤601至步骤605的过程可以分别对应参考前述第一种实现方式中的步骤201、步骤202、步骤204、步骤205和步骤207。本申请实施例对此不做赘述。

本申请实施例通过分别获取多个分片数据中每个分片数据的第一元数据、分片关系数据的第二元数据,能够基于获取的元数据有效恢复第一时刻至第二时刻之间的增量分片数据。在无需加数据锁的前提下,确定增量分片数据,从而保证备份数据的业务一致性,实现分布式数据库中的有效数据备份,且不影响数据库业务。

与前述数据备份方法的第二种实现方式对应的,本申请实施例还提供一种数据恢复方法,该方法可以应用于如图2、图3、图12或图14所示的应用环境,该数据备份方法的全部或部分可以由前述管理节点执行,例如由图14中的恢复子节点执行。如图18所示,该数据恢复方法包括:

步骤701、管理节点获取已存储的备份数据,该备份数据包括:第一元数据、多个第一元数据和第二元数据。

步骤702、管理节点获取第一指示信息,该第一指示信息用于指示第一时刻。

管理节点可以通过获取的第一元数据确定第一指示信息。该过程可以参考前述数据备份方法的第一种实现方式中,通过获取的第一元数据确定第一指示信息的过程,本申请实施例对此不做赘述。

步骤703、管理节点获取第二指示信息,该第二指示信息用于指示第二时刻。

管理节点可以通过获取的第二元数据确定第二指示信息。该过程可以参考前述数据备份方法的第一种实现方式中,通过获取的第二元数据确定第二指示信息的过程,本申请实施例对此不做赘述。

步骤704、管理节点基于第一指示信息、第二指示信息和备份数据,恢复第一时刻至第二时刻之间的增量分片数据。

前述步骤701和步骤704的过程可以分别对应参考前述第一种实现方式中的步骤401、步骤402。本申请实施例对此不做赘述。

本申请实施例通过在备份数据中携带多个分片数据的第一元数据、日志数据的第二元数据,能够基于获取的备份数据有效恢复第一时刻至第二时刻之间的增量分片数据。在无需加数据锁的前提下,确定增量分片数据,从而保证备份数据的业务一致性,实现分布式数据库中的有效数据备份,且不影响数据库业务。

需要说明的是,本申请实施例提供的数据备份方法和数据恢复方法的步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。

本申请实施例提供一种数据备份装置80,如图19所示,该装置包括:

第一获取模块801,用于获取多个分片数据中每个分片数据的第一元数据,该多个分片数据是对日志数据进行分片处理得到的数据;第二获取模块802,用于获取该日志数据的第二元数据;存储模块803,用于存储备份数据,该备份数据包括多个该第一元数据和该第二元数据,该备份数据用于恢复第一时刻至第二时刻之间的增量分片数据,该第一时刻为开始获取该第一元数据的时刻,该第二时刻为结束获取该第二元数据的时刻。

综上该,本申请实施例通过在备份数据中携带多个分片数据的第一元数据、日志数据的第二元数据,能够基于获取的备份数据有效恢复第一时刻至第二时刻之间的增量分片数据。在无需加数据锁的前提下,确定增量分片数据,从而保证备份数据的业务一致性,实现分布式数据库中的有效数据备份,且不影响数据库业务。

可选的,该备份数据还包括该第二元数据对应的日志数据、第一指示信息和第二指示信息,该第一指示信息用于指示该第一时刻,该第二指示信息用于指示该第二时刻。

可选的,该备份数据还包括该日志数据中该第一时刻至该第二时刻之间产生的增量日志数据;如图20所示,该装置80还包括:

确定模块804,用于基于第一指示信息和第二指示信息,在该日志数据中确定该第一时刻至该第二时刻之间产生的增量日志数据,其中,该第一指示信息用于指示该第一时刻,该第二指示信息用于指示该第二时刻。

可选的,该第一指示信息包括:该第一时刻的全局分片落盘LSN,该全局分片落盘LSN为对应时刻已全局连续落盘的分片数据对应的LSN中最大的LSN;该第二指示信息包括:该第二时刻的连续落盘LSN,该连续落盘LSN为对应时刻已连续落盘的日志数据对应的LSN中最大的LSN。

可选的,该备份数据还包括分片关系数据的第三元数据,该分片关系数据用于记录日志数据中的子数据与分片的对应关系。

可选的,该备份数据还包括:与多个该第一元数据分别对应的该多个分片数据,以及与该第三元数据对应的该分片关系数据。

可选的,该日志数据和该分片数据中任一数据的元数据包括:至少一个文件中每个文件的数据写入信息,该至少一个文件用于存储该任一数据;任一文件的数据写入信息用于记录该任一文件在该至少一个文件中的位置,以及该任一文件中的写入数据的结束位置。

可选的,该任一文件的数据写入信息包括:该任一文件中的写入数据中携带的最大日志序列号LSN,以及该任一文件的文件位置标识。

本申请实施例提供一种数据恢复装置90,如图21所示,该装置包括:

获取模块901,用于获取已存储的备份数据,该备份数据包括多个第一元数据和第二元数据,每个该第一元数据为一个分片数据的元数据,该多个第一元数据对应的多个分片数据为该日志数据的分片数据;第一恢复模块902,用于基于该备份数据,恢复第一时刻至第二时刻之间的增量分片数据;其中,该第一时刻为存储该备份数据前开始获取该第一元数据的时刻,该第二时刻为存储该备份数据前结束获取该第二元数据的时刻。

综上该,本申请实施例通过在备份数据中携带多个分片数据的第一元数据、日志数据的第二元数据,能够基于获取的备份数据有效恢复第一时刻至第二时刻之间的增量分片数据。在无需加数据锁的前提下,确定增量分片数据,从而保证备份数据的业务一致性,实现分布式数据库中的有效数据备份,且不影响数据库业务。

可选的,该恢复模块902,用于:恢复该日志数据中该第一时刻至该第二时刻之间产生的增量日志数据;基于该多个第一元数据,恢复该多个分片数据;基于恢复的该增量日志数据以及分片关系数据,确定该第一时刻至该第二时刻之间的至少一个增量分片数据,该分片关系数据用于记录日志数据的子数据与分片的对应关系;基于该分片关系数据和该至少一个增量分片数据,更新该多个分片数据,更新后的该多个分片数据包括该至少一个增量分片数据。

可选的,该备份数据还包括该日志数据中该第一时刻至该第二时刻之间产生的增量日志数据;

或者,该备份数据还包括该第二元数据对应的日志数据、第一指示信息和第二指示信息,该第一指示信息用于指示该第一时刻,该第二指示信息用于指示该第二时刻,该恢复该日志数据中该第一时刻至该第二时刻之间产生的增量日志数据,包括:基于该第一指示信息和该第二指示信息,在该第二元数据对应的日志数据中确定的该第一时刻至该第二时刻之间产生的增量日志数据。

可选的,该第一指示信息包括:该第一时刻的全局分片落盘LSN,该全局分片落盘LSN为对应时刻已全局连续落盘的分片数据对应的LSN中最大的LSN;

该第二指示信息包括:该第二时刻的连续落盘LSN,该连续落盘LSN为对应时刻已连续落盘的日志数据对应的LSN中最大的LSN。

可选的,该备份数据还包括分片关系数据的第三元数据,如图22所示,该装置90还包括:第二恢复模块903,用于基于该第三元数据,恢复该分片关系数据。

可选的,该第一恢复模块,用于:对于每个该增量分片数据,当对应的目标分片存储有与该增量分片数据相同的数据时,禁止写入该增量分片数据,或者,采用该增量分片数据覆盖该对应的目标分片中与该增量分片数据相同的数据,该目标分片为基于该分片关系数据确定的该增量分片数据对应的分片。

可选地,图23示意性地提供本申请所述计算机设备的一种可能的基本硬件架构。

参见图23,计算机设备1000包括处理器1001、存储器1002、通信接口1003和总线1004。

计算机设备1000中,处理器1001的数量可以是一个或多个,图23仅示意了其中一个处理器1001。可选地,处理器1001,可以是中央处理器(central processing unit,CPU)。如果计算机设备1000具有多个处理器1001,多个处理器1001的类型可以不同,或者可以相同。可选地,计算机设备1000的多个处理器1001还可以集成为多核处理器。

存储器1002存储计算机指令和数据;存储器1002可以存储实现本申请提供的数据备份方法所需的计算机指令和数据,例如,存储器1002存储用于实现数据备份方法或数据恢复方法的步骤的指令。存储器1002可以是以下存储介质的任一种或任一种组合:非易失性存储器(例如只读存储器(ROM)、固态硬盘(SSD)、硬盘(HDD)、光盘),易失性存储器。

通信接口1003可以是以下器件的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。

通信接口1003用于计算机设备1000与其它计算机设备或者终端进行数据通信。

总线1004可以将处理器1001与存储器1002和通信接口1003连接。这样,通过总线1004,处理器1001可以访问存储器1002,还可以利用通信接口1003与其它计算机设备或者终端进行数据交互。

在本申请中,计算机设备1000执行存储器1002中的计算机指令,使得计算机设备1000实现本申请提供的数据备份方法,或者使得计算机设备1000部署数据备份装置。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由服务器的处理器执行以完成本申请各个实施例所示的数据备份方法或数据恢复方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。

在本申请中,术语“第一”和“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“多个”指两个或两个以上,除非另有明确的限定。A参考B,指的是A与B相同或者A为B的简单变形。

需要说明的是:上述实施例提供的数据备份装置在执行数据备份方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据备份装置与数据备份方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

46页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器装置以及安全开机的存储器管理方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!