CN108881452B - 一种数据同步的方法、装置及存储介质 - Google Patents
一种数据同步的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN108881452B CN108881452B CN201810681964.5A CN201810681964A CN108881452B CN 108881452 B CN108881452 B CN 108881452B CN 201810681964 A CN201810681964 A CN 201810681964A CN 108881452 B CN108881452 B CN 108881452B
- Authority
- CN
- China
- Prior art keywords
- node
- serial number
- log serial
- data
- identification information
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种数据同步的方法,所述方法包括:接收第一节点发送的同步增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;判断所述第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号;确定所述第一日志流水号接续所述第二日志流水号时,根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据。本发明还公开了一种数据同步的装置、以及存储介质。
Description
技术领域
本发明涉及分布式数据库领域中的数据同步技术,尤其涉及一种数据同步的方法、装置及存储介质。
背景技术
目前,在分布式数据库系统中,当主节点出现故障而不能正常提供服务时,对于主节点产生的增量数据需要手动同步到备节点的数据库,然后重新修改配置文件并启动应用程序加载业务数据。这样,使得主节点与备节点之间业务数据同步的操作繁琐,导致备节点不能快速接管主节点的业务,进而出现主节点与备节点之间业务数据失步的现象,大大降低了分布式数据库系统的可靠性,以至于不能提供高性能服务,且相关技术也没有提出其他比较完善的解决方案。
发明内容
有鉴于此,本发明实施例期望提供一种数据同步的方法、装置及存储介质,至少用以解决相关技术中难以有效实现备节点快速接管主节点的业务数据的问题。
为达到上述目的,本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种数据同步的方法,所述方法包括:
接收第一节点发送的同步增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
判断所述第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号;
确定所述第一日志流水号接续所述第二日志流水号时,根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据。
第二方面,本发明实施例还提供一种数据同步的方法,所述方法包括:
接收第一节点发送的用于获取增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
判断所述第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号;
确定所述第一日志流水号小于等于所述第二日志流水号时,根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点;其中,所述第一节点和所述第二节点为跨局数据库节点。
第三方面,本发明实施例还提供一种数据同步的装置,所述装置包括:第一接收模块、第一判断模块、第二判断模块和第二接收模块;其中,
所述第一接收模块,用于接收第一节点发送的同步增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
所述第一判断模块,用于判断所述第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号;
所述第二判断模块,用于所述第一判断模块确定所述第一日志流水号接续所述第二日志流水号时,判断产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件是否匹配;
所述第二接收模块,用于根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据。
第四方面,本发明实施例还提供一种数据同步的装置,所述装置包括:第三接收模块、第三判断模块、第四判断模块和发送模块;其中,
所述第三接收模块,用于接收第一节点发送的用于获取增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
所述第三判断模块,用于判断所述第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号;
所述第四判断模块,用于所述第三判断模块确定所述第一日志流水号小于等于所述第二日志流水号时,判断产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件是否匹配;
所述发送模块,用于根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点;其中,所述第一节点和所述第二节点为跨局数据库节点。
第五方面,本发明实施例还提供一种数据同步的装置,所述装置包括:
存储器,用于存储可执行指令;
处理器,用于执行所述可执行指令时,实现本发明实施例提供的数据同步的方法。
第六方面,本发明实施例还提供一种存储介质,存储有可执行指令,所述可执行指令被执行时,用于实现本发明实施例提供的数据同步的方法。
本发明实施例所提供的数据同步的方法、装置及存储介质,当正常集群内主节点(即第一节点)与备节点(即第二节点)之间数据失步时,接收第一节点发送的同步增量数据的请求消息,判断该请求消息中携带的第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号;当第一日志流水号接续第二日志流水号时,且产生第一日志流水号的第一节点的第一标识信息,以及第一节点成为主节点的时间与相应设定条件匹配成功时,接收第一节点主动同步的增量数据,根据增量数据更新第二节点中的数据。可见,即使第一节点发生数据变更,第二节点仍可以保证按序同步第一节点的数据,而无需在第一节点切换后手动同步增量数据给第二节点,这样,第二节点能够快速接管第一节点的数据,从而进一步提高分布式数据库系统的可靠性和高性能服务。
并且,当主局节点(即第二节点)出现故障,业务即将切换到备局节点(即第一节点)时,接收第一节点发送的用于获取增量数据的请求消息,判断该请求消息中携带的第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号;当第一日志流水号小于等于第二日志流水号时,且产生第二日志流水号的第二节点的第一标识信息,以及第二节点成为主节点的时间与相应设定条件匹配成功时,将第二节点产生的增量数据发送给第一节点。可见,在容灾局接管的场景下,对于主局产生的增量数据也无需手动同步到备局,备局可以快速接管主局的数据,从而进一步提高分布式数据库系统的可靠性和高性能服务。
附图说明
图1为本发明实施例提供的一种数据同步的方法的应用场景示意图;
图2为本发明实施例提供的一种数据同步的方法的实现流程示意图;
图3为本发明实施例提供的一种数据同步的方法的具体实现流程示意图;
图4为本发明实施例提供的另一种数据同步的方法的应用场景示意图;
图5为本发明实施例提供的另一种数据同步的方法的实现流程示意图;
图6为本发明实施例提供的另一种数据同步的方法的具体实现流程示意图;
图7为本发明实施例提供的一种数据同步的装置的功能结构示意图;
图8为本发明实施例提供的另一种数据同步的装置的功能结构示意图;
图9为本发明实施例提供的一种数据同步的装置的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本发明。
在对本发明进行进一步详细说明之前,先对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)日志流水号,对主节点中的数据每执行一次操作如增加、修改或删除操作,分布式数据库将产生一定的增量数据,此时对应生成一条日志流水号。表1为日志流水号的格式,如表1所示:
表1
产生日志流水号的主节点ID,也即产生日志流水号的主节点的标识信息,主节点可以是正常集群内的主节点,也可以是跨局数据库中的主局节点。
该节点ID成为主节点的时间,与下文切换列表中记录的原主节点成为主节点的时间相同,时间单位可为ms。
日志流水号,用于表征节点中不同数据的时序,可以是按照各项数据的写入顺序分配的连续数字,即递增的连续自然数,如1,2,3,4……,每产生一条日志流水号则在原来的基础上加1;且日志流水号的数字越大,表示节点数据越新。
对主节点执行的操作,即对主数据库中某张表的某个字段执行的操作,其中,操作的类型至少包括以下之一:增加、修改和删除。
2)切换列表,为一张表,当主节点的数据有更新时,则会在该切换列表中插入一条记录,并产生日志。该日志会同步到备节点,备节点也会在切换列表中插入相同的记录。表2为切换列表的格式,如表2所示:
表2
这里,利用切换列表可以判断日志流水号即增量数据的连续性,确定增量数据源是否为同一数据源,以保证集群内数据的一致性和完整性。需要说明的是,该切换列表在容灾系统中容灾局接管的场景下同样适用。
图1为本发明实施例提供的一种数据同步的方法的应用场景示意图,如图1所示,假设正常的数据库集群内有4个数据库节点,分别是1个主节点和3个备节点,这四个节点的节点ID分别为node1、node2、node3和node4,其中,node1为主节点,而node2、node3和node4为备节点。需要说明的是,node2和node3是本局备节点,node4是跨局备节点。在该应用场景下,应用程序编程接口(API,Application Programming Interface)客户端向node1发送数据更新请求,node1接收到该数据更新请求后,生成增量数据;其中,数据更新的类型至少包括增加、修改或删除中的一种或多种。然后,node1分别向node2、node3、node4发送同步增量数据的请求消息,在node2、node3和node4分别收到增量数据的同步请求后,则可以应用增量数据到各自对应的数据库,在主备节点完成增量数据的同步后,node1向API客户端返回数据同步成功的响应。
基于上述图1所示的应用场景,下面以主节点为第一节点,备节点为第二节点为例,对本发明实施例中的数据同步的方法的实现过程进行说明。图2为本发明实施例提供的一种数据同步的方法的实现流程示意图,所述数据同步的方法可应用于服务器中;如图2所示,本发明实施例中数据同步的方法的实现流程,可以包括以下步骤:
步骤201:接收第一节点发送的同步增量数据的请求消息;其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序。
在本发明实施例中,所述增量数据可通过下述方法确定:所述第一节点接收至少一个客户端发送的数据更新请求,基于所述数据更新请求生成所述增量数据。其中,数据更新的类型至少包括以下之一:增加、修改和删除。
这里,所述客户端可以包括但不限于智能手机、平板电脑、掌上电脑等各种类型的客户端。当客户端的数据发生变更时,客户端可通过API接口向第一节点发送数据更新请求,该数据更新请求有可能会导致第一节点新增数据、修改数据或删除数据,从而使第一节点产生增量数据。
需要说明的是,第一节点发送同步增量数据的请求消息可以按照定时时间发送,比如定时时间为100ms。这里,所述定时时间可以由定时器检测获得。
步骤202:判断所述第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号。
在本发明实施例中,所述接续可以理解为第一日志流水号与第二日志流水号是连续的数据时序,且第一日志流水号与第二日志流水号之间并无间断;也就是说,本步骤202可为判断第一日志流水号是否为在第二节点当前时刻最新数据对应的第二日志流水号的基础上加1。
举例来说,若第二节点当前时刻最新数据对应的第二日志流水号为90,那么,将判断请求消息中所携带的第一日志流水号是否为91,如果是,则继续执行步骤203,否则确定为第一节点中的数据与第二节点中的数据同步失败。可见,通过判断第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号,可以保证第二节点中的数据与第一节点中的数据在顺序上的一致性。
步骤203:确定所述第一日志流水号接续所述第二日志流水号时,根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据。
在本发明实施例中,当确定出第一日志流水号接续第二日志流水号时,对于本步骤203中的根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据来说,可以采用以下方式实现:判断所述第一标识信息与所述第二节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第一节点成为主节点的时间,与所述第二节点变更为主节点的时间是否匹配;确定所述第一节点成为主节点的时间与所述第二节点变更为主节点的时间匹配成功时,接收所述第一节点主动同步的增量数据,根据所述增量数据更新所述第二节点中的数据。
这里,第一标识信息和第一节点成为主节点的时间存储于日志流水号的日志中,所述第二节点变更为主节点的第二标识信息,以及第二节点变更为主节点的时间存储于切换列表中。
在本发明实施例中,通过判断第一标识信息是否等于第二节点变更为主节点的第二标识信息,以及判断第一节点成为主节点的时间与第二节点变更为主节点的时间是否相同这两个设定条件,来保证第一节点中的本条日志与第二节点同步数据前的上一条日志是同一个第一节点即主节点产生的,避免出现不同主节点在不同业务下产生的日志混乱的问题。
在本发明实施例中,在确定产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,所述方法还包括:确定从切换列表中是否查找到所述第一标识信息;确定查找到所述第一标识信息时,判断所述第一节点成为主节点的时间,与所述切换列表中记录的所述第一节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第一节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第一节点最后一条日志流水号大于所述第一日志流水号时,基于所述请求消息接收所述第一节点主动同步的增量数据。
这里,只要从切换列表中未查找到第一标识信息,或者在查找到第一标识信息之后,判断出第一节点成为主节点的时间与切换列表中记录的第一节点成为主节点的时间不相等时,则可确定第一节点中的数据与第二节点中的数据同步失败。由于考虑到日志会延迟到达第二节点,因此会出现第一节点即主节点已经发生变更,但是日志还未到达第二节点的情况,那么,可以判断下该日志是不是之前的主节点产生的,并且还要严格判断第一节点成为主节点的时间与切换列表中记录的第一节点成为主节点的时间是否匹配。
在本发明实施例中,如果该条日志是原主节点产生的,则还需判断原主节点中最后一条日志流水号是否大于当前接收到的日志流水号,即判断切换列表中记录的所述第一节点最后一条日志流水号是否大于第一日志流水号,以防止该条日志是在主节点变更后原主节点产生的。根据切换列表中记录的第一节点最后一条日志流水号与第一日志流水号的大小比较结果,仅会同步主节点变更前原主节点产生的日志,避免数据混乱的问题。这样,即使主节点发生数据变更,备节点仍可以保证按序同步主节点的数据,而无需在主节点切换后手动同步增量数据给备节点。当确定出所述切换列表中记录的所述第一节点最后一条日志流水号大于所述第一日志流水号时,则根据第一节点产生的增量数据更新第二节点中的数据,使得第一节点中的数据与第二节点中的数据同步成功。
基于上述图1所示的应用场景,下面以主节点为第一节点,备节点为第二节点为例,对本发明实施例数据同步的方法的具体实现过程做进一步地详细说明。图3为本发明实施例提供的一种数据同步的方法的具体实现流程示意图,所述数据同步的方法可应用于服务器中;如图3所示,所述数据同步的方法的具体实现流程,可以包括以下步骤:
步骤301:接收第一节点发送的同步增量数据的请求消息;其中,请求消息中携带有第一日志流水号。
在本发明实施例中,所述第一日志流水号用于表征所述第一节点中不同数据的时序。
这里,所述增量数据可通过下述方法确定:所述第一节点接收至少一个客户端发送的数据更新请求,基于所述数据更新请求生成所述增量数据。其中,数据更新的类型至少包括以下之一:增加、修改和删除。
这里,所述客户端可以包括但不限于智能手机、平板电脑、掌上电脑等各种类型的客户端。当客户端的数据发生变更时,客户端可通过API接口向第一节点发送数据更新请求,该数据更新请求有可能会导致第一节点新增数据、修改数据或删除数据,从而使第一节点产生增量数据。
步骤302:判断第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号,若接续,则执行步骤303,否则跳转至步骤308。
步骤303:确定第一日志流水号接续第二日志流水号时,判断产生第一日志流水号的第一节点的第一标识信息,以及第一节点成为主节点的时间与相应设定条件是否均匹配成功,若两者均匹配成功,则执行步骤304,否则执行步骤305。
本发明实施例中,对于判断产生第一日志流水号的第一节点的第一标识信息,以及第一节点成为主节点的时间与相应设定条件是否均匹配成功,可以采用以下方式实现:判断所述第一标识信息与所述第二节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第一节点成为主节点的时间,与所述第二节点变更为主节点的时间是否匹配。这里,当确定所述第一节点成为主节点的时间与所述第二节点变更为主节点的时间匹配成功时,则执行步骤304。
步骤304:基于请求消息接收第一节点主动同步的增量数据,接收完成后跳转至步骤308。
这里,在接收到第一节点主动同步的增量数据之后,可根据所述增量数据更新所述第二节点中的数据。本发明实施例中,通过判断第一标识信息是否等于第二节点变更为主节点的第二标识信息,以及判断第一节点成为主节点的时间与第二节点变更为主节点的时间是否相同这两个设定条件,来保证第一节点中的本条日志与第二节点同步数据前的上一条日志是同一个第一节点即主节点产生的,避免出现不同主节点在不同业务下产生的日志混乱的问题。
步骤305:从切换列表中是否查找到第一标识信息,若可以查找到,则执行步骤306,否则跳转至步骤308。
步骤306:判断第一节点成为主节点的时间,与切换列表中记录的第一节点成为主节点的时间是否匹配,若匹配成功,则执行步骤307,否则跳转至步骤308。
步骤307:判断切换列表中记录的第一节点最后一条日志流水号是否大于第一日志流水号,若大于,则返回步骤304,否则跳转至步骤308。
步骤308:结束当前处理流程。
本发明实施例中,只要从切换列表中未查找到第一标识信息,或者在查找到第一标识信息之后,判断出第一节点成为主节点的时间与切换列表中记录的第一节点成为主节点的时间不相等时,则可确定第一节点中的数据与第二节点中的数据同步失败。由于考虑到日志会延迟到达第二节点,因此会出现第一节点即主节点已经发生变更,但是日志还未到达第二节点的情况,那么,可以判断下该日志是不是之前的主节点产生的,并且还要严格判断第一节点成为主节点的时间与切换列表中记录的第一节点成为主节点的时间是否匹配。
本发明实施例中,如果该条日志是原主节点产生的,则还需判断原主节点中最后一条日志流水号是否大于当前接收到的日志流水号,即判断切换列表中记录的所述第一节点最后一条日志流水号是否大于第一日志流水号,以防止该条日志是在主节点变更后原主节点产生的。根据切换列表中记录的第一节点最后一条日志流水号与第一日志流水号的大小比较结果,仅会同步主节点变更前原主节点产生的日志,避免数据混乱的问题。这样,即使主节点发生数据变更,备节点仍可以保证按序同步主节点的数据,而无需在主节点切换后手动同步增量数据给备节点。当确定出所述切换列表中记录的所述第一节点最后一条日志流水号大于所述第一日志流水号时,则根据第一节点产生的增量数据更新第二节点中的数据,使得第一节点中的数据与第二节点中的数据同步成功。
采用本发明实施例的技术方案,当正常集群内主备节点即第一节点和第二节点之间数据失步时,即使第一节点发生数据变更,第二节点仍可以保证按序同步第一节点的数据,而无需在第一节点切换后手动同步增量数据给第二节点,这样,第二节点能够快速接管第一节点的数据,从而进一步提高分布式数据库系统的可靠性和高性能服务。
图4为本发明实施例提供的另一种数据同步的方法的应用场景示意图,如图4所示,假设数据库集群内有4个数据库节点,分别为1个主节点和3个备节点,这四个节点的节点ID分别为node1、node2、node3和node4;其中,node1为主节点,node2、node3和node4为备节点。需要说明的是,node2和node3与node1是同局数据库中的节点,node4与node1是跨局数据库中的节点,也即node1、node2、node3为主局节点,node4为备局节点。在该应用场景下,假设检测到主局中的节点出现故障,业务即将切换到跨局数据库中的备局节点(容灾局节点),此时,node4主动向主局中的各节点如node1、node2、node3发起用于获取增量数据的请求消息,在node1、node2、node3接收到该请求消息后,分别判断node4数据和对应本节点数据是否为一个序列,若是,则将node1、node2、node3各自生成的增量数据发送给node4,在node4接收到node1、node2、node3的增量数据后,应用增量数据到数据库,node4切换为新的主节点,并接管主局中节点的业务。
基于上述图4所示的应用场景,下面以备局节点为第一节点,主局节点为第二节点为例,对本发明实施例的数据同步的方法的实现过程进行说明。图5为本发明实施例提供的另一种数据同步的方法的实现流程示意图,所述数据同步的方法可应用于服务器中;如图5所示,本发明实施例中数据同步的方法的实现流程,可以包括以下步骤:
步骤501:接收第一节点发送的用于获取增量数据的请求消息;其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序。
在本发明实施例中,在执行本步骤501之前,所述方法还包括:接收至少一个客户端发送的数据更新请求,基于所述数据更新请求生成所述增量数据。
其中,数据更新的类型至少包括以下之一:增加、修改和删除。
这里,所述客户端可以包括但不限于智能手机、平板电脑、掌上电脑等各种类型的客户端。当客户端的数据发生变更时,客户端可通过API接口向第二节点发送数据更新请求,该数据更新请求有可能会导致第二节点新增数据、修改数据或删除数据,从而使第二节点产生增量数据。
步骤502:判断所述第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号。
这里,若判断出第一日志流水号小于等于第二节点当前时刻最新数据对应的第二日志流水号,则继续执行步骤503;若判断出第一日志流水号大于第二节点当前时刻最新数据对应的第二日志流水号,则确定第一节点中的数据与第二节点中的数据同步失败。可见,通过判断所述第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号,可以保证第二节点中的数据与第一节点中的数据在顺序上的一致性。
步骤503:确定所述第一日志流水号小于等于所述第二日志流水号时,根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点;其中,所述第一节点和所述第二节点为跨局数据库节点。
本发明实施例中,当确定出所述第一日志流水号小于等于所述第二日志流水号时,对于本步骤503中的根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点来说,可以采用以下方式来实现:判断所述第一标识信息与所述第一节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第二节点成为主节点的时间,与所述第一节点变更为主节点的时间是否匹配;确定所述第二节点成为主节点的时间与所述第一节点变更为主节点的时间匹配成功时,将所述第二节点产生的增量数据发送给所述第一节点。
这里,第一标识信息存储于日志流水号的日志中,所述第一节点变更为主节点的第二标识信息、第二节点成为主节点的时间以及第一节点变更为主节点的时间存储于切换列表中。需要说明的是,当第二节点为多个时,则可将各第二节点产生的增量数据打包,并将打包后的增量数据发送给第一节点。
本发明实施例中,通过判断第一标识信息是否等于第一节点变更为主节点的第二标识信息,以及判断第二节点成为主节点的时间,与第一节点变更为主节点的时间是否相等这两个条件,来保证第二节点中的本条日志与第一节点同步数据前的上一条日志是同一个第二节点即主局节点产生的,避免出现不同主节点在不同业务下产生的日志混乱的问题。
本发明实施例中,在确定产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,所述方法还包括:确定从切换列表中是否查找到所述第一标识信息;确定查找到所述第一标识信息时,判断所述第二节点成为主节点的时间,与所述切换列表中记录的所述第二节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第二节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第二节点最后一条日志流水号大于所述第一日志流水号时,将所述第二节点产生的增量数据发送给所述第一节点。
这里,只要从切换列表中未查找到所述第一标识信息,或者在查找到第一标识信息之后,判断出第二节点成为主节点的时间与切换列表中记录的所述第二节点成为主节点的时间不相等时,则可确定第一节点中的数据与第二节点中的数据同步失败。由于考虑到日志会延迟到达第一节点,因此会出现第二节点即主局节点已经发生变更,但是日志还未到达第一节点的情况,那么,可以判断下该日志是不是之前的主局节点产生的,并且还要严格判断第二节点成为主节点的时间与切换列表中记录的所述第二节点成为主节点的时间是否匹配。
本发明实施例中,如果该条日志是原主局节点产生的,则还需判断原局主节点即第二节点中最后一条日志流水号是否大于当前接收到的日志流水号,即判断切换列表中记录的所述第二节点最后一条日志流水号是否大于第一日志流水号,以防止该条日志是在主局节点变更后原主局节点产生的。根据切换列表中记录的所述第二节点最后一条日志流水号与第一日志流水号的大小比较结果,仅会同步主局节点变更前原局主节点产生的日志,避免数据混乱的问题。这样,在容灾局接管的场景下,对于主局节点产生的增量数据也无需手动同步到备局,从而备局可以快速接管主局中的数据。当确定出所述切换列表中记录的所述第二节点最后一条日志流水号大于所述第一日志流水号时,则将第二节点产生的增量数据发送给第一节点,根据第二节点产生的增量数据更新第一节点中的数据,使得第一节点中的数据与第二节点中的数据同步成功。
基于上述图4所示的应用场景,下面以备局节点为第一节点,主局节点为第二节点为例,对本发明实施例的数据同步的方法的具体实现过程做进一步地详细说明。图6为本发明实施例提供的另一种数据同步的方法的具体实现流程示意图,所述数据同步的方法可应用于服务器中;如图6所示,所述数据同步的方法的具体实现流程,可以包括以下步骤:
步骤601:接收第一节点发送的用于获取增量数据的请求消息;其中,请求消息中携带有第一日志流水号。
在本发明实施例中,所述第一日志流水号用于表征所述第一节点中不同数据的时序。
这里,在接收第一节点发送的用于获取增量数据的请求消息之前,所述方法还包括:接收至少一个客户端发送的数据更新请求,基于所述数据更新请求生成所述增量数据。
其中,数据更新的类型至少包括以下之一:增加、修改和删除。
这里,所述客户端可以包括但不限于智能手机、平板电脑、掌上电脑等各种类型的客户端。当客户端的数据发生变更时,客户端可通过API接口向第二节点发送数据更新请求,该数据更新请求有可能会导致第二节点新增数据、修改数据或删除数据,从而使第二节点产生增量数据。
步骤602:判断第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号,若小于等于,则执行步骤603,否则跳转至步骤608。
步骤603:确定第一日志流水号小于等于第二日志流水号时,判断产生第二日志流水号的第二节点的第一标识信息,以及第二节点成为主节点的时间与相应设定条件是否均匹配成功,若两者均匹配成功,则执行步骤604,否则执行步骤605。
在本发明实施例中,对于判断产生第二日志流水号的第二节点的第一标识信息,以及第二节点成为主节点的时间与相应设定条件是否均匹配成功,可以采用以下方式实现:判断所述第一标识信息与所述第一节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第二节点成为主节点的时间,与所述第一节点变更为主节点的时间是否匹配。这里,当确定所述第二节点成为主节点的时间与所述第一节点变更为主节点的时间匹配成功时,则执行步骤604。
步骤604:将第二节点产生的增量数据发送给第一节点,并跳转至步骤608。
这里,在第一节点接收到第二节点产生的增量数据之后,将增量数据应用到数据库中,以更新第一节点中的数据,在应用成功后第一节点切换为新的主局节点,并接管业务。
在本发明实施例中,通过判断第一标识信息是否等于第一节点变更为主节点的第二标识信息,以及判断第二节点成为主节点的时间,与第一节点变更为主节点的时间是否相等这两个条件,来保证第二节点中的本条日志与第一节点同步数据前的上一条日志是同一个第二节点即主局节点产生的,避免出现不同主节点在不同业务下产生的日志混乱的问题。
步骤605:从切换列表中是否查找到第一标识信息,若可以查找到,则执行步骤606,否则跳转至步骤608。
步骤606:判断第二节点成为主节点的时间,与切换列表中记录的第二节点成为主节点的时间是否匹配,若匹配成功,则执行步骤607,否则跳转至步骤608。
步骤607:判断切换列表中记录的第二节点最后一条日志流水号是否大于第一日志流水号,若大于,则返回步骤604,否则跳转至步骤608。
步骤608:结束当前处理流程。
本发明实施例中,只要从切换列表中未查找到所述第一标识信息,或者在查找到第一标识信息之后,判断出第二节点成为主节点的时间与切换列表中记录的所述第二节点成为主节点的时间不相等时,则可确定第一节点中的数据与第二节点中的数据同步失败。由于考虑到日志会延迟到达第一节点,因此会出现第二节点即主局节点已经发生变更,但是日志还未到达第一节点的情况,那么,可以判断下该日志是不是之前的主局节点产生的,并且还要严格判断第二节点成为主节点的时间与切换列表中记录的所述第二节点成为主节点的时间是否匹配。
本发明实施例中,如果该条日志是原主局节点产生的,则还需判断原局主节点即第二节点中最后一条日志流水号是否大于当前接收到的日志流水号,即判断切换列表中记录的所述第二节点最后一条日志流水号是否大于第一日志流水号,以防止该条日志是在主局节点变更后原主局节点产生的。根据切换列表中记录的第二节点最后一条日志流水号与第一日志流水号的大小比较结果,仅会同步主局节点变更前原局主节点产生的日志,避免数据混乱的问题。这样,在容灾局接管的场景下,对于主局节点产生的增量数据也无需手动同步到备局,从而备局可以快速接管主局中的数据。当确定出所述切换列表中记录的所述第二节点最后一条日志流水号大于所述第一日志流水号时,则将第二节点产生的增量数据发送给第一节点,根据第二节点产生的增量数据更新第一节点中的数据,使得第一节点中的数据与第二节点中的数据同步成功。
采用本发明实施例的技术方案,在容灾局接管的场景下,当主局节点出现故障,业务即将切换到备局节点时,对于主局产生的增量数据也无需手动同步到备局,备局可以快速接管主局的数据,从而进一步提高分布式数据库系统的可靠性和高性能服务。
为了实现上述数据同步的方法,本发明实施例还提供了一种数据同步的装置,该数据同步的装置可应用于服务器中,图7为本发明实施例提供的一种数据同步的装置的功能结构示意图;如图7所示,该数据同步的装置包括第一接收模块71、第一判断模块72、第二判断模块73和第二接收模块74。下面对上述各模块的功能进行详细说明。
所述第一接收模块71,用于接收第一节点发送的同步增量数据的请求消息;其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
所述第一判断模块72,用于判断所述第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号;
所述第二判断模块73,用于所述第一判断模块72确定所述第一日志流水号接续所述第二日志流水号时,判断产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件是否匹配;
所述第二接收模块74,用于根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据。
在本发明实施例中,所述第一节点主动同步的增量数据可通过下述方法确定:所述第一节点接收至少一个客户端发送的数据更新请求,基于所述数据更新请求生成所述增量数据。
其中,数据更新的类型至少包括以下之一:增加、修改和删除。
这里,所述客户端可以包括但不限于智能手机、平板电脑、掌上电脑等各种类型的客户端。当客户端的数据发生变更时,客户端可通过API向第一节点发送数据更新请求,该数据更新请求有可能会导致第一节点新增数据、修改数据或删除数据,从而使第一节点产生增量数据。
在本发明实施例中,对于所述第二接收模块74根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据来说,可以采用如下方式实现:判断所述第一标识信息与所述第二节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第一节点成为主节点的时间,与所述第二节点变更为主节点的时间是否匹配;确定所述第一节点成为主节点的时间与所述第二节点变更为主节点的时间匹配成功时,接收所述第一节点主动同步的增量数据,根据所述增量数据更新所述第二节点中的数据。
在本发明实施例中,所述装置还包括:查找模块,用于在所述第二判断模块73确定产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,确定从切换列表中是否查找到所述第一标识信息。
所述接收模块74,还用于确定查找到所述第一标识信息时,判断所述第一节点成为主节点的时间,与所述切换列表中记录的所述第一节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第一节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第一节点最后一条日志流水号大于所述第一日志流水号时,基于所述请求消息接收所述第一节点主动同步的增量数据。
图8为本发明实施例提供的另一种数据同步的装置的功能结构示意图,如图8所示,该数据同步的装置包括第三接收模块81、第三判断模块82、第四判断模块83和发送模块84。下面对上述各模块的功能进行详细说明。
所述第三接收模块81,用于接收第一节点发送的用于获取增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
所述第三判断模块82,用于判断所述第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号;
所述第四判断模块83,用于所述第三判断模块82确定所述第一日志流水号小于等于所述第二日志流水号时,判断产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件是否匹配;
所述发送模块84,用于根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点;其中,所述第一节点和所述第二节点为跨局数据库节点。
在本发明实施例中,对于所述发送模块84根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点来说,可以采用以下方式来实现:判断所述第一标识信息与所述第一节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第二节点成为主节点的时间,与所述第一节点变更为主节点的时间是否匹配;确定所述第二节点成为主节点的时间与所述第一节点变更为主节点的时间匹配成功时,将所述第二节点产生的增量数据发送给所述第一节点。
在本发明实施例中,所述查找模块,还用于在所述第四判断模块83确定产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,确定从切换列表中是否查找到所述第一标识信息。
所述发送模块84,还用于确定查找到所述第一标识信息时,判断所述第二节点成为主节点的时间,与所述切换列表中记录的所述第二节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第二节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第二节点最后一条日志流水号大于所述第一日志流水号时,将所述第二节点产生的增量数据发送给所述第一节点。
在本发明实施例中,所述装置还包括:第四接收模块,用于在所述第三接收模块81接收第一节点发送的用于获取增量数据的请求消息之前,接收至少一个客户端发送的数据更新请求;
生成模块,用于基于所述数据更新请求生成所述增量数据。
这里,数据更新的类型至少包括以下之一:增加、修改和删除。
需要说明的是:上述实施例提供的数据同步的装置在进行数据同步时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将数据同步的装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据同步的装置与数据同步的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再详细赘述。
在实际应用中,上述各程序模块均可由位于服务器上的中央处理器(CPU,CentralProcessing Unit)、微处理器(MPU,Micro Processor Unit)、数字信号处理器(DSP,Digital Signal Processor)或现场可编程门阵列(FPGA,Field Programmable GateArray)等实现。
为了实现上述数据同步的方法,本发明实施例还提供了一种数据同步的装置的硬件结构。现在将参考附图描述实现本发明实施例的数据同步的装置,所述数据同步的装置可以以各种形式的服务器如云服务器来实施。下面对本发明实施例的数据同步的装置的硬件结构做进一步说明,可以理解,图9仅仅示出了数据同步的装置的示例性结构而非全部结构,根据需要可以实施图9示出的部分结构或全部结构。
参见图9,图9为本发明实施例提供的一种数据同步的装置的硬件结构示意图,实际应用中可以应用于运行应用程序的各种服务器,图9所示的数据同步的装置900包括:至少一个处理器901、存储器902、用户接口903和至少一个网络接口904。所述数据同步的装置900中的各个组件通过总线系统905耦合在一起。可以理解,总线系统905用于实现这些组件之间的连接通信。总线系统905除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为总线系统905。
其中,用户接口903可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
可以理解,存储器902可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。
本发明实施例中的存储器902用于存储各种类型的数据以支持数据同步的装置900的操作。这些数据的示例包括:用于在数据同步的装置900上操作的任何可执行指令,如可执行程序9021和操作系统9022,实现本发明实施例的数据同步的方法的程序可以包含在可执行程序9021中。
本发明实施例揭示的数据同步的方法可以应用于处理器901中,或者由处理器901实现。处理器901可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述数据同步的方法的各步骤可以通过处理器901中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器901可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器901可以实现或者执行本发明实施例中提供的各数据同步的方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所提供的数据同步的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器902,处理器901读取存储器902中的信息,结合其硬件完成本发明实施例提供的数据同步的方法的步骤。
本发明实施例中,所述数据同步的装置900包括存储器902,用于存储可执行指令;处理器901,用于执行所述可执行指令时实现:接收第一节点发送的同步增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;判断所述第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号;确定所述第一日志流水号接续所述第二日志流水号时,根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据。
作为一种实施方式,所述处理器901执行所述可执行指令时实现:判断所述第一标识信息与所述第二节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第一节点成为主节点的时间,与所述第二节点变更为主节点的时间是否匹配;确定所述第一节点成为主节点的时间与所述第二节点变更为主节点的时间匹配成功时,接收所述第一节点主动同步的增量数据,根据所述增量数据更新所述第二节点中的数据。
作为一种实施方式,所述处理器901执行所述可执行指令时实现:在确定产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,确定从切换列表中是否查找到所述第一标识信息;确定查找到所述第一标识信息时,判断所述第一节点成为主节点的时间,与所述切换列表中记录的所述第一节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第一节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第一节点最后一条日志流水号大于所述第一日志流水号时,基于所述请求消息接收所述第一节点主动同步的增量数据。
在本发明另一实施例中,所述数据同步的装置900包括存储器902,用于存储可执行指令;处理器901,用于执行所述可执行指令时实现:接收第一节点发送的用于获取增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;判断所述第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号;确定所述第一日志流水号小于等于所述第二日志流水号时,根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点;其中,所述第一节点和所述第二节点为跨局数据库节点。
作为一种实施方式,所述处理器901执行所述可执行指令时实现:判断所述第一标识信息与所述第一节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第二节点成为主节点的时间,与所述第一节点变更为主节点的时间是否匹配;确定所述第二节点成为主节点的时间与所述第一节点变更为主节点的时间匹配成功时,将所述第二节点产生的增量数据发送给所述第一节点。
作为一种实施方式,所述处理器901执行所述可执行指令时实现:在确定产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,确定从切换列表中是否查找到所述第一标识信息;确定查找到所述第一标识信息时,判断所述第二节点成为主节点的时间,与所述切换列表中记录的所述第二节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第二节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第二节点最后一条日志流水号大于所述第一日志流水号时,将所述第二节点产生的增量数据发送给所述第一节点。
作为一种实施方式,所述处理器901执行所述可执行指令时实现:在所述接收第一节点发送的用于获取增量数据的请求消息之前,接收至少一个客户端发送的数据更新请求,基于所述数据更新请求生成所述增量数据。
在示例性实施例中,本发明实施例还提供了一种存储介质,所述存储介质可为光盘、闪存或磁盘等存储介质,可选为非瞬间存储介质。其中,所述存储介质存储有可执行指令,所述可执行指令被处理器901执行时实现:接收第一节点发送的同步增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;判断所述第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号;确定所述第一日志流水号接续所述第二日志流水号时,根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据。
作为一种实施方式,所述可执行指令被处理器901执行时实现:判断所述第一标识信息与所述第二节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第一节点成为主节点的时间,与所述第二节点变更为主节点的时间是否匹配;确定所述第一节点成为主节点的时间与所述第二节点变更为主节点的时间匹配成功时,接收所述第一节点主动同步的增量数据,根据所述增量数据更新所述第二节点中的数据。
作为一种实施方式,所述可执行指令被处理器901执行时实现:在确定产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,确定从切换列表中是否查找到所述第一标识信息;确定查找到所述第一标识信息时,判断所述第一节点成为主节点的时间,与所述切换列表中记录的所述第一节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第一节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第一节点最后一条日志流水号大于所述第一日志流水号时,基于所述请求消息接收所述第一节点主动同步的增量数据。
在本发明另一实施例中,所述存储介质存储有可执行指令,所述可执行指令被处理器901执行时实现:接收第一节点发送的用于获取增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;判断所述第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号;确定所述第一日志流水号小于等于所述第二日志流水号时,根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点;其中,所述第一节点和所述第二节点为跨局数据库节点。
作为一种实施方式,所述可执行指令被处理器901执行时实现:判断所述第一标识信息与所述第一节点变更为主节点的第二标识信息是否匹配;确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第二节点成为主节点的时间,与所述第一节点变更为主节点的时间是否匹配;确定所述第二节点成为主节点的时间与所述第一节点变更为主节点的时间匹配成功时,将所述第二节点产生的增量数据发送给所述第一节点。
作为一种实施方式,所述可执行指令被处理器901执行时实现:在确定产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,确定从切换列表中是否查找到所述第一标识信息;确定查找到所述第一标识信息时,判断所述第二节点成为主节点的时间,与所述切换列表中记录的所述第二节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第二节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第二节点最后一条日志流水号大于所述第一日志流水号时,将所述第二节点产生的增量数据发送给所述第一节点。
作为一种实施方式,所述可执行指令被处理器901执行时实现:在所述接收第一节点发送的用于获取增量数据的请求消息之前,接收至少一个客户端发送的数据更新请求,基于所述数据更新请求生成所述增量数据。
综上所述,本发明实施例当正常集群内主备节点之间数据失步时,即使第一节点发生数据变更,第二节点仍可以保证按序同步第一节点的数据,而无需在第一节点切换后手动同步增量数据给第二节点,这样,第二节点能够快速接管第一节点的数据,从而进一步提高分布式数据库系统的可靠性和高性能服务。并且,在容灾局接管的场景下,主局节点出现故障,业务即将切换到备局节点时,对于主局产生的增量数据也无需手动同步到备局,备局可以快速接管主局的数据,从而进一步提高分布式数据库系统的可靠性和高性能服务。
本领域技术人员应当理解,本发明实施例所记载的各技术方案之间,在不冲突的情况下,可以任意组合。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或可执行程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的可执行程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和可执行程序产品的流程图和/或方框图来描述的。应理解可由可执行程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些可执行程序指令到通用计算机、专用计算机、嵌入式处理机或参考可编程数据处理设备的处理器以产生一个机器,使得通过计算机或参考可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些可执行程序指令也可存储在能引导计算机或参考可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些可执行程序指令也可装载到计算机或参考可编程数据处理设备上,使得在计算机或参考可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或参考可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种数据同步的方法,其特征在于,所述方法包括:
接收第一节点发送的同步增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
判断所述第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号;
确定所述第一日志流水号接续所述第二日志流水号时,根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据;所述第一节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,所述方法还包括:
确定从切换列表中是否查找到所述第一标识信息;
确定查找到所述第一标识信息时,判断所述第一节点成为主节点的时间,与所述切换列表中记录的所述第一节点成为主节点的时间是否匹配;
确定匹配成功时,判断所述切换列表中记录的所述第一节点最后一条日志流水号是否大于所述第一日志流水号;
确定所述切换列表中记录的所述第一节点最后一条日志流水号大于所述第一日志流水号时,基于所述请求消息接收所述第一节点主动同步的增量数据。
2.根据权利要求1所述的数据同步的方法,其特征在于,所述根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据,包括:
判断所述第一标识信息与所述第二节点变更为主节点的第二标识信息是否匹配;
确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第一节点成为主节点的时间,与所述第二节点变更为主节点的时间是否匹配;
确定所述第一节点成为主节点的时间与所述第二节点变更为主节点的时间匹配成功时,接收所述第一节点主动同步的增量数据,根据所述增量数据更新所述第二节点中的数据。
3.一种数据同步的方法,其特征在于,所述方法包括:
接收第一节点发送的用于获取增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
判断所述第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号;
确定所述第一日志流水号小于等于所述第二日志流水号时,根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点;其中,所述第一节点和所述第二节点为跨局数据库节点;
所述第二节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,所述方法还包括:
确定从切换列表中是否查找到所述第一标识信息;
确定查找到所述第一标识信息时,判断所述第二节点成为主节点的时间,与所述切换列表中记录的所述第二节点成为主节点的时间是否匹配;
确定匹配成功时,判断所述切换列表中记录的所述第二节点最后一条日志流水号是否大于所述第一日志流水号;
确定所述切换列表中记录的所述第二节点最后一条日志流水号大于所述第一日志流水号时,将所述第二节点产生的增量数据发送给所述第一节点。
4.根据权利要求3所述的数据同步的方法,其特征在于,所述根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点,包括:
判断所述第一标识信息与所述第一节点变更为主节点的第二标识信息是否匹配;
确定所述第一标识信息与所述第二标识信息匹配成功时,判断所述第二节点成为主节点的时间,与所述第一节点变更为主节点的时间是否匹配;
确定所述第二节点成为主节点的时间与所述第一节点变更为主节点的时间匹配成功时,将所述第二节点产生的增量数据发送给所述第一节点。
5.根据权利要求3所述的数据同步的方法,其特征在于,在所述接收第一节点发送的用于获取增量数据的请求消息之前,所述方法还包括:
接收至少一个客户端发送的数据更新请求,基于所述数据更新请求生成所述增量数据;
其中,数据更新的类型至少包括以下之一:增加、修改和删除。
6.一种数据同步的装置,其特征在于,所述装置包括:第一接收模块、第一判断模块、第二判断模块和第二接收模块;其中,
所述第一接收模块,用于接收第一节点发送的同步增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
所述第一判断模块,用于判断所述第一日志流水号是否接续第二节点当前时刻最新数据对应的第二日志流水号;
所述第二判断模块,用于所述第一判断模块确定所述第一日志流水号接续所述第二日志流水号时,判断产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件是否匹配;
所述第二接收模块,用于根据产生所述第一日志流水号的第一节点的第一标识信息,以及所述第一节点成为主节点的时间与相应设定条件匹配成功的结果,基于所述请求消息接收所述第一节点主动同步的增量数据;以及所述第一节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,确定从切换列表中是否查找到所述第一标识信息;
所述第二接收模块,还用于确定查找到所述第一标识信息时,判断所述第一节点成为主节点的时间,与所述切换列表中记录的所述第一节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第一节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第一节点最后一条日志流水号大于所述第一日志流水号时,基于所述请求消息接收所述第一节点主动同步的增量数据。
7.一种数据同步的装置,其特征在于,所述装置包括:第三接收模块、第三判断模块、第四判断模块和发送模块;其中,
所述第三接收模块,用于接收第一节点发送的用于获取增量数据的请求消息,其中,所述请求消息中携带有第一日志流水号,所述第一日志流水号用于表征所述第一节点中不同数据的时序;
所述第三判断模块,用于判断所述第一日志流水号是否小于等于第二节点当前时刻最新数据对应的第二日志流水号;
所述第四判断模块,用于所述第三判断模块确定所述第一日志流水号小于等于所述第二日志流水号时,判断产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件是否匹配;
所述发送模块,用于根据产生所述第二日志流水号的第二节点的第一标识信息,以及所述第二节点成为主节点的时间与相应设定条件匹配成功的结果,将所述第二节点产生的增量数据发送给所述第一节点;其中,所述第一节点和所述第二节点为跨局数据库节点;以及所述第二节点成为主节点的时间中的至少之一与相应设定条件匹配失败时,确定从切换列表中是否查找到所述第一标识信息;
所述发送模块,还用于确定查找到所述第一标识信息时,判断所述第二节点成为主节点的时间,与所述切换列表中记录的所述第二节点成为主节点的时间是否匹配;确定匹配成功时,判断所述切换列表中记录的所述第二节点最后一条日志流水号是否大于所述第一日志流水号;确定所述切换列表中记录的所述第二节点最后一条日志流水号大于所述第一日志流水号时,将所述第二节点产生的增量数据发送给所述第一节点。
8.一种数据同步的装置,其特征在于,所述装置包括:
存储器,用于存储可执行指令;
处理器,用于执行所述可执行指令时,实现如权利要求1至2任一项所述的数据同步的方法,或者如权利要求3至5任一项所述的数据同步的方法。
9.一种存储介质,其特征在于,存储有可执行指令,所述可执行指令被执行时,用于实现如权利要求1至2任一项所述的数据同步的方法,或者如权利要求3至5任一项所述的数据同步的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810681964.5A CN108881452B (zh) | 2018-06-27 | 2018-06-27 | 一种数据同步的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810681964.5A CN108881452B (zh) | 2018-06-27 | 2018-06-27 | 一种数据同步的方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108881452A CN108881452A (zh) | 2018-11-23 |
CN108881452B true CN108881452B (zh) | 2021-11-16 |
Family
ID=64296128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810681964.5A Active CN108881452B (zh) | 2018-06-27 | 2018-06-27 | 一种数据同步的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108881452B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188118B (zh) * | 2019-04-25 | 2021-06-25 | 广州至真信息科技有限公司 | 一种数据同步方法、装置 |
CN110109934B (zh) * | 2019-05-08 | 2021-07-30 | 上海达梦数据库有限公司 | 一种数据库管理方法、装置、服务器及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106477A (zh) * | 2006-07-12 | 2008-01-16 | 中兴通讯股份有限公司 | 基于流水号生成增量数据的方法 |
CN102609479A (zh) * | 2012-01-20 | 2012-07-25 | 北京神州数码思特奇信息技术股份有限公司 | 一种内存数据库节点复制方法 |
CN105049258A (zh) * | 2015-08-14 | 2015-11-11 | 深圳市傲冠软件股份有限公司 | 网络容灾系统的数据传输方法 |
CN106254100A (zh) * | 2016-07-27 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 一种数据容灾方法、装置和系统 |
CN106657169A (zh) * | 2015-10-28 | 2017-05-10 | 北京京东尚科信息技术有限公司 | 一种Redis中主从节点数据同步方法 |
CN107729515A (zh) * | 2017-10-26 | 2018-02-23 | 咪咕文化科技有限公司 | 一种数据同步的方法、装置及存储介质 |
-
2018
- 2018-06-27 CN CN201810681964.5A patent/CN108881452B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106477A (zh) * | 2006-07-12 | 2008-01-16 | 中兴通讯股份有限公司 | 基于流水号生成增量数据的方法 |
CN102609479A (zh) * | 2012-01-20 | 2012-07-25 | 北京神州数码思特奇信息技术股份有限公司 | 一种内存数据库节点复制方法 |
CN105049258A (zh) * | 2015-08-14 | 2015-11-11 | 深圳市傲冠软件股份有限公司 | 网络容灾系统的数据传输方法 |
CN106657169A (zh) * | 2015-10-28 | 2017-05-10 | 北京京东尚科信息技术有限公司 | 一种Redis中主从节点数据同步方法 |
CN106254100A (zh) * | 2016-07-27 | 2016-12-21 | 腾讯科技(深圳)有限公司 | 一种数据容灾方法、装置和系统 |
CN107729515A (zh) * | 2017-10-26 | 2018-02-23 | 咪咕文化科技有限公司 | 一种数据同步的方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108881452A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6382454B2 (ja) | 分散ストレージ及びレプリケーションシステム、並びに方法 | |
EP2834759B1 (en) | Telemetry system for a cloud synchronization system | |
US9934242B2 (en) | Replication of data between mirrored data sites | |
CN107729515B (zh) | 一种数据同步的方法、装置及存储介质 | |
CN105069152B (zh) | 数据处理方法及装置 | |
CN108566291B (zh) | 一种事件处理的方法、服务器及系统 | |
CN111104069A (zh) | 分布式存储系统的多区域数据处理方法、装置及电子设备 | |
CN108881452B (zh) | 一种数据同步的方法、装置及存储介质 | |
CN111049928A (zh) | 数据同步方法、系统、电子设备及计算机可读存储介质 | |
CN116680256B (zh) | 数据库节点升级方法、装置和计算机设备 | |
CN106817387B (zh) | 一种数据同步方法、装置和系统 | |
CN111865632A (zh) | 分布式数据存储集群的切换方法及切换指令发送方法和装置 | |
CN106873902B (zh) | 一种文件存储系统、数据调度方法及数据节点 | |
CN113259476B (zh) | 消息推送方法及系统 | |
WO2021082925A1 (zh) | 一种交易处理的方法及装置 | |
CN111241200B (zh) | 基于SQLite数据库的主备同步处理方法及装置 | |
CN112000850A (zh) | 进行数据处理的方法、装置、系统及设备 | |
EP3868071B1 (en) | Distributed state recovery in a system having dynamic reconfiguration of participating nodes | |
CN107623705B (zh) | 基于视频云存储系统的存储模式升级方法、装置和系统 | |
CN109992447B (zh) | 数据复制方法、装置及存储介质 | |
CN111147226A (zh) | 数据存储方法、装置及存储介质 | |
US20240028611A1 (en) | Granular Replica Healing for Distributed Databases | |
CN111083192B (zh) | 数据共识方法、装置及电子设备 | |
CN111522688B (zh) | 分布式系统的数据备份方法及装置 | |
CN113515574A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |