CN114265900A - 一种数据处理方法、装置、电子设备及存储介质 - Google Patents
一种数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114265900A CN114265900A CN202111614639.5A CN202111614639A CN114265900A CN 114265900 A CN114265900 A CN 114265900A CN 202111614639 A CN202111614639 A CN 202111614639A CN 114265900 A CN114265900 A CN 114265900A
- Authority
- CN
- China
- Prior art keywords
- database
- database node
- transaction
- timestamp
- transaction logs
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据处理方法、装置、电子设备及存储介质,应用于数据存取领域,解决了现有异步刷盘存在的数据丢失量大的问题,该方法包括:从至少一个数据库节点提交的多个事务所对应的多个时间戳中,确定目标同步时间戳;根据目标同步时间戳,从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志;将多个事务日志从至少一个数据库节点的内存中同步至至少一个数据库节点的磁盘;在分布式数据库发生异常时,根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志;将多个事务日志恢复至至少一个数据库节点的内存,以使分布式数据库恢复至发生异常之前的状态。
Description
技术领域
本公开涉及数据存取技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
随着大数据时代的到来,数据的使用量成倍增长,对分布式数据库进行数据恢复有着越来越高的要求,且对数据恢复的完整性和恢复点的时间要求也越来越高。其中,对数据库进行数据恢复,是指将数据库从当前所处的状态恢复到之前的某一历史状态。例如,在数据库出现故障后,将数据库中的数据恢复至数据库出现故障前的某一时间点所处的状态。现有技术基于异步刷盘的方法将日志从内存同步至磁盘,一种是定时刷盘方式,每间隔固定时间将日志从内存同步至磁盘,另一种是触发刷盘方式,当内存中日志数量超过预设数量则将内存中的日志同步至磁盘。基于异步刷盘的方式延迟小、数据吞吐量大,但在数据库出现故障时,数据丢失量大,难以恢复至数据库故障前的历史状态。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种数据处理方法、装置、电子设备及存储介质。
第一方面,本公开提供了一种数据处理方法,该方法包括:
从至少一个数据库节点提交的多个事务所对应的多个时间戳中,确定目标同步时间戳,目标同步时间戳为多个时间戳中的最大时间戳;
根据目标同步时间戳,从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志;
将多个事务日志从至少一个数据库节点的内存中同步至至少一个数据库节点的磁盘;
在分布式数据库发生异常时,根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志;
将多个事务日志恢复至至少一个数据库节点的内存,以使分布式数据库恢复至发生异常之前的状态。
可选的,将多个事务日志恢复至至少一个数据库节点的内存,包括:
若多个事务日志中的m个事务日志构成一个全局事务日志,则将全局事务日志恢复至m个事务日志所对应的m个数据库节点的内存。
可选的,将多个事务日志恢复至至少一个数据库节点的内存,包括:
针对多个事务日志中的独立事务日志,将独立事务日志恢复至对应的数据库节点的内存。
可选的,将多个事务日志从至少一个数据库节点的内存中同步至至少一个数据库节点的磁盘,包括:
若多个事务日志中的m个事务日志构成一个全局事务日志,则获取至少一个数据库节点提交的m个事务日志的m个标识信息;
根据m个标识信息判断全局事务日志是否提交完成;
在全局事务日志提交完成的情况下,将全局事务日志同步至m个事务日志所对应的m个数据库节点的磁盘。
可选的,在分布式数据库发生异常时,根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志,包括:
在分布式数据库发生异常时,获取分布式数据库的异常时刻;
根据异常时刻确定目标检查日志的时间戳,目标检查日志的时间戳为异常时刻之前最大的检查日志的时间戳;
根据目标检查日志的时间戳确定目标同步时间戳;
根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志。
可选的,根据异常时刻确定目标检查日志的时间戳之后,还包括:
根据目标检查日志的时间戳,从至少一个数据库节点的磁盘中确定目标检查日志;其中,目标检查日志中包括数据恢复操作语句,数据恢复操作语句用于指示针对检查点文件执行恢复操作;
根据数据恢复操作语句,从至少一个数据库节点对应的磁盘中确定检查点文件;
将检查点文件恢复至至少一个数据库节点对应的内存中。
可选的,方法应用于分布式数据库,分布式数据库中包括多个数据库节点,至少一个数据库节点为多个数据库节点中的数据库节点。
第二方面,本公开提供了一种数据处理装置,该装置包括:
第一选择模块,用于从至少一个数据库节点提交的多个事务所对应的多个时间戳中,确定目标同步时间戳,目标同步时间戳为多个时间戳中的最大时间戳;根据目标同步时间戳,从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志;
同步模块,用于将多个事务日志从至少一个数据库节点的内存中同步至至少一个数据库节点的磁盘;
第二选择模块,用于在分布式数据库发生异常时,根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志;
恢复模块,用于将多个事务日志恢复至至少一个数据库节点的内存,以使分布式数据库恢复至发生异常之前的状态。
可选的,恢复模块,还用于若多个事务日志中的m个事务日志构成一个全局事务日志,则将全局事务日志恢复至m个事务日志所对应的m个数据库节点的内存。
可选的,恢复模块,还用于针对多个事务日志中的独立事务日志,将独立事务日志恢复至对应的数据库节点的内存。
可选的,同步模块,还用于若多个事务日志中的m个事务日志构成一个全局事务日志,则获取至少一个数据库节点提交的m个事务日志的m个标识信息;
根据m个标识信息判断全局事务日志是否提交完成;
在全局事务日志提交完成的情况下,将全局事务日志同步至m个事务日志所对应的m个数据库节点的磁盘。
可选的,第二选择模块,还用于在分布式数据库发生异常时,获取分布式数据库的异常时刻;
根据异常时刻确定目标检查日志的时间戳,目标检查日志的时间戳为异常时刻之前最大的检查日志的时间戳;
根据目标检查日志的时间戳确定目标同步时间戳;
根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志。
可选的,第二选择模块,还用于根据目标检查日志的时间戳,从至少一个数据库节点的磁盘中确定目标检查日志;其中,目标检查日志中包括数据恢复操作语句,数据恢复操作语句用于指示针对检查点文件执行恢复操作;
根据数据恢复操作语句,从至少一个数据库节点对应的磁盘中确定检查点文件;
将检查点文件恢复至至少一个数据库节点对应的内存中。
可选的,该装置应用于分布式数据库,分布式数据库中包括多个数据库节点,至少一个数据库节点为多个数据库节点中的数据库节点。
第三方面,本公开提供一种电子设备,该电子设备包括:处理器,存储器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现如第一方面的数据处理方法。
第四方面,本公开提供一种计算机存储介质,该计算机存储介质包括计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如第一方面的数据处理方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开在分布式数据库中,针对至少一个数据库节点提交的多个事务,可以得到多个事务对应的多个时间戳,首先从多个时间戳中确定最大时间戳作为目标同步时间戳,再根据目标同步时间戳从至少一个数据库节点对应的内存中确定多个事务日志,然后将多个事务日志同步至至少一个数据库节点的磁盘;在分布式数据库发生异常时,根据目标同步时间戳,将至少一个数据库节点提交的事务对应的事务日志从内存同步至磁盘,以使事务日志持久化存储,在分布式数据库异常时,可根据该目标同步时间戳将至少一个数据库节点的磁盘中的事务日志进行恢复,使得分布式数据库中各个数据库以事务为单位进行日志的异步刷盘和恢复,减少数据丢失量,保证各个数据库节点之间数据的一致性,进一步保证了分布式数据库能恢复至异常之前的历史状态。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1A为本公开实施例所述一种数据处理方法的应用场景示意图一;
图1B为本公开实施例所述一种数据处理方法的应用场景示意图二;
图2为本公开实施例所述一种数据处理方法的流程示意图;
图3为本公开实施例所述一种数据处理方法的时间轴示意图;
图4为本公开实施例所述一种数据处理装置的结构图;
图5为本公开实施例所述一种电子设备的结构图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的技术名词进行简单介绍。
分布式数据库(Distributed Data Base,DDB),分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有数据库管理系统(Database Management System,DBMS)的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
时间戳(Timestamp),是字符或编码信息的序列,用于标识何时发生特定事件,通常给出日期和时间,有时精确到几分之一秒。每个事务在产生时,系统会赋予事务唯一的时间戳,越晚开始的事务获得的时间戳越大。
分布式数据库发生异常,业务数据量日益增长导致的数据库瘫痪;或者非法用户访问数据库等情况都会使得数据库处于异常状态。
现有技术基于异步刷盘的方法将日志从内存同步至磁盘,一种是定时刷盘方式,每间隔固定时间将日志从内存同步至磁盘,另一种是触发刷盘方式,当内存中日志数量超过预设数量则将内存中的日志同步至磁盘。基于异步刷盘的方式延迟小、数据吞吐量大,但在数据库出现故障时,数据丢失量大,难以恢复至数据库故障前的历史状态。
需要说明的是,定时刷盘是以日志为单位,而一件事务包括至少一个日志,不以事务为单位导致数据恢复时难以保障分布式数据库的数据一致性。
为解决上述问题,本公开在分布式数据库中,针对至少一个数据库节点提交的多个事务,可以得到多个事务对应的多个时间戳,首先从多个时间戳中确定最大时间戳作为目标同步时间戳,再根据目标同步时间戳从至少一个数据库节点对应的内存中确定多个事务日志,然后将多个事务日志同步至至少一个数据库节点的磁盘;在分布式数据库发生异常时,根据目标同步时间戳,将至少一个数据库节点提交的事务对应的事务日志从内存同步至磁盘,以使事务日志持久化存储,在分布式数据库异常时,可根据该目标同步时间戳将至少一个数据库节点的磁盘中的事务日志进行恢复,使得分布式数据库中各个数据库以事务为单位进行日志的异步刷盘和恢复,减少数据丢失量,保证各个数据库节点之间数据的一致性,进一步保证了分布式数据库能恢复至异常之前的历史状态。
本公开实施例所描述的数据处理方法可应用于数据处理装置或者电子设备,其中,该数据处理装置可以为电子设备中可实现数据处理方法的功能模块和/或功能实体。
上述电子设备可以是分布式数据库的任意一个数据库节点,也可以是在分布式事务数据库中独立于子处理节点设置的进行恢复管理的设备,该设备可以是服务器,也可以是部署在云端的服务器集群。
图1A为本公开提供一种数据处理方法的应用场景示意图,如图1A所示,本公开提供的一种数据处理方法应用于分布式数据库,该分布式系统中包括多个数据库节点,图中以四个数据库节点为例进行示出:数据库节点N1、数据库节点N2、数据库节点N3、数据库节点N4,基于异步刷盘的方式,数据库节点N2、数据库节点N3、数据库节点N4向数据库节点N1提交事务,数据库节点根据多个数据库节点提交的多个事务的时间戳,从中确定最大时间戳作为目标同步时间戳,以再目标同步时间戳对应的时刻开启同步线程将各个数据库节点的事务日志从数据库节点的内存中同步至数据库节点的磁盘中,从而实现事务日志的持久化存储;再分布式数据库发生异常时,数据库节点N1确定目标同步时间戳,然后将各个数据库节点的磁盘中在目标同步时间戳之前的事务日志从各个数据库节点的磁盘中恢复至各个数据库节点的内存中,从而实现以事务为单位进行恢复保证各个数据库节点的数据一致性,使得分布式数据库恢复至发生异常之前的状态。在数据处理过程中,分布式数据库中的多个数据库节点并非均提交事务,至少一个数据库节点为该多个数据库节点中的一部分数据库节点。本公开对数据库节点的个数不做限制。
图1B为本公开提供的一种数据处理方法的应用场景示意图二,如图1B所示,图中的设备包括:设备110数据库节点N2、数据库节点N3、数据库节点N4,其中设备110为分布式事务数据库中独立于子处理节点设置的进行恢复管理的设备,设备110执行如上应用场景一中数据库节点1所执行的操作,本公开在此不做赘述。
图2为本公开提供的一种数据处理方法的流程图,该方法包括:
S202、从至少一个数据库节点提交的多个事务所对应的多个时间戳中,确定目标同步时间戳。
其中,至少一个数据库节点为该多个数据库节点中的数据库节点,例如,分布式数据库中包括四个数据库节点:数据库节点N1、数据库节点N2、数据库节点N3、数据库节点N4,其中,数据库节点N1、数据库节点N2、数据库节点N3提交事务。本公开对分布式中提交事务的该至少一个数据库节点的个数不做具体限定。
其中,针对至少一个数据库节点提交的多个事务,该事务可以是独立事务,也可以是全局事务。“全局事务”是指一个要求访问或更新多个数据库节点上数据的事务,其中对应多个数据节点中的每一个事务为全局子事务;“独立事务”是指一个仅仅访问或更新一个数据库节点上数据的事务。该全局事务是由至少一个数据节点提交的多个全局子事务构成的。
在一些实施例中,至少一个数据库节点提供的多个事务可以全部为独立事务,多个独立事务之间相互独立;或者,至少一个数据库节点提供的多个事务全部为全局子事务,多个全局子事务之间存在关联关系,多个全局子事务组合构成一个完整的全局事务;又或者,至少一个数据库节点提交的多个事务中包括A个独立事务,B个全局子事务,该B个全局子事务构成全局事务。其中,本公开对至少一个数据库节点提交的多个事务的数量不做限制,对构成全局事务的全局子事务的数量不做限制。
其中,目标同步时间戳为多个时间戳中的最大时间戳,最大时间戳是多个时间戳中的最大值,表示至少一个数据库节点提交的事务的时间中最晚的时间。该目标同步时间戳表示进行数据同步的开始时间。
由于现有的异步刷盘方式在数据库节点提交事务之后可以直接返回结果,设置固定时间或者当事务日志达到预设数量时才将事务日志从内存存储至磁盘,所以会导致分布式数据库发生异常时,存在未从内存存储至磁盘的事务日志,而本公开针对至少一个数据库节点提交的事务,根据事务携带的时间戳确定进行同步的对这些事务进行同步的时间作为目标同步时间戳,一方面,以事务为单位保证事务的原子性,原子性是指从分布式数据库看来事务要么作为一个整体被执行,要么根本不执行,即对提交事务的事务日志进行同步,或者不进行同步,使得数据库节点以及分布式数据库中数据保持一致。需要强调的是,同步是指针对一个数据库节点,将事务日志从内存存储至磁盘,存储过程中保证事务日志的完整性。另一方面,确定目标同步时间戳,在数据恢复时,可在保证事务原子性的基础上,减少数据丢矢量。
需要说明的是,本公开可根据数据库节点一次提交的事务确定一个目标同步时间戳,数据库节点可以多次提交事务,相应的,在数据处理过程中,可以确定多个目标同步时间戳,本公开对目标同步时间戳的个数不做限制。
S204、根据目标同步时间戳,从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志。
其中,内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。
在一些实施例中,至少一个数据库节点提交事务并确定目标同步时间戳之后,由于至少一个数据库节点提交的多个事务对应的事务日志存储于至少一个数据库节点对应的内存中,所以需要根据该目标同步时间戳确定数据库节点的内存中事务的时间戳小于目标同步时间戳的事务日志,其中,每个事务日志记录记载有关某个事务已做的事件的某些情况,几个事务的行为可以是交错的,因此可能是一个事务的某个步骤被执行并且其效果被记录到日志中,接着对另一个事务的某个步骤做同样的事情,然后对第一个事务的下一步骤或第三个事务的某个步骤进行记录。
在一些实施例中,从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志包括:从至少一个数据库节点的内存中确定多个独立事务对应的独立事务日志;或者,从至少一个数据库节点的内存中确定多个全局子事务对应的全局子事务日志,以确定多个全局子事务构成的全局事务对应的全局事务日志。
在一些实施例中,根据目标同步时间戳,从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志之后,根据多个事务日志的标签确定该事务日志是否同步至磁盘,其中该标签用于指示该事务日志是否同步至磁盘,例如,该标签为置位标志,在事务日志同步至磁盘的情况下,将该标签进行置1;在事务日志未同步至磁盘的情况下,将该标签置0。所以,从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志是确定未同步至磁盘的事务日志。
示例性的,首先根据目标同步时间戳,从至少一个数据库节点中确定多个事务的对应的多个事务日志,该多个事务日志中携带标签信息,其中部分事务日志的标签信息表示该事务日志已经从内存中同步至磁盘,则针对该事务日志不进行重复同步,需要确定标签信息表示事务日志未从内存同步至磁盘的事务日志,以通过后续步骤将事务日志从内存同步至磁盘。
在一些实施例中,由于数据库节点不止一次提交事务,所以相应的能够确定不止一个目标同步时间戳,即分布式数据库进行数据处理的过程中存在多个目标同步时间戳,针对至少一个数据库节点一次提交的事务,在从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志的过程中,确定第一目标同步时间戳和第二目标同步时间戳之间的多个事务日志,其中,第一目标同步时间戳为根据前一次至少一个数据库提交多个事务所确定的目标同步时间戳,第二目标同步时间戳为此次至少一个数据库节点提交多个事务所确定的目标同步时间戳。
示例性的,分布式数据库包括两个目标同步时间戳:第一目标同步时间戳为1000,第二目标同步时间戳为1008,则从至少一个数据库节点的内存中确定时间戳在1000至1008之间的多个事务日志,这些事务日志在此次数据处理过程中还未从至少一个数据库节点的内存中同步至至少一个数据库中的磁盘中,其中第一目标同步时间戳为1000表示在10:00进行同步,第二目标同步时间戳为1008表示在10:08进行同步。
上述实施例,通过根据目标同步时间戳,从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志,确定需要从至少一个数据库节点的内存同步至至少一个数据库节点的磁盘中的多个事务日志,一方面保证以事务为单位保证完整性,另一方面避免重复同步事务日志,节省磁盘资源。
S206,将多个事务日志从至少一个数据库节点的内存中同步至至少一个数据库节点的磁盘。
其中,多个事务日志中包括独立事务日志和/或全局事务日志。
在一些实施例中,在多个事务日志中包括独立事务日志的情况下,将多个事务日志从至少一个数据库节点的内存中同步至至少一个数据库节点的磁盘,其中至少一个数据库节点的内存与至少一个数据库节点的磁盘对应,例如数据库节点N1的内存对应数据库节点N1的磁盘,将独立事务日志从数据库节点N1的内存同步至数据库节点N1的磁盘。
在一些实施例中,在多个事务日志中包括全局事务日志的情况下,若多个事务日志中的m个事务日志构成一个全局事务日志,则获取至少一个数据库节点提交的m个事务日志的m个标识信息,然后根据m个标识信息判断全局事务日志是否提交完成,若全局事务日志提交完成,则将全局事务日志同步至m个事务日志所对应的m个数据库节点的磁盘,即将。需要说明的是,多个事务日志中的n个事务日志构成另一个全局事务日志,针对另一个全局事务日志执行上述相同的操作,本公开对全局事务日志的数量不做限制,且构成全局事务日志的全局子事务日志的数量不做限制。
示例性的,分布式数据库中,数据库节点N1、数据库节点N、数据库节点N3和数据库节点N4共同完成一个全局事务,对应的全局子事务日志存储于各数据库节点的内存中,将全局子事务日志同步至各数据库节点的磁盘时,将全局事务日志对应存储,数据库节点N1将全局事务日志从内存同步至磁盘,其他数据库节点执行相同的同步操作,使得多个数据库节点之间数据保持一致。
在一些实施例中,在多个事务日志中包括独立事务日志和全局事务日志的情况下,针对独立事务日志,将多个独立事务日志从至少一个数据库节点的内存中同步至至少一个数据库节点的磁盘;针对全局事务日志,首先获取全局事务日志中每个全局子事务日志的标识信息以确定该全局事务日志提交完成,若该全局事务日志提交完成则将全局事务日志同步至多个全局子事务日志对应的多个数据库节点的磁盘中中。
上述实施例针对多个事务日志为独立事务日志,或者全局事务日志,或者独立事务日志和全局事务日志的情况,相应的,将独立事务日志从数据库节点的内存中同步至数据库节点的磁盘中,将全局事务日志从多个数据库节点的内存中进行确定,然后同步至多个数据库节点的磁盘中,使得多个数据库节点在处理全局事务的情况下保证各个数据库节点之间数据的一致性。
S208、在分布式数据库发生异常时,根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志。
在一些实施例中,由于将多个事务日志同步至磁盘的过程中确定了目标同步时间戳,在分布式数据库发生异常时,内存中记录有该目标同步时间戳,可根据该目标时间戳从至少一个数据库节点的磁盘中确定之前同步的多个事务日志。
在一些实施例中,在分布式数据库发生异常时可确定异常时刻,根据异常时刻确定目标检查日志的时间戳,目标检查日志的时间戳为异常时刻之前最大的检查日志的时间戳,以从目标检查日志的时间戳对应的时刻开始检查分布式数据库,其中目标检查日志可由开发人员进行设置,实际应用中,开发人员设置在分布式数据库中设置多个检查点,检查点根据检查日志进行检查,在分布式数据库发生异常时,根据异常时刻确定该异常时刻之前最近的目标检查点,最近的目标检查点对应的目标检查日志的时间戳为异常时刻之前最大的检查日志的时间戳。
进一步的,根据目标检查日志的时间戳确定目标同步时间戳,然后根据目标检查日志的时间戳,从至少一个数据库节点的磁盘中确定目标检查日志;其中,目标检查日志中包括数据恢复操作语句,数据恢复操作语句用于指示针对检查点文件执行恢复操作。根据数据恢复操作语句,从至少一个数据库节点对应的磁盘中确定检查点文件;将检查点文件恢复至至少一个数据库节点对应的内存中,该检查点文件中包括数据库节点在目标检查日志的时间戳之前的数据,以使分布式数据库恢复至目标检查日志的时间戳对应的时刻之前的状态。然后,确定目标检查日志的时间戳对应的时刻之后的数据变化情况,根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志。
示例性的,如图3所示,以时间轴为例对上述实施例进行说明,图中时间轴上的时刻包括异常时刻T1、目标同步时间戳Ts,以及检查日志的时间戳T2、T3、T4异常时刻T1分布式数据库发生异常,由于检查点存在多个,对应的时间轴上存在多个检查日志的时间戳,所以需要首先确定异常时刻T1之前最近的检查日志的时间戳,得到目标检查日志的时间戳T2,然后根据目标检查日志进行检查和检查文件的恢复,进一步的,从目标检查日志的时间戳T2开始,确定目标检查日志的时间戳T2之后最近的目标同步时间戳Ts,从而根据目标同步时间戳Ts,从至少一个数据库节点的磁盘中确定在目标同步时间戳Ts之前从内存同步至磁盘中的多个事务日志。
上述实施例,通过在分布式数据库发生异常时首先根据异常时刻确定目标检查日志的时间戳开始检查,这个过程中可以根据目标检查日志对应的检查文件对数据库节点的数据进行恢复,以使得分布式数据库恢复至目标检查日志的时间戳之前的状态,然后根据目标检查日志的时间戳确定目标同步时间戳,从而根据目标同步时间戳在数据库节点的磁盘中确定目标同步时间戳之前同步至磁盘的多个事务日志。
S210、将多个事务日志恢复至至少一个数据库节点的内存,以使分布式数据库恢复至发生异常之前的状态。
在一些实施例中,若多个事务日志中的m个事务日志构成一个全局事务日志,则将全局事务日志恢复至m个事务日志所对应的m个数据库节点的内存。
示例性的,从各个数据库节点的磁盘中确定需要恢复至内存中的事务日志,数据库节点N1对应事务日志log1,数据库节点N2对应事务日志log2,数据库节点N3对应事务日志log3,其中,事务日志log1、事务日志log2和事务日志log3构成一个全局事务日志log0,则将全局事务日志log0恢复至数据库节点N1、数据库节点N2、数据库节点N3。
在一些实施例中,针对多个事务日志中的独立事务日志,将独立事务日志恢复至对应的数据库节点的内存。
示例性的,从各个数据库节点的磁盘中确定需要恢复至内存中的事务日志,数据库节点N1对应事务日志log1,数据库节点N2对应事务日志log2,数据库节点N3对应事务日志log3,数据库节点N4对应事务日志log4,且事务日志log1、事务日志log2、事务日志log3以及事务日志log4均为独立事务日志,则将事务日志log1从数据库节点N1的磁盘恢复至数据库节点N1的内存,将事务日志log2从数据库节点N2的磁盘恢复至数据库节点N2的内存,将事务日志log3从数据库节点N3的磁盘恢复至数据库节点N3的内存,以及将事务日志log4从数据库节点N4的磁盘恢复至数据库节点N4的内存。
需要说明的是,在多个事务日志包括独立事务日志以及全局事务日志的情况下,分别对独立事务日志和全局事务日志执行上述类似的操作,在此不做赘述。
上述实施例,通过将所述多个事务日志恢复至所述至少一个数据库节点的内存,使得分布式数据库各个节点之间的数据保持一致。
综上所述,在分布式数据库中,针对至少一个数据库节点提交的多个事务,可以得到多个事务对应的多个时间戳,首先从多个时间戳中确定最大时间戳作为目标同步时间戳,再根据目标同步时间戳从至少一个数据库节点对应的内存中确定多个事务日志,然后将多个事务日志同步至至少一个数据库节点的磁盘;在分布式数据库发生异常时,根据目标同步时间戳,将至少一个数据库节点提交的事务对应的事务日志从内存同步至磁盘,以使事务日志持久化存储,在分布式数据库异常时,可根据该目标同步时间戳将至少一个数据库节点的磁盘中的事务日志进行恢复,使得分布式数据库中各个数据库以事务为单位进行日志的异步刷盘和恢复,保证各个数据库节点之间数据的一致性,进一步保证了分布式数据库能恢复至异常之前的历史状态。
图4为本公开提供的一种数据处理装置,该装置包括:
第一选择模块402,用于从至少一个数据库节点提交的多个事务所对应的多个时间戳中,确定目标同步时间戳,目标同步时间戳为多个时间戳中的最大时间戳;根据目标同步时间戳,从至少一个数据库节点的内存中确定多个事务所对应的多个事务日志;
同步模块404,用于将多个事务日志从至少一个数据库节点的内存中同步至至少一个数据库节点的磁盘;
第二选择模块406,用于在分布式数据库发生异常时,根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志;
恢复模块408,用于将多个事务日志恢复至至少一个数据库节点的内存,以使分布式数据库恢复至发生异常之前的状态。
在一些实施例中,恢复模块408,还用于若多个事务日志中的m个事务日志构成一个全局事务日志,则将全局事务日志恢复至m个事务日志所对应的m个数据库节点的内存。
在一些实施例中,恢复模块408,还用于针对多个事务日志中的独立事务日志,将独立事务日志恢复至对应的数据库节点的内存。
在一些实施例中,同步模块404,还用于若多个事务日志中的m个事务日志构成一个全局事务日志,则获取至少一个数据库节点提交的m个事务日志的m个标识信息;
根据m个标识信息判断全局事务日志是否提交完成;
在全局事务日志提交完成的情况下,将全局事务日志同步至m个事务日志所对应的m个数据库节点的磁盘。
在一些实施例中,第二选择模块406,还用于在分布式数据库发生异常时,获取分布式数据库的异常时刻;
根据异常时刻确定目标检查日志的时间戳,目标检查日志的时间戳为异常时刻之前最大的检查日志的时间戳;
根据目标检查日志的时间戳确定目标同步时间戳;
根据目标同步时间戳从至少一个数据库节点的磁盘中确定同步时间戳之前的多个事务日志。
在一些实施例中,第二选择模块406,还用于根据目标检查日志的时间戳,从至少一个数据库节点的磁盘中确定目标检查日志;其中,目标检查日志中包括数据恢复操作语句,数据恢复操作语句用于指示针对检查点文件执行恢复操作;
根据数据恢复操作语句,从至少一个数据库节点对应的磁盘中确定检查点文件;
将检查点文件恢复至至少一个数据库节点对应的内存中。
在一些实施例中,该装置应用于分布式数据库,分布式数据库中包括多个数据库节点,至少一个数据库节点为多个数据库节点中的数据库节点。
值得注意的是,上述数据处理装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本公开的保护范围。
如图5所示,本公开实施例提供一种电子设备,该电子设备包括:处理器501,存储器502及存储在存储器502上并可在处理器501上运行的计算机程序,该计算机程序被处理器501可以实现上述一种密钥分发方法中第一终端执行的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本公开实施例提供一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储计算机程序,该计算机程序被处理器执行时实现上述一种密钥分发方法中第一终端执行的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,该计算机可读存储介质可以为只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本公开可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述的方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
从至少一个数据库节点提交的多个事务所对应的多个时间戳中,确定目标同步时间戳,所述目标同步时间戳为所述多个时间戳中的最大时间戳;
根据所述目标同步时间戳,从所述至少一个数据库节点的内存中确定所述多个事务所对应的多个事务日志;
将所述多个事务日志从所述至少一个数据库节点的内存中同步至所述至少一个数据库节点的磁盘;
在分布式数据库发生异常时,根据所述目标同步时间戳从所述至少一个数据库节点的磁盘中确定所述同步时间戳之前的所述多个事务日志;
将所述多个事务日志恢复至所述至少一个数据库节点的内存,以使分布式数据库恢复至发生异常之前的状态。
2.根据权利要求1的所述方法,其特征在于,所述将所述多个事务日志恢复至所述至少一个数据库节点的内存,包括:
若所述多个事务日志中的m个事务日志构成一个全局事务日志,则将所述全局事务日志恢复至所述m个事务日志所对应的m个数据库节点的内存。
3.根据权利要求1的所述方法,其特征在于,所述将所述多个事务日志恢复至所述至少一个数据库节点的内存,包括:
针对所述多个事务日志中的独立事务日志,将所述独立事务日志恢复至对应的数据库节点的内存。
4.根据权利要求1所述的方法,其特征在于,所述将所述多个事务日志从所述至少一个数据库节点的内存中同步至所述至少一个数据库节点的磁盘,包括:
若所述多个事务日志中的m个事务日志构成一个全局事务日志,则获取所述至少一个数据库节点提交的m个事务日志的m个标识信息;
根据所述m个标识信息判断全局事务日志是否提交完成;
在所述全局事务日志提交完成的情况下,将所述全局事务日志同步至m个事务日志所对应的m个数据库节点的磁盘。
5.根据权利要求1所述的方法,其特征在于,所述在分布式数据库发生异常时,根据所述目标同步时间戳从所述至少一个数据库节点的磁盘中确定所述同步时间戳之前的所述多个事务日志,包括:
在所述分布式数据库发生异常时,获取所述分布式数据库的异常时刻;
根据所述异常时刻确定目标检查日志的时间戳,所述目标检查日志的时间戳为所述异常时刻之前最大的检查日志的时间戳;
根据所述目标检查日志的时间戳确定所述目标同步时间戳;
根据所述目标同步时间戳从所述至少一个数据库节点的磁盘中确定所述同步时间戳之前的所述多个事务日志。
6.根据权利要求5所述的方法,其特征在于,所述根据所述异常时刻确定目标检查日志的时间戳之后,还包括:
根据所述目标检查日志的时间戳,从所述至少一个数据库节点的磁盘中确定目标检查日志;其中,所述目标检查日志中包括数据恢复操作语句,所述数据恢复操作语句用于指示针对检查点文件执行恢复操作;
根据所述数据恢复操作语句,从所述至少一个数据库节点对应的磁盘中确定所述检查点文件;
将所述检查点文件恢复至所述至少一个数据库节点对应的内存中。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法应用于分布式数据库,所述分布式数据库中包括多个数据库节点,所述至少一个数据库节点为所述多个数据库节点中的数据库节点。
8.一种数据处理装置,其特征在于,包括:
第一选择模块,用于从至少一个数据库节点提交的多个事务所对应的多个时间戳中,确定目标同步时间戳,所述目标同步时间戳为所述多个时间戳中的最大时间戳;根据所述目标同步时间戳,从所述至少一个数据库节点的内存中确定所述多个事务所对应的多个事务日志;
同步模块,用于将所述多个事务日志从所述至少一个数据库节点的内存中同步至所述至少一个数据库节点的磁盘;
第二选择模块,用于在分布式数据库发生异常时,根据所述目标同步时间戳从所述至少一个数据库节点的磁盘中确定所述同步时间戳之前的所述多个事务日志;
恢复模块,用于将所述多个事务日志恢复至所述至少一个数据库节点的内存,以使分布式数据库恢复至发生异常之前的状态。
9.一种电子设备,其特征在于,包括:处理器,存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7任一项所述的数据处理方法。
10.一种计算机可读存储介质,其特征在于,包括:所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111614639.5A CN114265900A (zh) | 2021-12-27 | 2021-12-27 | 一种数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111614639.5A CN114265900A (zh) | 2021-12-27 | 2021-12-27 | 一种数据处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114265900A true CN114265900A (zh) | 2022-04-01 |
Family
ID=80830476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111614639.5A Pending CN114265900A (zh) | 2021-12-27 | 2021-12-27 | 一种数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114265900A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658805A (zh) * | 2022-09-15 | 2023-01-31 | 星环信息科技(上海)股份有限公司 | 一种事务一致性管理引擎及方法 |
-
2021
- 2021-12-27 CN CN202111614639.5A patent/CN114265900A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658805A (zh) * | 2022-09-15 | 2023-01-31 | 星环信息科技(上海)股份有限公司 | 一种事务一致性管理引擎及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462594B (zh) | 一种大规模并行处理数据库的系统和方法 | |
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US7801846B2 (en) | Generating log sequence identifiers to apply a transaction to a storage system | |
US20100274768A1 (en) | De-duplication and completeness in multi-log based replication | |
US9672244B2 (en) | Efficient undo-processing during data redistribution | |
US11120047B1 (en) | Method and apparatus for continuously comparing two databases which are actively being kept synchronized | |
CN110543386B (zh) | 一种数据存储方法、装置、设备和存储介质 | |
US9998544B2 (en) | Synchronization testing of active clustered servers | |
CN111639132B (zh) | 日志同步方法及设备 | |
CN114265900A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN113297173B (zh) | 分布式数据库集群管理方法及装置、电子设备 | |
CN112765126B (zh) | 数据库事务的管理方法、装置、计算机设备和存储介质 | |
CN114168636A (zh) | 基于缓存一致性的数据处理方法、装置、设备及存储介质 | |
CN111404737B (zh) | 一种容灾处理方法以及相关装置 | |
EP3377970B1 (en) | Multi-version removal manager | |
CN112800060A (zh) | 数据处理方法、装置、计算机可读存储介质及电子设备 | |
CN111680040A (zh) | 数据表处理方法及装置 | |
CN112035418A (zh) | 多机房同步方法、计算设备及计算机存储介质 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN114490570A (zh) | 生产数据同步方法、装置、数据同步系统及服务器 | |
CN114756408A (zh) | 元数据备份恢复方法、装置、电子设备及存储介质 | |
CN114297003A (zh) | 一种数据库节点的故障恢复方法、装置、设备及存储介质 | |
CN111045869A (zh) | 一种数据备份方法、装置及可读存储介质 | |
US11074141B2 (en) | Database recovery using shared memory | |
CN111222159B (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 |