CN114237976A - 一种数据获取方法及装置 - Google Patents
一种数据获取方法及装置 Download PDFInfo
- Publication number
- CN114237976A CN114237976A CN202111290089.6A CN202111290089A CN114237976A CN 114237976 A CN114237976 A CN 114237976A CN 202111290089 A CN202111290089 A CN 202111290089A CN 114237976 A CN114237976 A CN 114237976A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- source
- time point
- recovery
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 93
- 238000011084 recovery Methods 0.000 claims abstract description 185
- 238000012217 deletion Methods 0.000 claims description 9
- 230000037430 deletion Effects 0.000 claims description 9
- 230000014759 maintenance of location Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 230000000717 retained effect Effects 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 4
- 239000002253 acid Substances 0.000 claims 1
- 239000000284 extract Substances 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 239000012634 fragment Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书一个或多个实施例提供一种数据获取方法及装置。目的数据段通过接收恢复源及增量操作记录,得到了源端数据库在指定时间点的状态,再根据确定的数据获取要求,从得到的源端数据库在指定时间点的状态中,提取了特定数据,从而使得目的端数据库获取到了指定时间点源端数据库中的特定数据。这样,通过复杂性不高的方法,实现了特定数据的即时恢复。
Description
技术领域
本说明书一个或多个实施例涉及计算机应用领域,尤其涉及一种数据获取方法及装置。
背景技术
键值存储(key-value)数据库一种以键(key)值(vlaue)对存储数据的数据库,key作为数据标识,用于标识不同的value。有些key-value数据库具有备份和恢复功能,比如远程字典服务(Remote Dictionary Server,Redis)。
恢复功能具体而言,源端Redis可以生成快照文件和增量操作记录,目的端Redis可以在获取源端Redis的快照文件对应的数据库的基础上,接收并执行增量操作记录中,在快照文件生成时间到指定时间点之前的操作命令,得到指定时间点的数据库,并将源端Redis替换为得到的目的端Redis,完成数据库的即时恢复(Point-In-Time-Recovery,PITR)。
相关技术中,PITR一般只支持全量PITR,但是有些情况下,数据库的用户存在只针对特定数据PITR的需求。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据获取方法及装置。
根据本说明书一个或多个实施例的第一方面,提出了一种数据获取方法,用于使目的端数据库获取到指定时间点源端数据库中的特定数据;所述方法包括:
目的端数据库接收恢复源及增量操作记录;所述恢复源为源端数据库的快照文件,所述增量操作记录为:在所述快照文件的生成时间与所述指定时间点之间,针对源端数据库执行过的操作命令,所述恢复源的生成时间早于所述指定时间点;
获取所述恢复源对应的数据库,并在获取完成后,执行所述增量操作记录中的操作命令,得到源端数据库在所述指定时间点的状态;
确定数据获取要求,所述数据获取要求用于表征所述特定数据;
从源端数据库在所述指定时间点的状态的全量数据中,提取与所述数据获取要求相匹配的数据,得到指定时间点源端数据库中的特定数据。
根据本说明书一个或多个实施例的第二方面,提出了一种数据恢复方法,用于恢复得到包含指定时间点源端数据库中特定数据的数据库;所述方法包括:
确定源端数据库和目的端数据库,其中,目的端数据库通过上述数据获取方法得到指定时间点源端数据库中特定数据;
数据库管理端将数据库接口中源端数据库的域名替换为所述目的端数据库的域名。
根据本说明书一个或多个实施例的第三方面,提供一种数据获取装置,应用于目的端数据库,用于使目的端数据库获取到指定时间点源端数据库中的特定数据;所述装置包括:
接收模块,用于接收恢复源及增量操作记录;所述恢复源为源端数据库的快照文件,所述增量操作记录为:在所述快照文件的生成时间与所述指定时间点之间,针对源端数据库执行过的操作命令,所述恢复源的生成时间早于所述指定时间点;
获取模块,用于获取所述恢复源对应的数据库,并在获取完成后,执行所述增量操作记录中的操作命令,得到源端数据库在所述指定时间点的状态;
确定模块,用于确定数据获取要求,所述数据获取要求用于表征所述特定数据;
提取模块,用于从源端数据库在所述指定时间点的状态的全量数据中,提取与所述数据获取要求相匹配的数据,得到指定时间点源端数据库中的特定数据。
根据本说明书一个或多个实施例的第三方面,提供一种数据恢复装置,用于恢复得到包含指定时间点源端数据库中特定数据的数据库;所述装置包括:
数据库确定模块,用于确定源端数据库和目的端数据库,其中,目的端数据库通过上述数据获取方法得到指定时间点源端数据库中特定数据;
域名替换模块,用于数据库管理端将数据库接口中源端数据库的域名替换为所述目的端数据库的域名。
根据本说明书一个或多个实施例的第五方面,提供一种计算机可读存储介质,存储有计算机指令,该指令被处理器执行时实现上述的数据获取方法或数据恢复方法。
根据本说明书一个或多个实施例的第六方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现上述的数据获取方法或数据恢复方法。
根据本说明书一个或多个实施例的第七方面,提供一种计算机程序,该程序被运行时实现上述的数据获取方法或数据恢复方法。
本说明书一个或多个实施例中,目的数据段通过接收恢复源及增量操作记录,得到了源端数据库在指定时间点的状态,再根据确定的数据获取要求,从得到的源端数据库在指定时间点的状态中,提取了特定数据,从而使得目的端数据库获取到了指定时间点源端数据库中的特定数据。这样,通过复杂性不高的方法,实现了特定数据的即时恢复。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本说明书根据一示例性实施例示出的一种数据获取方法的流程图。
图2是本说明书根据一示例性实施例示出的一种数据恢复方法的流程图。
图3A是本说明书根据一具体实施例示出的一种数据恢复方法的流程图。
图3B是本说明书根据一具体实施例示出的另一种数据恢复方法的流程图。
图3C是本说明书根据一具体实施例示出的又一种数据恢复方法的流程图。
图4是本说明书根据一示例性实施例示出的一种数据获取装置的框图。
图5是本说明书根据一示例性实施例示出的一种数据恢复装置的框图。
图6是本说明书根据一示例性实施例示出的一种数据获取装置或数据恢复装置所在计算机设备的一种硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
相关技术中,对于Redis这种Key-Value数据的PITR功能的实现来说,数据恢复组件在接收了用户发送的数据恢复请求后,从源端数据库的备份文件存储地址将所有备份文件下载下来,并提取出目的端数据库需要的恢复源及增量操作记录(对应于数据恢复请求的备份文件),并将提取的恢复源及增量操作记录发送给目的端数据库,以使得目的端数据库得到恢复源对应的数据库,并在该数据库的基础上执行接收的增量操作记录中的操作命令,得到源端数据库在指定时间点的状态。在目的端数据库得到源端数据库在指定时间点的状态后,数据库管理端将目的端数据库替换源端数据库,从而完成数据的PITR。
而对于Redis数据库的PITR而言,一般只支持全量的PITR,即将源端数据库的指定时间点所有数据都进行恢复。而有些情况下,数据库用户存在只PITR特定数据的需求,比如对于游戏厂商而言,key一般代表不同的用户,value代表不同用户的数据,在某些区域的数据或者某些有些的数据损坏的情况下,游戏厂商存在只对特定数据进行PITR的需求。
为了更为简单的实现特定数据的PITR,考虑到数据恢复组件会将备份文件进行扫描并发送给目的端数据库,所以考虑通过数据恢复组件进行过滤,只将和特定数据有关的备份文件发送给目的端数据库,从而实现特定数据的PITR。具体而言,发送快照文件和增量操作记录时提取出快照文件中的特定键值对,并将该键值对以操作命令的形式发送给目的端Redis,以使得目的端Redis执行该操作命令得到特定键值对;并抽取出增量操作记录中包括特定键值对的操作命令发送给目的端Redis,以使目的端Redis可以执行接收的操作命令,得到只包含指定时间点的特定数据的数据库。
而这种方法在有些情况下反而会使复杂度提高。比如,有些操作命令之间具有依赖关系,仅抽取出包含特定键值对的操作命令,可能并不能恢复得到该键值对,还需要确定操作命令之间的依赖关系,才能得到特定数据,而确定操作命令之间的依赖关系的方法将会比较麻烦,应用该种方法反而不能简单地获取到特定数据。举例而言,第一条语句中给键1赋值,第二条语句中给键2赋值,第三条语句中,给键3赋值为键1和键2对应的值的并集,如果只想恢复键3而不想恢复键1和键2的话,将只会将第三条语句抽取出来发送给目的端Redis,而第三条语句并不包含键1和键2对应的值,导致只执行第三条语句无法确定键3对应的值,无法恢复键3,类似的语句处理求并集的语句,还有求交集的语句、重命名、移动位置的语句等等。而为了得到键3,需要先确定键1键2和键3之间的依赖关系,并且在目的端数据库得到键3后将得到的键1及键2删除,这将增加算法的复杂度,使该方法变得难以实现。
此外,有些操作命令在一条语句中对多个键值对进行赋值或其他操作,且该条语句中的多个键值对,有的是用户想要恢复的,有的并不是用户想要恢复的,如果抽取出该条操作命令,目的数据端将会不仅恢复了用户想要得到的键值对,也会得到一些用户不想要得到的键值对。为了能只恢复想要恢复的键值对,需要将这一条语句拆分成多条语句,但是这增加了整个方法的复杂度。
为了降低数据恢复的复杂度,考虑可以先获取到源端数据库在指定时间点完整的数据,再对获取到的完整的数据进行过滤,从而获取到指定时间点的特定数据。进一步,考虑到一般数据恢复都需要数据恢复组件的参与,可以由数据恢复组件进行过滤,或者由目的端数据库进行过滤,考虑到如果由数据恢复组件进行过滤,数据恢复组件不能执行数据库的操作命令,将会无法实现即时恢复,因此,最终选择了由目的端数据库来获取完整的数据并进行过滤。
基于上述分析,本说明书一个或多个实施例提供了一种数据获取方法,目的数据段通过接收恢复源及增量操作记录,得到了源端数据库在指定时间点的状态,再根据确定的数据获取要求,从得到的源端数据库在指定时间点的状态中,提取了特定数据,从而使得目的端数据库获取到了指定时间点源端数据库中的特定数据。这样,通过复杂性不高的方法,实现了特定数据的即时恢复。同时也解决了上述方法中存在的问题。
接下来将对本说明书提供的一种数据获取方法进行详细说明。
如图1所示,图1是本说明书根据一示例性实施例示出的一种数据获取方。该方法用于使目的端数据库获取到指定时间点源端数据库中的特定数据。该方法包括:
步骤101,目的端数据库接收恢复源及增量操作记录;所述恢复源为源端数据库的快照文件,所述增量操作记录为:在所述快照文件的生成时间与所述指定时间点之间,针对源端数据库执行过的操作命令,所述恢复源的生成时间早于所述指定时间点。
首先需要说明的是,本说明书中所提及的数据恢复,指的是将某个数据库恢复到指定时间点的状态,数据恢复的过程中,需要先获取到指定时间点的数据库,再将获取到的数据库替换当前数据库,从而完成数据恢复,而数据获取指的是,获取到指定时间点的数据库的过程。本说明书的数据恢复和数据获取可以应用于例如Redis等,能生成快照文件和操作记录的key-value数据库中。
其中,快照文件和增量操作记录是数据库的两种备份文件。快照文件指的是对数据库某个时间的数据进行备份的文件,在Redis数据库中,常以RDB文件的形式保存。快照文件一般每隔预设时间生成一次。而操作记录指的是存储数据库所执行过的操作命令的文件,在Redis数据库中,常以AOF文件/BINLOG文件的形式存储。每执行一条操作命令,操作记录中会相应增加一条记录,在一个AOF文件/BINLOG文件的大小达到预设阈值的情况下,将会继续在下一个AOF文件/BINLOG文件中继续存储操作命令。其中,操作记录中,每条操作命令都带有时间戳,用于标识该操作命令被执行的时间。恢复源和增量操作记录是接收的符合条件(步骤101中对于恢复源和增量操作记录的限定)的快照文件和操作记录。
本说明书中所涉及的源端数据库,是需要恢复的数据库,目的端数据库是在恢复过程中,用于存储源端数据库指定时间点的特定数据的数据库,最终需要通过得到的目的端数据库替代源端数据库,完成数据的恢复。其中,之所以需要在目的端数据库存储特定数据,而不再源端数据库上直接完成数据恢复,是因为如果在源端数据库上直接完成数据恢复,这段时间数据库将无法使用,影响用户的正常使用,此外,如果在源端数据库上直接进行数据恢复的过程出现问题,将会既得不到当前的数据库也得不到指定时间点的数据库。因此,选择区别于源端数据库的目的端数据库进行指定数据的获取。
此外,目的端数据库和源端数据库可以均为本地数据库,当然也可以均为云端数据库。源端数据库和目的端数据库为两个数据库实例。
对于步骤101而言,接收的恢复源及增量操作记录可以是源端数据库直接发送过来的,换言之,源端数据库在接收到用户的数据获取请求的情况下,根据获取请求中所包含的指定时间点和数据获取要求,先确定在指定时间点之前生成的,距离指定时间点最近的快照文件,将确定的快照文件作为恢复源,再将操作记录中每条操作记录的时间戳与指定时间点,及确定的快照文件的生成时间进行对比,将在指定时间点和快照文件的生成时间之间的操作命令确定为增量操作记录,并根据数据获取请求中所包含的目的端数据库的地址发送给目的端数据库。
其中,数据获取请求可以是根据用户填写的表格生成的配置文件,表格中包含用户想要恢复的源端数据库的标识,源端数据库备份文件的存储地址(当然也可以根据源端数据库的标识,确定源端数据库备份文件的存储地址,而这样获取将不太方便,因此可以选择在数据获取请求中增加源端数据库备份文件的存储地址),目的端数据库的地址,指定时间点及获取要求等信息。
上述过程中需要源端数据库的参与,而源端数据库执行上述操作将可能影响源端数据库的正常运行,因此考虑可以让独立于源端数据库的运行进程的数据恢复组件来确定恢复源和增量操作记录。其中,数据恢复组件可以是源端数据库或目的端数据块的一个子组件,也可以是独立于源端数据库和目的端数据库的组件。
在恢复源和增量操作记录是数据恢复组件确定的情况下,数据恢复组件确定恢复源及增量操作记录的方法,包括:数据恢复组件接收用户发送的数据获取请求,所述数据获取请求包括目的端数据库地址、源端数据库的备份文件存储地址、数据获取要求及指定时间点;从源端数据库的备份文件存储地址,确定生成时间与所述指定时间点最近的恢复源;从源端数据库的备份文件存储地址,确定所述恢复源的生成时间与所述指定时间点之间的增量操作记录。
其中,数据恢复组件确定恢复源和增量操作记录,可以是将指定时间点和目的端数据库的地址发送到源端数据库的备份文件存储地址,让源端数据库的备份文件存储地址的进程确定恢复源及增量操作记录,并将确定的恢复源和增量操作记录发送给目的端数据库。
考虑到上述过程中可能存在一些问题:在源端数据库和目的端数据库均有分片的情况下,如果源端数据库和目的端数据库的分片数量不同,比如源端数据库存在2个分片,目的端数据库存在4个分片,源端数据库的某个备份文件,可能对应于目的端数据库的多个分片,那么该备份文件将会由于不知道该具体发往哪个分片而无法发送。
因此,数据恢复组件确定恢复源和增量操作记录,可以是先从源端数据库备份文件的存储地址将全部备份文件,下载到数据恢复组件的存储设备,并从下载的备份文件中,选取指定时间点前,距离指定时间点最近的快照文件作为恢复源,并边读取操作记录中的每条操作命令,检查该条操作命令的格式是否正确,并在格式正确的情况下,判断该条操作命令的时间戳是否在确定的快照文件的生成时间和指定时间点之间,在是的情况下,将该操作命令发送给目的端数据库。由于这样发送是边读取边发送,使得可以确定每条操作命令的发送目的。
具体而言,在数据恢复组件先下载再确定恢复源和增量操作记录的情况下,所述从源端数据库的备份文件存储地址,确定生成时间与所述指定时间点最近的恢复源;从源端数据库的备份文件存储地址,确定所述恢复源的生成时间与所述指定时间点之间的增量操作记录,包括:从源端数据库的备份文件存储地址下载所有备份文件;从下载的备份文件中确定生成时间与所述指定时间点最近的恢复源,及根据全部增量操作记录中每条操作命令的时间戳,确定所述恢复源的生成时间与所述指定时间点之间的增量操作记录。所述目的端数据库接收恢复源及增量操作记录,包括:目的端数据库接收数据恢复组件发送的恢复源和增量操作记录。
其中,目的端数据库接收的恢复源,可以是接收整个快照文件,也可以是数据恢复组件加载恢复源,并将恢复源中的每条数据,以操作命令(该操作命令被执行后将会得到恢复源中对应的数据)的形式发送给目的端数据库。
步骤103,获取所述恢复源对应的数据库,并在获取完成后,执行所述增量操作记录中的操作命令,得到源端数据库在所述指定时间点的状态。
具体而言,为了实现即时恢复,需要知道源端数据库每个时间点都执行了什么操作命令,这就要求数据恢复组件或者目的端数据库可以获取到带有时间戳的操作记录,此外,由于操作记录很多,如果只发送操作记录,所需要发送的数据量将会很大,这将增加目的数据库的处理压力,降低处理效率。因此为了提高处理效率,在发送时,发送的是恢复源和增量操作记录,在获取到恢复源对应的数据库基础上再执行增量操作记录中的操作命令,将减少目的数据库所需要执行的操作命令的数量,也将提高数据获取的效率。
其中,步骤103中所获取到的述恢复源对应的数据库为源端数据库在指定时间点的全部数据。在此基础上,需要进一步进行筛选,得到源端数据库在指定时间点的特定数据。
获取恢复源对应的数据库,如果目的端数据库是获取到了恢复源文件,可以是加载该恢复源,得到恢复源对应的数据库,如果目的端数据库是接收到了操作命令,可以是执行接收的操作命令,得到恢复源对应的数据库。
步骤105,确定数据获取要求,所述数据获取要求用于表征所述特定数据。
步骤107,从源端数据库在所述指定时间点的状态的全量数据中,提取与所述数据获取要求相匹配的数据,得到指定时间点源端数据库中的特定数据。
接下来将对步骤105和步骤107进行统一说明。
获取要求可以是数据库管理端根据用户的数据获取请求确定并发送给目的端数据库的,也可以是数据恢复组件根据用户的数据获取请求,生成并发送的包含获取要求的获取指令。获取要求表征特定数据,可以通过数据标识的形式来表征,也可以通过正则表达式的形式来表征。其中,在数据库是key-value数据库的情况下,数据标识为key,数据标识对应的数据为value。
在获取要求是数据恢复组件发送的情况下,获取要求可以是删除部分数据,以得到源端数据库在指定时间点的特定数据,也可以是保留特定数据,以得到源端数据库在指定时间点的特定数据。
具体而言,步骤105可以为:接收数据恢复组件发送的数据获取要求,所述数据获取要求包括操作标识,及数据标识;所述操作标识用于表征删除操作。相应的,步骤107可以包括:将源端数据库在所述指定时间点的状态的全量数据中,每个数据标识和数据获取要求中的数据标识进行比较;若该数据标识和数据获取要求中的数据标识相匹配,且数据获取要求中的操作标识表征删除操作,则将该数据标识及对应的数据删除;若该数据标识和数据获取要求中的数据标识不匹配,且数据获取要求中的操作标识表征删除操作,则将该数据标识及对应的数据保留。
此外,步骤105还可以是:接收数据恢复组件发送的数据获取要求,所述数据获取要求包括操作标识,及数据标识;所述操作标识用于表征保留操作。相应的,步骤107可以包括:将源端数据库在所述指定时间点的状态的全量数据中,每个数据标识和数据获取要求中的数据标识进行比较;若该数据标识和数据获取要求中的数据标识相匹配,且数据获取要求中的操作标识表征保留操作,则将该数据标识及对应的数据保留;若该数据标识和数据获取要求中的数据标识不匹配,且数据获取要求中的操作标识表征保留操作,则将该数据标识及对应的数据删除。
其中,具体的保留部分数据或者删除部分数据,可以通过数据恢复组件向目的端数据库发送操作命令实现,其中,操作命令是数据库可以执行的操作命令。该操作命令可以是新增加的操作命令,考虑到新增操作命令将需要对其他操作命令进行适应性修改,因此该操作命令可以是根据已有操作命令改进的操作命令,比如可以根据flushall命令进行改进,得到flushall with pattern/flushall without pattern,其中,pattern为可写入数据标识或者正则表达式的位置,flushall命令原本的含义是清空全部,flushall withpattern表示删除pattern位置对应的数据及数据标识,将其他数据及数据标识保留,flushall without pattern表示保留pattern位置对应的数据集数据标识,将其他数据及数据标识删除。
这样,就得到了源端数据库在指定时间点的特定数据,在此基础上便可以进行数据恢复。当然,获取到特定数据后,也可以不进行数据恢复,只是对特定数据进行处理。
相应的,本说明书还提供一种数据恢复方法,用于基于上述数据获取方法所获取到的目的端数据库,恢复得到包含指定时间点源端数据库中特定数据的数据库。如图2所示,该方法包括以下步骤:
步骤201,确定源端数据库和目的端数据库,目的端数据库通过前述实施例的数据获取方法得到指定时间点源端数据库中特定数据。
步骤202,数据库管理端将数据库接口中源端数据库的域名替换为所述目的端数据库的域名。
通过替换域名的方式,可以在不暂停数据库的使用的情况下,实现数据的恢复。此外,在恢复完成后,可以将目的端数据库和源端数据库都保留,也可以删除源端数据库,保留目的端数据库,具体如何处理源端数据库可以根据用户的需求来决定。
接下来将通过一具体实施例,来对本说明书的数据获取方法及数据恢复方法进行详细说明。
假设用户Y在某云端数据库系统Tair上新建了一个Redis数据库A,在使用了一段时间后,用户Y想将该数据库A恢复到特定时间点的状态,且在恢复过程中不恢复所有数据(键值对),只恢复特定数据(即只针对特定键值对的PITR),那么,将需要通过以下步骤完成数据的恢复:
首先,如图3A所示,数据库管理端将执行以下步骤:
步骤301,数据库管理端根据用户填写的数据恢复表项,生成数据恢复配置文件,数据恢复配置中至少包括:源端数据库标识,源端数据库的备份文件存储地址,目的端数据库地址,指定时间点,操作标识及数据标识。
其中,源端数据库的备份文件存储地址和目的端数据库地址,可以通过IP地址、MAC地址或域名的形式来表征。指定时间点需要精确到数据库的最小时间单位,如果操作标识为空,数据标识默认是需要保留的数据标识,当然也可以通过特定数据标识和操作标识来表示删除特定数据或者保留特定数据。目的端数据库是用户在该云端数据库中拥有的其他Redis数据库实例,如果用户没有其他实例,需要提醒用户新建一个Redis数据库实例以完成数据的恢复。
步骤302,数据库管理端将生成的数据恢复配置文件发送给数据恢复组件redis-shake。
如图3B所示,在redis-shake收到恢复配置文件后,将执行以下步骤,将恢复源及增量操作命令发送给目的端数据库。
步骤311,解析接收到的配置文件,确定本次数据恢复的源端数据库的标识、目的端数据库的地址,源端数据库的备份文件存储地址及恢复的指定时间点。
步骤312,从源端数据库的备份文件存储地址下载源端数据库的所有备份文件。
步骤313,确定并发送恢复源。
其中,恢复源为RDB文件,确定恢复源的方法是,查找备份文件中,在指定时间点之前生成,且生成时间距离指定时间点最近的快照文件,将查找到的快照文件作为恢复源。发送恢复源的过程具体是,将确定的恢复源发送到目的端数据库的地址中。
步骤314,确定并发送增量操作记录。
其中,在恢复源确定后,首先要确定恢复源的生成时间,再根据操作记录文件中每条操作记录的时间戳,判断该条操作命令的执行时间是否在恢复源的生成时间和指定时间点之间,如果判断结果为在这两个时间点之间,则将该操作命令发送给目的端数据库。这些发送给目的端数据库的操作命令即为增量操作记录。
步骤315,判断数据获取配置是否为空,如果不为空,则执行步骤316,如果为空,则结束。
在将增量操作记录发送给目的端数据库后,需要确定用户是否存在只对部分键值对进行PITR的需求,那数据恢复组件就需要根据恢复配置文件,解析其中的数据获取配置是否为空,如果为空,则说明用户不存在对部分键值对进行PITR的需求,则结束流程,如果不为空,则说明用户存在对部分键值对进行PITR的需求。
步骤316,根据恢复配置文件,生成并发送获取指令。
具体而言,恢复配置文件有针对获取要求的获取配置,获取配置不为空的情况下,要向目的端数据库发送获取指令,获取指令中包含数据标识和操作标识。如上所述,获取指令可以为flushall with pattern/flushall without pattern,具体的含义在上文中已经说明了,在此不再赘述。
如图3C所示,在目的端数据库接收到恢复源、增量操作文件及获取指令后,需要完成数据的获取,数据获取包括以下步骤:
步骤321,获取所述恢复源对应的数据库,并在获取完成后,执行所述增量操作记录中的操作命令,得到源端数据库在所述指定时间点的状态。
步骤322,判断获取指令中参数个数是否小于2,小于2则执行步骤323,不小于2则执行步骤324。
获取指令中参数的个数即为该函数的参数个数,可以通过argc或argv等函数得到该操作指令的参数的个数,如果小于2,则证明获取指令是Redis原始的指令flushall,则证明用户没有针对特定键值对的PITR需求。
步骤323,执行flushall指令。
在用户没有针对特定键值对的PITR需求的情况下,则需要执行传统的flushall指令。
步骤324,判断第三个参数是否为withpattern或者withoutpattern,如果不是两者中任意一个,则执行步骤325,如果是两者中任意一个,则执行步骤326。
步骤325,返回语法错误。
由于只在flushall的基础上增加了flushall with pattern和flushall withoutpattern两个函数,如果第三个参数不为上述任意一个,则存在语法错误问题。
步骤326,在参数为withpattern的情况下,标记删除位为1,在参数为withoutpattern的情况下,标记保留位为1。
步骤327,解析pattern,判断pattern中是否存在*的规则,如果存在,则执行步骤328,如果不存在,则执行步骤330。
步骤328,标记allkeys位为1。
正则表达式中,*代表全部的含义。
步骤329,判断删除位或保留位是否为1,在allkeys为1且删除位为1的情况下,则执行步骤323,在allkeys为1且保留位为1的情况下,则结束流程。
步骤330,判断当前键是否和pattern匹配,如果匹配,则执行步骤331,如果不匹配则执行步骤332。
步骤331,在保留位为1的情况下,则不删除该键值对,在删除位为1的情况下,则删除该键值对。
步骤332,在保留位为1的情况下,则删除该键值对,在删除位为1的情况下,则保留该键值对。
步骤333,判断目的端数据库中是否还有未取出的键,如果没有,则结束,如果有,则执行步骤334。
步骤334,取出下一个键。
至此,目的端数据库获取到了源端数据库在指定时间点的特定数据。
此外,如图3A所示,数据库管理端还需要执行以下步骤,完成数据恢复:
步骤303,在目的数据库获取到源端数据库在指定时间点的特定数据的情况下,将数据库接口中,源端数据库的域名替换为目的端数据库的域名。
这样,就完成了数据的恢复。
与前述方法的实施例相对应,本说明书还提供了装置及其所应用的终端的实施例。
如图4所示,图4是本说明书根据一示例性实施例示出的一种数据获取装置的框图,应用于目的端数据库,用于使目的端数据库获取到指定时间点源端数据库中的特定数据;所述装置包括:
接收模块410,用于接收恢复源及增量操作记录;所述恢复源为源端数据库的快照文件,所述增量操作记录为:在所述快照文件的生成时间与所述指定时间点之间,针对源端数据库执行过的操作命令,所述恢复源的生成时间早于所述指定时间点。
获取模块420,用于获取所述恢复源对应的数据库,并在获取完成后,执行所述增量操作记录中的操作命令,得到源端数据库在所述指定时间点的状态。
确定模块430,用于确定数据获取要求,所述数据获取要求用于表征所述特定数据。
提取模块440,用于从源端数据库在所述指定时间点的状态的全量数据中,提取与所述数据获取要求相匹配的数据,得到指定时间点源端数据库中的特定数据。
其中,恢复源及所述增量操作记录为数据恢复组件确定的;数据恢复组件确定恢复源及增量操作记录的方法,包括:数据恢复组件接收用户发送的数据获取请求,所述数据获取请求包括目的端数据库地址、源端数据库的备份文件存储地址、数据获取要求及指定时间点;从源端数据库的备份文件存储地址,确定生成时间与所述指定时间点最近的恢复源;从源端数据库的备份文件存储地址,确定所述恢复源的生成时间与所述指定时间点之间的增量操作记录。
在数据恢复组件确定恢复源及增量操作记录的情况下,从源端数据库的备份文件存储地址,确定生成时间与所述指定时间点最近的恢复源;从源端数据库的备份文件存储地址,确定所述恢复源的生成时间与所述指定时间点之间的增量操作记录,包括:从源端数据库的备份文件存储地址下载所有备份文件;从下载的备份文件中确定生成时间与所述指定时间点最近的恢复源,及根据全部增量操作记录中每条操作命令的时间戳,确定所述恢复源的生成时间与所述指定时间点之间的增量操作记录。接收模块410具体用于:目的端数据库接收数据恢复组件发送的恢复源和增量操作记录。
确定模块430具体用于:接收数据恢复组件发送的数据获取要求,所述数据获取要求包括操作标识,及数据标识;所述操作标识用于表征删除操作。提取模块440具体用于:将源端数据库在所述指定时间点的状态的全量数据中,每个数据标识和数据获取要求中的数据标识进行比较;若该数据标识和数据获取要求中的数据标识相匹配,且数据获取要求中的操作标识表征删除操作,则将该数据标识及对应的数据删除;若该数据标识和数据获取要求中的数据标识不匹配,且数据获取要求中的操作标识表征删除操作,则将该数据标识及对应的数据保留。
此外,确定模块还可以具体用于:接收数据恢复组件发送的数据获取要求,所述数据获取要求包括操作标识,及数据标识;所述操作标识用于表征保留操作。提取模块440具体用于:将源端数据库在所述指定时间点的状态的全量数据中,每个数据标识和数据获取要求中的数据标识进行比较;若该数据标识和数据获取要求中的数据标识相匹配,且数据获取要求中的操作标识表征保留操作,则将该数据标识及对应的数据保留;若该数据标识和数据获取要求中的数据标识不匹配,且数据获取要求中的操作标识表征保留操作,则将该数据标识及对应的数据删除。
此外,如图5所示,图5是本说明书根据一示例性实施例示出的一种数据恢复装置的框图,用于恢复得到包含指定时间点源端数据库中特定数据的数据库;所述装置包括:
数据库确定模块510,用于确定源端数据库和目的端数据库,其中,目的端数据库通过上述数据获取方法得到指定时间点源端数据库中特定数据。
域名替换模块520,用于数据库管理端将数据库接口中源端数据库的域名替换为所述目的端数据库的域名。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
如图6所示,图6示出了实施例数据获取装置或数据恢复装置所在电子设备的一种硬件结构图。该设备可以是目的端数据库,也可以是数据库管理端。该设备可以包括:处理器1010、用于存储处理器可执行指令的存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,处理器通过运行可执行指令以实现上述的数据获取方法或者数据恢复方法。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为引擎配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个引擎(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他引擎。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的引擎,而不必包含图中所示的全部引擎。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的数据获取方法或者数据恢复方法。该计算机程序可以只存储数据获取方法的程序,也可以只存储数据恢复方法的程序。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
此外,本说明书还提供一种计算机程序,该计算机程序被运行时实现上述的数据获取方法或者数据恢复方法。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
Claims (11)
1.一种数据获取方法,用于使目的端数据库获取到指定时间点源端数据库中的特定数据;所述方法包括:
目的端数据库接收恢复源及增量操作记录;所述恢复源为源端数据库的快照文件,所述增量操作记录为:在所述快照文件的生成时间与所述指定时间点之间,针对源端数据库执行过的操作命令,所述恢复源的生成时间早于所述指定时间点;
获取所述恢复源对应的数据库,并在获取完成后,执行所述增量操作记录中的操作命令,得到源端数据库在所述指定时间点的状态;
确定数据获取要求,所述数据获取要求用于表征所述特定数据;
从源端数据库在所述指定时间点的状态的全量数据中,提取与所述数据获取要求相匹配的数据,得到指定时间点源端数据库中的特定数据。
2.根据权利要求1所述方法,所述恢复源及所述增量操作记录为数据恢复组件确定的;数据恢复组件确定恢复源及增量操作记录的方法,包括:
数据恢复组件接收用户发送的数据获取请求,所述数据获取请求包括目的端数据库地址、源端数据库的备份文件存储地址、数据获取要求及指定时间点;
从源端数据库的备份文件存储地址,确定生成时间与所述指定时间点最近的恢复源;
从源端数据库的备份文件存储地址,确定所述恢复源的生成时间与所述指定时间点之间的增量操作记录。
3.根据权利要求2所述方法,
所述从源端数据库的备份文件存储地址,确定生成时间与所述指定时间点最近的恢复源;从源端数据库的备份文件存储地址,确定所述恢复源的生成时间与所述指定时间点之间的增量操作记录,包括:
从源端数据库的备份文件存储地址下载所有备份文件;
从下载的备份文件中确定生成时间与所述指定时间点最近的恢复源,及根据全部增量操作记录中每条操作命令的时间戳,确定所述恢复源的生成时间与所述指定时间点之间的增量操作记录;
所述目的端数据库接收恢复源及增量操作记录,包括:
目的端数据库接收数据恢复组件发送的恢复源和增量操作记录。
4.根据权利要求1所述方法,所述确定数据获取要求,包括:
接收数据恢复组件发送的数据获取要求,所述数据获取要求包括操作标识,及数据标识;所述操作标识用于表征删除操作;
所述从源端数据库在所述指定时间点的状态的全量数据中,提取与所述数据获取要求相匹配的数据,得到指定时间点源端数据库中的特定数据,包括:
将源端数据库在所述指定时间点的状态的全量数据中,每个数据标识和数据获取要求中的数据标识进行比较;
若该数据标识和数据获取要求中的数据标识相匹配,且数据获取要求中的操作标识表征删除操作,则将该数据标识及对应的数据删除;
若该数据标识和数据获取要求中的数据标识不匹配,且数据获取要求中的操作标识表征删除操作,则将该数据标识及对应的数据保留。
5.根据权利要求1所述方法,所述确定数据获取要求,包括:
接收数据恢复组件发送的数据获取要求,所述数据获取要求包括操作标识,及数据标识;所述操作标识用于表征保留操作;
所述从源端数据库在所述指定时间点的状态的全量数据中,提取与所述数据获取要求相匹配的数据,得到指定时间点源端数据库中的特定数据,包括:
将源端数据库在所述指定时间点的状态的全量数据中,每个数据标识和数据获取要求中的数据标识进行比较;
若该数据标识和数据获取要求中的数据标识相匹配,且数据获取要求中的操作标识表征保留操作,则将该数据标识及对应的数据保留;
若该数据标识和数据获取要求中的数据标识不匹配,且数据获取要求中的操作标识表征保留操作,则将该数据标识及对应的数据删除。
6.一种数据恢复方法,应用于数据库管理端,用于恢复得到包含指定时间点源端数据库中特定数据的数据库;所述方法包括:
确定源端数据库和目的端数据库,其中,目的端数据库通过如权利要求1-5中任一项的方法得到指定时间点源端数据库中特定数据;
数据库管理端将数据库接口中源端数据库的域名替换为所述目的端数据库的域名。
7.一种数据获取装置,应用于目的端数据库,用于使目的端数据库获取到指定时间点源端数据库中的特定数据;所述装置包括:
接收模块,用于接收恢复源及增量操作记录;所述恢复源为源端数据库的快照文件,所述增量操作记录为:在所述快照文件的生成时间与所述指定时间点之间,针对源端数据库执行过的操作命令,所述恢复源的生成时间早于所述指定时间点;
获取模块,用于获取所述恢复源对应的数据库,并在获取完成后,执行所述增量操作记录中的操作命令,得到源端数据库在所述指定时间点的状态;
确定模块,用于确定数据获取要求,所述数据获取要求用于表征所述特定数据;
提取模块,用于从源端数据库在所述指定时间点的状态的全量数据中,提取与所述数据获取要求相匹配的数据,得到指定时间点源端数据库中的特定数据。
8.一种数据恢复装置,用于恢复得到包含指定时间点源端数据库中特定数据的数据库;所述装置包括:
数据库确定模块,用于确定源端数据库和目的端数据库,其中,目的端数据库通过如权利要求1-5中任一项的方法得到指定时间点源端数据库中特定数据;
域名替换模块,用于数据库管理端将数据库接口中源端数据库的域名替换为所述目的端数据库的域名。
9.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-6中任一项所述的方法。
10.一种计算机可读存储介质,存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1-6中任一项所述的方法。
11.一种计算机程序,所述计算机程序被运行时实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111290089.6A CN114237976A (zh) | 2021-11-02 | 2021-11-02 | 一种数据获取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111290089.6A CN114237976A (zh) | 2021-11-02 | 2021-11-02 | 一种数据获取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237976A true CN114237976A (zh) | 2022-03-25 |
Family
ID=80743598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111290089.6A Pending CN114237976A (zh) | 2021-11-02 | 2021-11-02 | 一种数据获取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237976A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114543983A (zh) * | 2022-03-29 | 2022-05-27 | 阿里云计算有限公司 | 振动信号的识别方法及装置 |
-
2021
- 2021-11-02 CN CN202111290089.6A patent/CN114237976A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114543983A (zh) * | 2022-03-29 | 2022-05-27 | 阿里云计算有限公司 | 振动信号的识别方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2565109C2 (ru) | Способ и устройство для восстановления резервной базы данных | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
US20120296878A1 (en) | File set consistency verification system, file set consistency verification method, and file set consistency verification program | |
CN111061643B (zh) | Sdk集群的兼容性检测方法、装置、电子设备及存储介质 | |
CN107783766B (zh) | 对应用程序的文件进行清理的方法和装置 | |
CN109558382B (zh) | 文件管理方法、电子装置及计算机可读存储介质 | |
CN111008034A (zh) | 一种补丁生成方法及装置 | |
CN111932207A (zh) | 项目数据处理方法、装置、计算机设备和存储介质 | |
CN112328499A (zh) | 一种测试数据生成方法、装置、设备及介质 | |
CN111538523A (zh) | 差分升级方法、设备及存储介质 | |
US9760470B2 (en) | Device, method, and program analysis of new source code to be added to execution program to check for bug | |
CN112363937A (zh) | 差异覆盖率测试方法、装置、计算机设备和存储介质 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN114237976A (zh) | 一种数据获取方法及装置 | |
US20150347402A1 (en) | System and method for enabling a client system to generate file system operations on a file system data set using a virtual namespace | |
CN115328736A (zh) | 一种探针部署方法、装置、设备和存储介质 | |
CN114816816A (zh) | 崩溃堆栈信息处理方法、装置、设备及存储介质 | |
CN106681914B (zh) | 电视机画面质量调试方法及装置 | |
JP6313987B2 (ja) | ファイル管理プログラム、ファイル管理方法、及びファイル管理システム | |
CN107908441B (zh) | 一种数据库的升级方法及升级装置 | |
CN113342749A (zh) | 文件路径匹配方法、装置、设备及计算机可读存储介质 | |
CN112699129A (zh) | 一种数据处理系统、方法及装置 | |
CN111538651A (zh) | 接口测试方法、装置、服务器及存储介质 | |
CN113127054B (zh) | 一种文件处理方法和相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |