掌桥专利:专业的专利平台
掌桥专利
首页

数据同步方法、装置、电子设备及计算机存储介质

文献发布时间:2023-06-19 11:29:13


数据同步方法、装置、电子设备及计算机存储介质

技术领域

本发明实施例涉及数据处理技术领域,尤其涉及一种数据同步方法、装置、电子设备及计算机存储介质。

背景技术

随着云计算与大数据技术的不断发展,计算时涉及的数据规模越来越大,计算时的业务场景越来越复杂,为了面对更加复杂的业务场景,计算和存储分离的云计算架构应运而生,通过将计算和存储分离,使得云计算的弹性和可扩张性更好。

在计算和存储分离的云计算架构中,需要多个计算节点间共享同一份数据,因计算节点通常可以被分为两类,即只读定点和读写节点,因此,云计算架构中的数据共享需要保证只读节点和读写节点之间数据的一致性和事务的一致性,以及只读节点与共享存储中数据的一致性和事务的一致性。

但是,当读写节点向存储中写入数据时,如果记录写入操作的日志还没有被只读节点回放,而写入操作已经执行完成,会导致只读节点与读写节点之间出现数据不一致的情况,还可能进一步导致逻辑混乱等。

发明内容

有鉴于此,本发明实施例提供一种数据同步方法、装置、电子设备及计算机存储介质,以解决或缓解上述问题。

根据本发明实施例的第一方面,提供了一种数据同步方法,其包括:确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点;若所述第一日志写入位点大于只读节点已回放的最新日志回放位点,则通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点;通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放,根据所述回放将所述第二日志写入位点同步至所述最新日志回放位点。

根据本发明实施例的第二方面,提供了一种数据同步装置,其包括:第一日志写入位点确定模块,用于确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点;读取模块,用于若所述第一日志写入位点大于只读节点已回放的最新日志回放位点,则通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点;回放模块,用于通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放,根据所述回放将所述第二日志写入位点同步至所述最新日志回放位点。

根据本发明实施例的第三方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如上所述的数据同步方法对应的操作。

根据本发明实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的数据同步方法。

根据本发明实施例提供的方案,通过确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点;若所述第一日志写入位点大于只读节点已回放的最新日志回放位点,则通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点;通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放,根据所述回放将所述第二日志写入位点同步至所述最新日志回放位点,从而可以通过对操作进行回放,来控制第二日志写入位点同步至最新日志回放位点,即共享存储的数据页的写入进度与只读节点同步数据的进度相同,从而避免了读写节点向共享存储中写入的数据较为超前,而读写节点同步数据的进度较为落后的情况,保证了数据的一致性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本发明实施例一的一种数据同步方法的步骤流程图;

图2为本发明实施例二的一种数据同步方法的步骤流程图;

图3a为本发明实施例三的一种数据同步方法的步骤流程图;

图3b为本发明实施例三的一种数据状态示意图;

图3c为本发明实施例三的一种数据状态示意图;

图3d为本发明实施例三的一种数据状态示意图;

图4为本发明实施例四的一种数据同步装置的结构框图;

图5为本发明实施例五的一种电子设备的结构示意图。

具体实施方式

为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。

下面结合本发明实施例附图进一步说明本发明实施例具体实现。

实施例一

参照图1,示出了根据本发明实施例一的一种数据同步方法的步骤流程图。

本实施例的数据同步方法包括以下步骤:

S102、确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点。

本实施例中,读写节点既可对共享存储进行读取操作,也可以进行写入操作,例如对共享存储中的数据进行增、删、改等操作。

当读写节点将要执行写入操作时,需要先生成写入操作对应的日志记录,通过日志记录写入操作的执行步骤以及对应的数据变更等信息。生成日志记录时同样会确定当前操作对应的日志序列号(LSN),序列号的值越大,日志中记录的操作执行顺序越晚。

本实施例中,当读写节点将要对共享存储进行写入操作时,第一日志写入位点为日志中记录的最新的写入操作对应的日志序列号LSN。

S104、若所述第一日志写入位点大于只读节点已回放的最新日志回放位点,则通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点。

本实施例中,只读节点通过回放共享存储中的日志实现与读写节点的数据同步,并可以将已经同步的部分对应的数据写入共享存储中,通过只读节点可以对共享存储中的数据进行读取操作。只读节点按照日志序列号从小到大的顺序回放日志,则已回放的最新日志回放位点为:只读节点最新回放的操作对应的日志序列号。最新日志回放位点可以表征只读节点同步数据的进度,即最新日志回放位点之前的数据为已经被只读节点同步的数据。

本实施例中,当第一日志写入位点大于只读节点的最新日志回放位点时,说明第一日志写入位点对应的日志还未被只读节点进行回放。此时,若执行第一日志写入位点对应的写入操作,会导致读写节点向共享存储中写入的数据较为超前,而读写节点同步数据的进度较为落后,从而出现读写节点同步的数据与共享存储中的数据不一致的情况。

为了避免出现数据不一致的情况,本实施例中,通过读写节点读取共享存储的数据页中已写入的数据,并确定数据页的第二日志写入位点。第二日志写入位点可以用于表征共享存储的数据页中数据写入的进度,即第二日志写入位点为已经对数据页进行的写入操作中最新的写入操作对应的序列号。

由于需要避免出现数据不一致的问题,需要保证共享存储中写入的数据不超前于读写节点同步的数据,因此,在共享存储的使用过程中,共享存储中数据页的第二日志写入位点通常小于或等于只读节点的最新日志回放位点,即,共享存储的数据页中存储的数据为已经被只读节点回放的数据,并且,由于第一日志写入位点大于最新日志回放位点,则第二日志写入位点小于第一日志写入位点,共享存储的数据页中的数据为第一日志写入位点对应的写入操作执行之前的数据。

S106、通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放,根据所述回放将所述第二日志写入位点同步至所述最新日志回放位点。

由于只读节点不能向共享存储中写入数据,因此,本实施例中,通过读写节点对日志记录的操作进行回放,以便于将回放得到的数据写回共享存储的数据页中,从而将共享存储中数据页的数据同步至已被读写节点回放的数据。

本实施例中,由于日志中记录有读写节点执行写入操作的执行步骤以及对应的数据变更等信息,因此,可以通过日志对其中记录的操作进行回放,即根据日志中记录的信息确定执行操作之后数据页中存储的数据。

本实施例中,通过对日志文件中记录的第二日志写入位点和最新日志回放位点之间的操作进行回放,从而使得回放得到的数据对应的第二日志写入位点同步至最新日志回放位点,而并非直接同步至第一日志写入位点,即共享存储的数据页的写入进度与只读节点同步数据的进度相同,从而避免了读写节点向共享存储中写入的数据较为超前,而读写节点同步数据的进度较为落后的情况,保证了数据的一致性。

本实施例提供的方案,通过确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点;若所述第一日志写入位点大于只读节点已回放的最新日志回放位点,则通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点;通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放,根据所述回放将所述第二日志写入位点同步至所述最新日志回放位点,从而可以通过对操作进行回放,来控制第二日志写入位点同步至最新日志回放位点,即共享存储的数据页的写入进度与只读节点同步数据的进度相同,从而避免了读写节点向共享存储中写入的数据较为超前,而读写节点同步数据的进度较为落后的情况,保证了数据的一致性。

本实施例的数据同步方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器等。

实施例二

参照图2,示出了根据本发明实施例二的一种数据同步方法的步骤流程图。

本实施例中,以日志为Redo日志为例,对数据同步方法进行示例性说明。本实施例的数据同步方法包括以下步骤:

S202、确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点。

本步骤的具体实现方式与上述实施例中的步骤S102类似,在此不再赘述。

另外需要说明的是,通常写入操作的执行流程为:先生成写入操作对应的日志记录,然后执行写入操作。

本实施例中,以日志为Redo日志进行示例性说明。Redo日志又名重做日志,用于确保事务的持久性。通过Redo日志可以防止在发生故障的时间点,尚有脏页未写入共享存储,共享存储的服务器的时候,可以根据Redo日志进行重做,即重新将脏页写入共享存储,从而保证事务的持久性。

具体地,当写入操作的目的是将脏页刷新至共享存储中时,Redo日志的记录时间点为缓存中的页面已经修改完成、脏页已经存在,但是还没有将脏页写入到共享存储中的时间点。Redo日志记录生成后先发送到共享存储中,从而将Redo日志记录存储在共享存储中的日志文件中,然后再执行Redo日志记录的写入操作。而本方案的执行时机为写入操作的日志记录生成之后,写入操作执行之前。

S204、判断所述第一日志写入位点是否大于只读节点已回放的最新日志回放位点。

若大于,则执行步骤S206,若小于,则直接执行第一日志写入位点对应的写入操作。

S206、确定所述第一日志写入位点记录的写入操作在所述共享存储中对应的待操作数据页,并读取所述待操作数据页中已写入的数据,获取待操作数据页对应的第二日志写入位点。

本实施例中,通过仅读取待操作数据页中已写入的数据,进而可以通过后续步骤,仅对日志记录的与待操作数据页对应的操作进行回放,而不对日志记录的所有操作进行回放,减小了需要回放的操作数量,提高了回放速度。

另外,通过读取待操作数据页中已写入的数据,从而可以以数据页为单位对共享存储中的数据进行维护。例如,共享存储中每个数据页可以维护一个list,list中可以按顺序记录有所有针对数据页的写入操作对应的日志序列号LSN,当共享存储中出现错误导致数据页中的数据被删除等特殊情况时,可以根据list中记录的LSN对数据页中的数据进行重做,从而恢复数据页中的数据。

具体地,写入操作具体为向共享存储的数据页中写入数据,不同的写入操作可以为向不同的数据页中写入数据。

当确定第一日志写入位点后,可以根据第一日志写入位点确定对应的日志,从而确定日志中记录的写入操作对应的待操作数据页,执行写入操作为向待操作数据页中写入数据。例如,若第一日志写入位点为200,则可以确定日志序列号LSN为200的日志记录的内容,根据日志记录的内容,确定LSN为200的日志记录的写入操作对应的待操作数据页为共享存储中的数据页1,写入操作具体可以为修改数据页1中的数据。

本实施例中,确定待操作数据页后,可以通过读写节点读取待操作数据页中已写入的数据,并确定待操作数据页对应的第二日志写入位点。例如,确定待操作数据页为数据页1后,则可以直接读取数据页1中已经写入的数据。

本实施例中,确定待操作数据页后,可以直接根据数据页的最新修改日志标识确定第二日志写入位点。例如,可以直接根据数据页1对应的最新修改日志标识确定第二写入位点为90,表示记录最近一次修改数据页1的写入操作对应的LSN为90。

S208、通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点。

具体地,本实施例中,当日志为Redo日志时,步骤S208具体包括:

通过所述读写节点,以所述第二日志写入位点为起点,以所述最新日志回放位点为终点,按顺序确定Redo日志中记录的执行操作后的数据,并基于确定的执行操作后的数据对记录的操作进行回放。

本实施例中,Redo日志中记录的内容可以包括:写入操作的执行步骤、写入操作在共享存储中的写入地址、写入操作执行后的数据内容等,其中,写入地址为待操作数据页对应的地址。

本实施例中,由于Redo日志中记录的是执行操作后的数据,因此,进行操作回放时可以从前向后回放,即,以所述第二日志写入位点为起点,以所述最新日志回放位点为终点,按顺序确定执行操作后的数据,并根据确定的数据进行回放时,直接使用执行操作后的数据替换执行操作前的数据即可。

另外,在第二日志写入位点至最新日志回放位点之间记录有多个写入操作,多个写入操作针对的数据页不仅包括待操作数据页,还包括其他数据页。则进行操作回放时,可以仅确定与待操作数据页对应的写入操作和数据,忽略其他,并仅对待操作数据页中的数据进行操作回放;也可以确定所有的写入操作和数据,并对所有涉及的数据页进行操作回放。

本实施例中,通过以所述第二日志写入位点为起点,以所述最新日志回放位点为终点,按顺序确定Redo日志中记录的执行操作后的数据,进行操作回放时,直接使用执行操作后的数据替换执行操作前的数据即可,无需回放具体的操作步骤,简化了进行操作回放的步骤,缩短了进行操作回放的时间。

当然,本实施例提供的方案并不仅限于Redo日志,同样也适用于其他日志,只要能够根据日志中记录的内容对操作进行回放即可。

S210、将回放得到的数据写入所述共享存储的数据页中,并将所述第二日志写入位点的值修改为与所述最新日志回放位点的值相同。

本实施例中,进行操作回放后,将回放得到的数据写入共享存储的数据页中,并将第二日志写入位点的值修改为与所述最新日志回放位点的值相同,从而更新共享存储的数据页中存储的数据,使得共享存储中存储的数据更新进度与只读节点回放日志的进度尽量同步。

修改后的第二日志回放位点可以作为下一次进行数据同步时,确定的数据页的第二日志写入位点,并作为回放时的日志起点。

另外需要说明的是,由于只读节点不能向共享存储中写入数据,因此,本实施例中的步骤S202-S210均由读写节点执行,从而可以直接步骤S210中通过读写节点将数据写入共享操作。

S212、通过所述只读节点,对位于所述最新日志回放位点之后的日志中记录的操作进行回放,并更新所述最新日志回放位点。

本实施例中,将回放得到的数据写入共享存储后,只读节点继续回放最新日志回放位点之后的日志中记录的操作,并更新所述最新日志回放位点,从而增加只读节点同步数据的进度,进而当最新日志回放位点大于当前的第一日志写入位点时,执行当前的第一日志写入位点对应的写入操作。例如,若当前的第一日志写入位点为200,当前的最新日志回放位点为150,则只读节点继续回放日志并将最新日志回放位点更新为230后可以通过步骤S206对日志序列号为150-230的日志中记录的操作进行回放,从而执行当前的第一日志写入位点200对应的写入操作。

当然,读写节点同样会继续进行新的写入操作,此时,第一日志写入位点的值会随之增加。

本实施例提供的方案,通过对操作进行回放,来控制第二日志写入位点同步至最新日志回放位点,即共享存储的数据页的写入进度与只读节点同步数据的进度相同,从而避免了读写节点向共享存储中写入的数据较为超前,而读写节点同步数据的进度较为落后的情况,保证了数据的一致性;还通过仅读取待操作数据页中已写入的数据,进而可以通过后续步骤,仅对日志记录的与待操作数据页对应的操作进行回放,而不对日志记录的所有操作进行回放,减小了需要回放的操作数量,提高了回放速度。

本实施例的数据同步方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器等。

实施例三

参照图3a,示出了根据本发明实施例三的一种数据同步方法的步骤流程图。

本实施例以一具体场景,对本申请的数据同步方法进行示例性说明。本实施例提供的数据同步方法包括下述步骤:

S302、确定读写节点的第一日志写入位点,通过读写节点确定只读节点的最新日志回放位点。

本实施例中,读写节点Primary和只读节点Replica进行位点同步,使得读写节点可以确定只读节点的最新日志回放位点。

写入节点Primary对共享存储中的数据页进行写入操作,每次写入操作均对应有记录写入操作的日志,例如,记录最新一次对数据页2进行的写入操作对应的LSN为100。

图3b为执行LSN为200的日志记录的写入操作之后的数据状态示意图,如图3b所示,确定的第一日志写入位点为200,则读写节点最新的写入操作为对数据页1的写入操作,记录写入操作对应的LSN为200。

如图3b所示,共享存储中记录有各个数据页的第二日志写入位点,例如数据页2的第二日志写入位点为100,数据页1的第二日志写入位点为200。

此时,读节点Replica的最新回放日志位点为150,此时,只读节点仅能确定LSN为150之前日志对应的数据,并不能确定LSN为150之后日志的数据。例如图3b所示,只读节点可以确定第二日志写入位点为100的数据页2中的数据,而第二日志写入位点为200的数据页1中存在LSN为150-200之间的日志对应的数据,这些数据对只读节点来说较为超前,导致出现数据不一致的情况。

S304、通过读写节点比较第一日志写入位点与最新日志回放位点,确定第一日志写入位点大于最新日志回放位点,第一日志写入位点对应的日志记录的写入操作不能执行。

若仅生成LSN为200的日志记录,不执行日志记录的写入操作,则数据状态图可以如图3c所示。与图3b不同的是,图3c中,共享存储中数据页1对应的第二日志写入位点为90,共享存储中不存在对只读节点来说较为超前的数据。

S306、通过读写节点确定第一日志写入位点对应的日志记录的写入操作对应的待操作数据页,通过读写节点从共享存储中读取待操作数据页中的数据,并确定待操作数据页的第二日志写入位点。

本实施例中,确定LSN为200的日志(第一日志写入位点对应的日志)记录的写入操作对应的待操作数据页为数据页1,通过读写节点从共享存储中读取数据页1中的数据,并确定数据页1的第二日志写入位点为90。

如图3c所示,读写节点将数据页1中的数据读取到内存中,读取到的数据可以记为数据页1`,数据页1`的第二日志写入位点为90。

S308、通过读写节点,在读取的待操作数据页中的数据的基础上,对第一日志写入位点与最新日志回放位点之间的日志记录的操作进行回放。

在数据页1`的基础上,对LSN为90-150之间的日志记录的操作进行回放,回放后的数据页1`对应的最新日志回放位点为150。

S310、通过读写节点,将回放得到的数据写入共享存储的待操作数据页中,并修改待操作数据页的第二日志写入位点至于最新日志回放位点相同。

