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

针对分布式数据库的数据恢复方法和系统与流程

2023-01-15 12:28:05 来源:中国专利 TAG:

针对分布式数据库的数据恢复方法和系统
【技术领域】
1.本技术涉及信息技术领域,特别涉及一种针对分布式数据库的数据恢复方法和系统。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就被认为是现有技术。
3.随着诸如云计算和大数据技术等新一代信息技术在信息化建设中的不断深入使用,业务系统需要随时随地提供即时可用的数据,使整体业务系统的运行和维护更加高效和安全。随着数据量的不断膨胀,分布式数据库的应用逐渐广泛。采用分布式数据库存储数据时,为了保证数据的可靠性会进行数据备份,当分布式数据库发生故障、数据被破坏等异常情况下,利用备份的数据对分布式数据库进行数据恢复。
4.分布式数据库通常包括多个数据节点,通过协调不同的数据节点来执行事务,其中不同数据节点可以处理不同的事务,也可以由多个数据节点来处理同一事务的不同子事务。由于各数据节点的机器时钟不一致、网络延迟、节点负载等原因,会造成各数据节点在恢复时间点处理事务的状态是不一致的,这就会造成恢复的数据无法保证全局一致性。而备份数据的一致性恢复是备份技术的核心问题,也是备份的意义所在。恢复的数据如果无法保证全局一致性,将造成业务数据不可用、不可信等问题,继而引发业务混乱、错误等事故,严重时会造成整个业务崩溃。


技术实现要素:

5.有鉴于此,本技术提供了一种针对分布式数据库的数据恢复方法和系统,以便于实现恢复数据的全局一致性。
6.具体技术方案如下:
7.第一方面,提供了一种针对分布式数据库的数据恢复方法,所述分布式数据库包括多个数据节点,所述方法包括:
8.从所述分布式数据库获取事务信息以及各事务对应的子事务所在数据节点的分布信息,以及,获取并备份所述多个数据节点的子事务日志;
9.依据所述事务信息以及各事务对应的数据节点的分布信息,对同一事务的子事务日志进行整合得到全局事务日志;
10.所述方法还包括:响应于数据恢复指令,确定所述数据恢复指令指定的恢复时间点;
11.获取对所述全局事务日志进行一致性判断的判断结果,基于判断结果对备份的所述多个数据节点的子事务日志进行剪裁处理;
12.基于裁剪处理后的子事务日志,在目标设备上恢复所述分布式数据库中所述多个数据节点在所述恢复时间点的数据。
13.根据本技术实施例中一可实现的方式,所述方法还包括:
14.获取针对代理节点设置的配置信息,所述配置信息包括连接配置信息和安全配置信息;
15.基于所述配置信息,通过所述代理节点从所述分布式数据库中的服务中间件获取事务信息以及各事务对应的数据节点的分布信息。
16.根据本技术实施例中一可实现的方式,所述方法还包括:周期性对所述分布式数据库中所述多个数据节点进行数据备份,并分别针对备份的数据生成副本快照;
17.所述基于裁剪处理后的子事务日志,在目标设备上恢复所述分布式数据库中所述多个数据节点在所述恢复时间点的数据包括:
18.若存在所述恢复时间点对应的副本快照,则将所述恢复时间点对应的副本快照挂载至所述目标设备;
19.否则,确定在所述恢复时间点之前且距离所述恢复时间点最近的副本快照,将确定的副本快照挂载至所述目标设备,按照事务的时间顺序分别在所述目标设备的多个数据节点上从该副本快照对应的时间点重做剪裁处理后的子事务日志,直至所述恢复时间点,其中所述目标设备的多个数据节点与所述分布式数据库的多个数据节点相对应。
20.根据本技术实施例中一可实现的方式,所述周期性对所述分布式数据库中所述多个数据节点进行数据备份,并分别针对备份的数据生成副本快照包括:
21.若本次数据备份为首次备份,则从所述分布式数据库中获取所述多个数据节点的全量数据,将获取的全量数据存储为副本,并针对该副本生成副本快照;
22.若本次数据备份为非首次备份,则从所述分布式数据库中获取本次数据备份相比较上一次数据备份的增量数据,利用获取的增量数据和上一次生成的副本快照合成全量数据,利用合成的全量数据更新存储的副本,并针对该副本生成副本快照。
23.根据本技术实施例中一可实现的方式,在对同一事务的子事务日志进行整合得到全局事务日志之后,所述方法还包括:利用全局事务日志对同一事务的子事务状态进行一致性判断,记录判断结果;
24.所述基于判断结果对备份的所述多个数据节点的子事务日志进行剪裁处理包括:获取所述确定的副本快照对应的时间点至所述恢复时间点之间的子事务日志作为待重做子事务日志;若所述判断结果为同一事务的子事务状态不一致,则在所述待重做子事务日志中剪裁掉所述同一事务对应的各子事务日志。
25.根据本技术实施例中一可实现的方式,获取对所述全局事务日志进行一致性判断的判断结果,基于判断结果对备份的所述多个数据节点的子事务日志进行剪裁处理包括:
26.获取所述确定的副本快照对应的时间点至所述恢复时间点之间的全局事务日志,利用获取的全局事务日志对同一事务的子事务状态进行一致性判断,得到判断结果;获取所述确定的副本快照对应的时间点至所述恢复时间点之间的子事务日志作为待重做子事务日志;若所述判断结果为同一事务的子事务状态不一致,则在所述待重做子事务日志中剪裁掉所述同一事务对应的各子事务日志。
27.根据本技术实施例中一可实现的方式,所述重做剪裁处理后的子事务日志包括:
28.若事务的准备指令在所述恢复时间点之后发出,则丢弃该事务的所有子事务日志;
29.若事务的准备指令在所述恢复时间点之前发出且该事务在所述恢复时间点之后提交,则对事务对应的子事务日志进行回滚处理;
30.否则重做剪裁处理后的子事务日志所指示的操作。
31.第二方面,提供了一种针对分布式数据库的数据恢复系统,所述分布式数据库包括多个数据节点,所述数据恢复系统包括:
32.事务获取单元,被配置为从所述分布式数据库获取事务信息以及各事务对应的子事务所在数据节点的分布信息;
33.备份处理单元,被配置为获取并备份所述多个数据节点的子事务日志;
34.日志整合单元,被配置为依据所述事务信息以及各事务对应的数据节点的分布信息,对同一事务的子事务日志进行整合得到全局事务日志;
35.数据恢复单元,被配置为响应于数据恢复指令,确定所述数据恢复指令指定的恢复时间点;获取对所述全局事务日志进行一致性判断的判断结果,基于判断结果对备份的所述多个数据节点的子事务日志进行剪裁处理;基于裁剪处理后的子事务日志,在目标设备上恢复所述分布式数据库中所述多个数据节点在所述恢复时间点的数据。
36.根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
37.根据第四方面,提供了一种电子设备,其特征在于,包括:
38.一个或多个处理器;以及
39.与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行上述第一方面中任一项所述的方法的步骤。
40.根据本技术提供的具体实施例,本技术公开了以下技术效果:
41.1)本技术在获取并备份分布式数据库中各数据节点的子事务日志后,会对各子事务日志进行整合得到全局事务日志,基于全局事务日志可以进行一致性判断,对备份的子事务日志进行剪裁处理,从而实现各数据节点的子事务日志的全局一致性,进而基于剪裁处理后的子事务日志,更加准确地将分布式数据库中各数据节点的数据恢复至恢复时间点。
42.2)本技术在定位到所述恢复时间点之前且距离所述恢复时间点最近的副本快照后,将副本快照挂载至目标设备,按照事务的时间顺序分别在目标设备上的多个数据节点上重做剪裁处理后的子事务日志,这种方式能够使得数据恢复到任意时间点。另外,也无需在分布式系统进行事务处理时额外打时间戳,降低了对分布式系统的性能影响。
43.3)本技术在进行数据备份方式时,仅需要在首次数据备份时进行全量备份,后续都通过增量备份的方式从分布式数据库获取备份数据,并利用全量数据和增量数据合成全量数据后,针对合成的全量数据生成副本快照,使得备份效率得到了大大提高。
44.4)本技术可以在日志备份的阶段进行日志整合和一致性判断,能够在数据恢复阶段直接利用该判断结果进行子事务日志的剪裁,并基于剪裁处理后的子事务日志快速进行数据恢复。
45.当然,实施本技术的任一产品并不一定需要同时达到以上所述的所有优点。
46.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特
征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
【附图说明】
47.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
48.图1为本技术所适用的系统架构图;
49.图2为本技术实施例提供的数据恢复方法的流程图;
50.图3为本技术实施例提供的数据备份的示意图;
51.图4为本技术实施例提供的一个应用实例的示意图;
52.图5为本技术实施例提供的数据恢复系统的结构示意图;
53.图6为本技术实施例提供的电子设备的结构性框图。
【具体实施方式】
54.为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
55.以下结合附图对本技术的示范性实施例做出说明,其中包括本技术实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本技术的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
56.在本技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
57.取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
58.目前已经存在一些针对分布式数据库来保证数据恢复全局一致性的方式,例如在同一事务的所有子事务均被对应的数据节点提交(commit)后,在日志文件中额外创建一个时间戳,该时间戳保证了在该时间点各数据节点中数据的一致性。但这种方式存在以下缺陷:
59.1)在利用日志文件进行数据恢复时,只能恢复至时间戳对应的时间点,否则无法保证全局一致性。
60.2)在每个事务的所有子事务均被对应的数据节点提交后,都需要在日志文件中创建一个时间戳,这种方式严重影响业务系统的性能。
61.有鉴于此,本技术采用了一种全新的思路,在数据恢复过程中引入基于全局事务日志的一致性判断。为了方便对本技术的理解,首先对本技术所适用的系统进行简单描述。图1为本技术所适用的系统架构图,如图1中所示,该系统架构包括业务系统和数据恢复系
统。
62.业务系统采用分布式数据库实现对业务数据的存储,并为应用层提供数据查询、存储和修改等功能。其中业务系统包括协调节点和多个数据节点,图1中以包括3个数据节点为例。协调节点负责接收来自应用层的读写事务,将事务划分成多个子事务下发给不同的数据节点,由数据节点执行接收到的子事务并进行数据存储。所谓事务可以认为是一组组合成逻辑工作单元的操作。
63.通常在业务系统中采用2pc(two-phase commit,两阶段提交)协议,即将整个事务流程分为两个阶段:准备阶段(prepare phase)和提交阶段(commit phase)。
64.在准备阶段,协调节点给同一事务的各子事务对应的数据节点分别发送prepare(准备)消息,接收到prepare消息的各数据节点分别执行子事务,并写本地的日志。该日志包括undo日志和redo日志。undo日志是记录子事务执行前的数据,用于数据库回滚;redo日志是记录子事务执行后的数据,用于提交事务后将该数据写入数据库的数据文件。
65.在提交阶段,如果协调节点收到了数据节点的执行失败消息或消息超时,则给各数据节点发送rollback(回滚)消息,否则发送commit(提交)消息。由各数据节点执行事务回滚或事务提交。
66.数据恢复系统主要完成两部分功能:数据备份和数据恢复。本技术实施例中,可以采用全量备份、增量备份结合日志备份的形式,例如首次采用全量备份,后续周期性进行增量备份,同时进行日志备份。全量备份又称基础备份,是指对分布式数据库的所有数据进行一个完全拷贝,即对业务系统中各数据节点存储的全量数据进行一个完整性的备份。增量备份是指将各数据节点发生变动的数据进行备份。日志备份是将各数据节点产生的日志文件进行备份。利用全量备份的数据、增量备份的数据和备份的日志文件可以对分布式数据库进行数据恢复,即恢复到某一个历史时间点,以此保证分布式数据库的可靠性。
67.数据恢复系统采用本技术实施例提供的方式针对分布式数据库进行数据恢复,具体内容参见后续实施例中的记载。
68.上述数据恢复系统可以是单一服务器,也可以是多个服务器构成的服务器群组,还可以是云服务器。数据备份系统在进行全量备份、增量备份或日志备份时,可以将数据或日志文件备份至诸如oss(object storage service,对象存储服务)等离线存储介质。
69.应该理解,图1中的业务系统、业务系统中的协调节点和数据节点、数据恢复系统等的数目仅仅是示意性的。根据实现需要,可以具有任意数目的业务系统、业务系统中的协调节点和数据节点、数据恢复系统。
70.图2为本技术实施例提供的针对分布式数据库的数据恢复方法流程图,该方法可以由图1所示系统中的数据恢复系统执行。如图2中所示,该方法可以主要包括以下步骤:
71.步骤202:从分布式数据库获取事务信息以及各事务对应的子事务所在数据节点的分布信息。
72.步骤204:获取并备份分布式数据库中各数据节点的子事务日志。
73.步骤206:依据事务信息以及各事务对应的数据节点的分布信息,对同一事务的子事务日志进行整合得到全局事务日志。
74.本步骤可以在每次获取并备份分布式数据库中各数据节点的子事务日志后均执行。
75.若获取到针对分布式数据库的数据恢复指令,则继续执行以下步骤:
76.步骤208:响应于数据恢复指令,确定该数据恢复指令指定的恢复时间点。
77.步骤210:获取利用全局事务日志进行一致性判断的判断结果,基于判断结果对备份的各数据节点的子事务日志进行剪裁处理。
78.步骤212:基于裁剪处理后的子事务日志,在目标设备上恢复分布式数据库中各数据节点在恢复时间点的数据。
79.由以上流程可以看出,本技术在获取并备份分布式数据库中各数据节点的子事务日志后,会对各子事务日志进行整合得到全局事务日志,基于全局事务日志可以进行一致性判断,对备份的子事务日志进行剪裁处理,从而实现各数据节点的子事务日志的全局一致性,进而基于剪裁处理后的子事务日志,更加准确地将分布式数据库中各数据节点的数据恢复至恢复时间点。
80.下面对上述流程中的各步骤进行详细描述。首先结合实施例对上述步骤202即“从分布式数据库获取事务信息以及各事务对应的子事务所在数据节点的分布信息”进行详细描述。
81.在本技术实施例中可以设置代理(proxy)节点。该代理节点用以从分布式数据库中的服务中间件获取事务信息以及各事务对应的数据节点的分布信息。在分布式数据库中,协调节点负责进行事务的分配,将事务对应的子事务分配到一个或多个子事务节点上执行。同时存在一个服务中间件来记录事务的信息和事务对应的子事务所在数据节点的分布信息,即将事务分配给哪些数据节点来执行各子事务。因此,代理节点就能够从服务中间件来获取事务信息以及各事务对应的子事务所在数据节点的分布信息。其中,事务信息可以包括事务标识。事务标识可以采用全局事务标识符,事务对应的子事务被分配给多个数据节点后,每个子事务也会携带该全局事务标识符,从而能够区分出这些子事务是属于那个事务的。另外,事务信息中还可以包括事务对应的时间信息。每个事务的发生都是存在时间顺序的,因此该时间信息可以作为事务的其中一个属性。当事务对应的子事务分配多个数据节点后,会采用前面描述的2pc过程来执行,各数据节点记录的子事务日志中会存在子事务的状态信息,例如是执行成功了即投递(commit)还是回滚(rollback)了,还会包括子事务的执行时间信息等。
82.作为其中一种可实现的方式,上述代理节点可以设置于协调节点。用户可以通过配置界面针对代理节点设置配置信息,代理节点能够基于配置信息从分布式数据库中的服务中间件获取事务信息以及各事务对应的数据节点的分布信息。
83.其中配置信息可以包括代理节点的连接配置信息,例如代理节点的ip地址信息、端口号、访问用户名、所连接的数据节点的标识、端口号等。配置信息还可以包括安全配置信息,例如ssh(secure shell,安全壳)信息。其中ssh是由ietf的网络小组(network working group)所制定,为建立在应用层基础上的安全协议。ssh是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。ssh信息可以包括ssh用户名、端口、访问密码等信息,以便于为代理节点建立安全连接。
84.更进一步地,上述配置信息还可以包括是否开启全局一致性功能的信息。若开启全局一致性功能,则按照本技术实施例所提供的方式进行数据恢复,代理节点就会从所述分布式数据库获取事务信息以及各事务对应的子事务所在数据节点的分布信息,为后续子
事务日志的整合和一致性判断提供基础。但在一些情况下,例如明知分布式数据库的数据长时间未进行变化,则无需采用本技术实施例所提供的方式进行数据恢复,则可以关闭全局一致性功能。
85.另外,作为其中一种可实现的方式,上述是否开启全局一致性功能的配置可以用于测试。如果后续功能稳定后,可以基础配置该功能的开关,默认开启全局一致性功能。
86.下面结合实施例对上述步骤204即“获取并备份分布式数据库中各数据节点的子事务日志”进行详细描述。
87.本步骤中,可以从分布式数据库中各数据节点获取子事务日志,并进行备份。在进行备份时可以分别针对每一个数据节点的子事务日志进行备份,即区分出子事务日志所在的数据节点信息。
88.关于子事务日志的获取和备份可以是周期性的执行过程。这里周期性所采用的周期可以是固定周期,例如每天获取并备份分布式数据库中各数据节点的子事务日志。也可以采用非固定周期,例如数据变化频繁的时段采用较短周期,数据变化不频繁的时段采用较长周期。另外子事务日志的获取和备份可以是基于特定事件触发执行的,例如基于日志备份指令来触发。还可以是其他机制触发步骤204的执行,在此不做穷举。
89.子事务日志主要记录子事务对应的操作、子事务的状态等信息。其中,子事务的状态可以包括commit状态、rollback状态等。其中commit状态指示数据节点执行该子事务成功,即完成提交。rollback状态指示数据节点执行该子事务失败,即发生了子事务的回滚。
90.下面结合实施例对上述步骤206即“依据事务信息以及各事务对应的数据节点的分布信息,对同一事务的子事务日志进行整合得到全局事务日志”。
91.前面已经描述到,事务信息中可以包括事务的全局事务标识符,子事务日志中也包含有该全局事务标识符,因此可以依据全局事务标识符确定同一事务对应的子事务日志,并且结合各事务对应的数据节点的分布信息可以快速定位到同一事务对应的子事务日志,对同一事务的子事务日志进行整合得到全局事务日志。
92.作为其中一种可实现的方式,在得到全局事务日志后可以对该全局事务日志进行一致性判断,即判断同一事务的子事务状态是否一致,并记录判断结果。这里记录判断结果可以是针对各事务分别打上一致性戳来记录子事务状态一致或者不一致。这种实现方式是在日志备份的阶段进行日志整合和一致性判断,能够在数据恢复阶段直接利用该判断结果进行子事务日志的剪裁,并基于剪裁处理后的子事务日志快速进行数据恢复。
93.下面结合实施例对上述步骤208即“响应于数据恢复指令,确定该数据恢复指令指定的恢复时间点”进行详细描述。
94.上述数据恢复指令的发送可以是基于事件的,例如在分布式系统发生故障等情况下,自动触发数据恢复指令的发送。也可以是由人工触发的,例如在分布式系统发生故障、数据损坏等情况下,由管理人员人工触发数据恢复指令的发送。
95.数据恢复系统接收到该数据恢复指令后,确定该数据恢复指令指定的恢复时间点。所谓恢复时间点指的是要将分布式数据还原到的目标时间点。其中恢复时间点的信息可以携带在数据恢复指令中,例如用户指定恢复时间点。除此之外,也可以基于数据恢复指令采用预设的规则或者是默认的方式确定恢复时间点,例如默认恢复到1天之前,或者默认恢复到1小时之前,等等。
96.在结合实施例对上述步骤210即“获取利用全局事务日志进行一致性判断的判断结果,基于判断结果对备份的各数据节点的子事务日志进行剪裁处理”之前,首先对本技术实施例中采用的“全量 增量”的数据备份机制进行描述。
97.在本技术实施例中,除了对分布式数据库中的日志文件进行备份之外,还会对分布式数据库中各数据节点存储的数据(通常指的是业务数据)进行备份,并分别针对备份的数据生成副本快照。对数据进行备份可以是周期性执行的,同样该周期性可以是固定周期,例如每天获取并备份分布式数据库中各数据节点存储的数据。也可以采用非固定周期,例如数据变化频繁的时段采用较短周期,数据变化不频繁的时段采用较长周期。
98.如果是首次备份,则从分布式数据库中获取各数据节点的全量数据,将获取的全量数据存储为副本,并针对该副本生成副本快照。对于非首次备份,则可以从分布式数据库中获取本次数据备份相比较上一次数据备份的增量数据,利用获取的增量数据和上一次生成的副本快照合成全量数据,利用合成的全量数据更新存储的副本,并针对该副本生成副本快照。
99.举一个例子,如图3中所示。对于第一次数据备份,获取分布式数据库(各数据节点)的全量数据,标识为全量数据1,将获取的全量数据存储为副本,并生成副本快照1。
100.对于第二次数据备份,获取分布式数据库的增量数据2,利用该增量数据与当前副本进行全量数据的合成,然后将得到的全量数据2存储为副本,并生成副本快照2,该副本快照2是全量数据2的快照。
101.对于第三次数据备份,获取分布式数据库的增量数据3,利用该增量数据与当前副本进行全量数据的合成,然后将得到的全量数据3存储为副本,并生成副本快照3,该副本快照3是全量数据3的快照。
102.后续数据备份均为增量数据备份,与第二次数据备份和第三次数据备份的处理类似,依次类推。
103.这种数据备份方式仅需要在首次数据备份时进行全量备份,后续都通过增量备份的方式从分布式数据库获取备份数据,这种备份方式使得备份效率得到了大大提高。
104.需要说明的是,无论是全量数据还是增量数据,均是某一个时间点分布式数据库的数据状态,因此最终形成的副本快照也可以与该时间点相对应,可以记录副本快照对应的该时间点信息。
105.基于上述数据备份机制,在进行数据恢复时,可以首先判断是否存在恢复时间点对应的副本快照,如果是,则直接将恢复时间点对应的副本快照对应挂载(mount)在目标设备的各数据节点上即可。
106.在此需要说明的是,本技术实施例中涉及的目标设备可以是分布式数据库中数据节点原本所在的设备,也可以是分布式数据库之外的备用设备等。举个例子,如果是分布式数据库中数据发生了损坏,则可以将恢复时间点对应的副本快照对应挂载在分布式数据库的各数据节点上即可,即将原有各数据节点的数据恢复至该副本快照的数据状态。如果是分布式数据库发生了设备故障,则数据节点所在的设备无法正常使用,则可以在另外的备用设备上恢复各数据节点的数据状态至副本快照的数据状态,其中备用设备上的数据节点与分布式数据库中的数据节点相对应。
107.如果不存在恢复时间点对应的副本快照,则确定在恢复时间点之前且距离恢复时
间点最近的副本快照,假设该确定的副本快照对应的时间点为ta,恢复时间点为tb。那么可以获取ta至tb之间的所有子事务日志作为待重做子事务日志。
108.之前实施例中已经描述,如果在整合到全局事务日志时进行了一致性判断,则在步骤210中可以直接利用一致性判断的判断结果对待重做子事务日志进行剪裁处理。
109.但也可以采用另外一种实现方式,即在接收到数据恢复指令之后,获取ta至tb之间的全局事务日志,也就是发生在ta至tb之间的事务的全局事务日志,对这部分全局事务日志进行一致性判断,得到判断结果。一致性判断的具体方式参见之前实施例的描述,在此不做赘述。然后利用一致性判断的判断结果对待重做子事务日志进行剪裁处理。这种方式仅需要对ta至tb之间的子事务日志进行剪裁处理,任务量较小。
110.当然除了上述两种方式之外,也可以对所有子事务日志均做剪裁处理,但这种方式相比较上述两种方式而言,效率较低。
111.其中,利用一致性判断的判断结果对待重做子事务日志进行剪裁处理时,如果判断结果为同一事务的子事务状态不一致,则可以在待重做子事务日志中剪裁掉(即丢弃)该同一事务对应的各子事务日志。举个例子,假设事务a在数据节点1上存在子事务a1的日志,在数据节点2上存在子事务a2的日志,在数据节点3上存在子事务a3的日志。其中,子事务a1在数据节点1上执行成功,子事务a2在数据节点2上也执行成功,均为commit状态。但由于一些异常,子事务a3在数据节点3上执行失败,为rollback状态,为了保证数据恢复后各数据节点对同一事务的全局一致性,丢弃该事务a对应的所有子事务日志,即丢弃子事务a1、a2、a3的日志。
112.然后在步骤212中,首先将确定的副本快照(即在恢复时间点之前且距离恢复时间点最近的副本快照)挂载至目标设备的多个数据节点,然后按照事务的时间顺序分别在目标设备的多个数据节点上从该副本快照对应的时间点ta重做剪裁处理后的待重做子事务日志,直至恢复时间点tb。
113.由于待重做子事务日志是基于一致性判断进行剪裁处理后的,能够保证重做后的全局一致性,在ta和tb之间重做剪裁处理后的子事务日志所指示的操作即可。但在执行到恢复时间点附近时,可能存在一些事务的执行是跨恢复时间点tb的,也可能会影响到恢复数据的全局一致性。作为优选的实施方式,可以针对这部分事务执行以下处理:
114.若某事务的prepare指令在恢复时间点tb之后发出,则直接丢弃该事务的所有子事务日志,不进行重做。也就是说,可能有事务的时间是在ta和tb之间的,但协调节点针对该事务向各数据节点发送的prepare指令是在tb之后的,为了保证在tb时刻各数据节点的数据一致性,对于该事务的各子事务日志均不予重做。
115.若某事务的prepare指令在恢复时间点tb之前发出且该事务在恢复时间点tb之后commit,则对该事务对应的子事务日志进行回滚处理。也就是说,可能有事务的时间是在ta和tb之间的,协调节点针对该事务向各数据节点发送的prepare指令是在tb之之前发送的,但可能存在有些数据节点commit该事务的子事务是在tb之后,这种情况就可能是有的数据节点在tb之前执行完了该事务的子事务,有些数据节点在tb之前尚未执行完该事务的子事务。因此在数据恢复时,有些数据节点可能已经重做了该事务的子事务日志,为了保证全局一致性,对于该事物的子事务日志均进行回滚处理。
116.举个实际场景的例子:
117.如图4中所示,假设分布式数据库中存在5个数据节点。本技术实施例的数据恢复系统从设置于协调节点的proxy获取事务信息以及各事务对应的子事务所在数据节点的分布信息。数据恢复系统对该分布式数据库采用以下三种备份方式:
118.全量备份:在首次针对该分布式数据库进行备份时,从分布式数据库中获取各数据节点的全量数据,将全量数据存储为副本,并生成副本快照。
119.增量备份:周期性针对该分布式数据库进行增量备份,利用获取的增量数据和上一次生成的副本快照合成全量数据,利用合成的全量数据更新存储的副本,并针对副本生成副本快照。
120.日志备份:将从分布式数据库获取的各数据节点的子事务日志分别进行存储。
121.在日志备份的过程中,依据事务信息以及各事务信息对应的数据节点的分布式信息,对同一事务的子事务日志进行整合得到全局事务日志。对全局事务日志进行一致性判断,依据判断结果针对各事务打上一致性戳。
122.若分布式数据库发生设备故障,则管理用户可以向数据恢复系统下发数据恢复指令,指定恢复时间点为tb。
123.数据恢复系统确定是否存在tb对应的副本快照,如果存在,则直接将该副本快照挂在至目标设备中的5个数据节点上,目标设备的5个数据节点与分布式数据库中5个数据节点一一对应,分别用以恢复分布式数据库中各数据节点在tb的数据。
124.如果不存在,则确定在tb之前且距离tb最近的副本快照,假设该副本快照对应的时间点为ta,那么获取事务的时间在ta和tb之间(包含ta和tb)的子事务日志作为待重做日志。依据各事务的一致性戳对待重做日志快速进行剪裁处理,剪裁掉子事务状态不一致的子事务日志。将确定出的副本快照挂在至目标设备中的5个数据节点。然后分别在目标设备的5个数据节点上按照事务的时间顺序,分别执行剪裁处理后的待重做子事务日志。例如,目标设备的数据节点1~5分别重做分布式数据库中数据节点1~5对应的检测处理后的待重做子事务日志。
125.以上是对本技术所提供方法进行的详细描述,下面结合实施例对本技术所提供的数据恢复系统进行详细描述。
126.图5为本技术实施例提供的数据恢复系统的结构图,如图5中所示,该数据恢复系统500可以包括:事务获取单元501、备份处理单元502、日志整合单元503和数据恢复单元504,还可以进一步包括一致性判断单元505。其中各组成单元的主要功能如下:
127.事务获取单元501,被配置为从分布式数据库获取事务信息以及各事务对应的子事务所在数据节点的分布信息。
128.备份处理单元502,被配置为获取并备份分布式数据库中各数据节点的子事务日志。
129.日志整合单元503,被配置为依据上述事务信息以及各事务对应的数据节点的分布信息,对同一事务的子事务日志进行整合得到全局事务日志。
130.数据恢复单元504,被配置为响应于数据恢复指令,确定数据恢复指令指定的恢复时间点;获取对全局事务日志进行一致性判断的判断结果,基于判断结果对备份的多个数据节点的子事务日志进行剪裁处理;在目标设备上恢复分布式数据库中多个数据节点在恢复时间点的数据。
131.作为其中一种可实现的方式,上述事务获取单元501可以通过代理节点实现。获取针对代理节点设置的配置信息,所述配置信息包括连接配置信息和安全配置信息;基于配置信息,通过代理节点从分布式数据库中的服务中间件获取事务信息以及各事务对应的数据节点的分布信息。
132.上述备份处理单元502,进一步被配置为周期性对分布式数据库中多个数据节点进行数据备份,并分别针对备份的数据生成副本快照。
133.其中,若本次数据备份为首次备份,则备份处理单元502从分布式数据库中获取上述多个数据节点的全量数据,将获取的全量数据存储为副本,并针对该副本生成副本快照。
134.若本次数据备份为非首次备份,则备份处理单元502从分布式数据库中获取本次数据备份相比较上一次数据备份的增量数据,利用获取的增量数据和上一次生成的副本快照合成全量数据,利用合成的全量数据更新存储的副本,并针对该副本生成副本快照。
135.相应地,若存在恢复时间点对应的副本快照,则数据恢复单元504将恢复时间点对应的副本快照挂载至目标设备;否则,确定在恢复时间点之前且距离恢复时间点最近的副本快照,将确定的副本快照挂载至目标设备,按照事务的时间顺序分别在目标设备的多个数据节点上从该副本快照对应的时间点重做剪裁处理后的子事务日志,直至恢复时间点,其中目标设备的多个数据节点与分布式数据库的多个数据节点相对应。
136.作为其中一种可实现的方式,一致性判断单元505可以在日志整合单元503整合得到全局事务日志之后,利用全局事务日志对同一事务的子事务状态进行一致性判断,记录判断结果。
137.相应地,数据恢复单元504在基于判断结果对备份的上述多个数据节点的子事务日志进行剪裁处理时,可以具体执行:获取确定的副本快照对应的时间点至恢复时间点之间的子事务日志作为待重做子事务日志;若判断结果为同一事务的子事务状态不一致,则在待重做子事务日志中剪裁掉该同一事务对应的各子事务日志。
138.作为另一种可实现的方式,一致性判断单元505可以获取上述确定的副本快照对应的时间点至恢复时间点之间的全局事务日志,利用获取的全局事务日志对同一事务的子事务状态进行一致性判断,得到判断结果。
139.相应地,数据恢复单元504获取上述确定的副本快照对应的时间点至恢复时间点之间的子事务日志作为待重做子事务日志;若判断结果为同一事务的子事务状态不一致,则在待重做子事务日志中剪裁掉该同一事务对应的各子事务日志。
140.作为其中一种可实现的方式,数据恢复单元504在重做剪裁处理后的子事务日志时,可以执行:
141.若事务的准备指令在所述恢复时间点之后发出,则丢弃该事务的所有子事务日志。
142.若事务的准备指令在所述恢复时间点之前发出且该事务在所述恢复时间点之后提交,则对事务对应的子事务日志进行回滚处理。
143.否则重做剪裁处理后的子事务日志所指示的操作。
144.本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
145.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种
计算机程序产品。
146.如图6所示,是根据本公开实施例的数据恢复方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
147.如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(rom)602中的计算机程序或者从存储单元608加载到随机访问存储器(ram)603中的计算机程序,来执行各种适当的动作和处理。在ram 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、rom 602以及ram 603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
148.设备600中的多个部件连接至i/o接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
149.计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如获取数据库增量数据的方法。例如,在一些实施例中,获取数据库增量数据的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。
150.在一些实施例中,计算机程序的部分或者全部可以经由rom 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到ram 603并由计算单元601执行时,可以执行上文描述的获取数据库增量数据的方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行获取数据库增量数据的方法。
151.此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
152.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
153.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供
指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
154.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
155.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
156.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决传统物理主机与虚拟专用服务器(vps,ⅵirtual private server)服务中存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
157.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
158.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献