将回放得到的最新日志回放位点为150的数据页1`写入共享存储的数据页1中,并将数据页1对应的第二日志写入位点由90修改至150,修改后的数据如图3d所示。

S312、通过只读节点继续对操作进行回放,并更新只读节点的最新日志回放位点。

当只读节点的最新日志回放位点大于当前的第一日志更新位点200后,可以再次执行上述步骤S302-S310,从而执行LSN为200的日志记录的写入操作。

本实施例提供的方案,通过对操作进行回放,来控制第二日志写入位点同步至最新日志回放位点,即共享存储的数据页的写入进度与只读节点同步数据的进度相同,从而避免了读写节点向共享存储中写入的数据较为超前,而读写节点同步数据的进度较为落后的情况,保证了数据的一致性;还通过仅读取待操作数据页中已写入的数据,进而可以通过后续步骤,仅对日志记录的与待操作数据页对应的操作进行回放,而不对日志记录的所有操作进行回放,减小了需要回放的操作数量,提高了回放速度。

本实施例的数据同步方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器等。

实施例四

参照图4,示出了根据本发明实施例四的一种数据同步装置的结构框图。

如图4所示,数据同步装置包括:第一日志写入位点确定模块402、读取模块404、回放模块406。

第一日志写入位点确定模块402,用于确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点;

读取模块404,用于若所述第一日志写入位点大于只读节点已回放的最新日志回放位点,则通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点;

回放模块406,用于通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放,根据所述回放将所述第二日志写入位点同步至所述最新日志回放位点。

在一种可选的实施方式中,所述读取模块404包括:待操作数据页读取模块,用于确定所述第一日志写入位点记录的写入操作在所述共享存储中对应的待操作数据页,并读取所述待操作数据页中已写入的数据。

在一种可选的实施方式中,还包括:写入模块,用于将回放得到的数据写入所述共享存储的数据页中,并将所述第二日志写入位点的值修改为与所述最新日志回放位点的值相同。

在一种可选的实施方式中,所述日志为Redo日志,则,对应的,所述回放模块406包括:Redo日志回放模块,用于通过所述读写节点,以所述第二日志写入位点为起点,以所述最新日志回放位点为终点,按顺序确定Redo日志中记录的执行操作后的数据,并基于确定的执行操作后的数据对记录的操作进行回放。

在一种可选的实施方式中,还包括:更新模块,用于通过所述只读节点,对位于所述最新日志回放位点之后的日志中记录的操作进行回放,并更新所述最新日志回放位点。

本实施例提供的数据同步方案,通过确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点;若所述第一日志写入位点大于只读节点已回放的最新日志回放位点,则通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点;通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放根据所述回放将所述第二日志写入位点同步至所述最新日志回放位点,从而可以通过对操作进行回放,来控制第二日志写入位点同步至最新日志回放位点,即共享存储的数据页的写入进度与只读节点同步数据的进度相同,从而避免了读写节点向共享存储中写入的数据较为超前,而读写节点同步数据的进度较为落后的情况,保证了数据的一致性。

实施例五

一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如上所述的数据同步方法对应的操作。

具体地,参照图5,示出了根据本发明实施例五的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。

如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。

其中:

处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。

通信接口504,用于与其它电子设备或服务器进行通信。

处理器502,用于执行程序510,具体可以执行上述数据同步方法实施例中的相关步骤。

具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。

处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。

存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

程序510具体可以用于使得处理器502执行以下操作:确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点;若所述第一日志写入位点大于只读节点已回放的最新日志回放位点,则通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点;通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放,根据所述回放将所述第二日志写入位点同步至所述最新日志回放位点。

在一种可选的实施方式中,所述通过所述读写节点读取所述共享存储中的数据页中已写入的数据包括:确定所述第一日志写入位点记录的写入操作在所述共享存储中对应的待操作数据页,并读取所述待操作数据页中已写入的数据。

在一种可选的实施方式中,还包括:将回放得到的数据写入所述共享存储的数据页中,并将所述第二日志写入位点的值修改为与所述最新日志回放位点的值相同。

在一种可选的实施方式中,所述日志为Redo日志,则,对应的,所述通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放包括:通过所述读写节点,以所述第二日志写入位点为起点,以所述最新日志回放位点为终点,按顺序确定Redo日志中记录的执行操作后的数据,并基于确定的执行操作后的数据对记录的操作进行回放。

在一种可选的实施方式中,还包括:通过所述只读节点,对位于所述最新日志回放位点之后的日志中记录的操作进行回放,并更新所述最新日志回放位点。

程序510中各步骤的具体实现可以参见上述数据同步方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。

本实施例的电子设备,通过确定通过读写节点对共享存储进行写入操作所对应的第一日志写入位点;若所述第一日志写入位点大于只读节点已回放的最新日志回放位点,则通过所述读写节点读取所述共享存储中的数据页中已写入的数据,获取所述数据页对应的第二日志写入位点;通过所述读写节点对日志文件中记录的所述第二日志写入位点和所述最新日志回放位点之间的操作进行回放,根据所述回放将所述第二日志写入位点同步至所述最新日志回放位点,从而可以通过对操作进行回放,来控制第二日志写入位点同步至最新日志回放位点,即共享存储的数据页的写入进度与只读节点同步数据的进度相同,从而避免了读写节点向共享存储中写入的数据较为超前,而读写节点同步数据的进度较为落后的情况,保证了数据的一致性。

需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。

上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的数据同步方法。此外,当通用计算机访问用于实现在此示出的数据同步方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的数据同步方法的专用计算机。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。

以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。

相关技术
  • 数据同步方法及装置、电子设备及计算机可读存储介质
  • 数据同步方法、装置、电子设备及计算机可读存储介质
技术分类

06120112941669