CN112000678A - 数据同步方法、装置、服务器及存储介质 - Google Patents
数据同步方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN112000678A CN112000678A CN202010845411.6A CN202010845411A CN112000678A CN 112000678 A CN112000678 A CN 112000678A CN 202010845411 A CN202010845411 A CN 202010845411A CN 112000678 A CN112000678 A CN 112000678A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- service data
- database
- data synchronization
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种获取数据变更日志;所述数据变更日志为第一节点的数据库中的业务数据发生变更时生成的日志;根据所述数据变更日志,确定所述第一节点的数据库中的变更业务数据;所述变更业务数据携带有源节点标志位;所述源节点标志位用于表征首次写入所述变更业务数据的节点对应的节点信息;当所述源节点标志位中的节点标志与所述第一节点对应的节点标志相同时,将所述变更业务数据同步至第二节点的数据库中。该公开能够降低现有技术中的数据同步方法的维护成本。
Description
技术领域
本公开涉及数据库技术领域,尤其涉及一种数据同步方法、装置、服务器及存储介质。
背景技术
当企业互联网业务到达一定规模后,往往会考虑做多数据中心。一方面可能是面临业务增长带来的挑战,单个数据中心变得难以支撑;另一方面出于对业务容灾的考量,也可能在多个城市建立数据中心达到容灾目的;还有可能本身就是全球化的业务,用户遍布在全世界各个角落,为了提升用户体验,也需要建立多数据中心。为了保障各个数据中心的业务数据保持同步,在相关技术中往往采用基于回环控制机制的双向复制方法来对各个数据中心的业务数据产生的变更数据进行同步。
目前的回环控制机制往往采用的是基于MySQL内核过滤的方案,即通过更改MySQL内核源码来适配DTS进而实现回环控制,然而采用该方案往往需要DBA团队可以熟练且准确地对MYSQL源码进行改写操作,这对DBA团队的专业水平具有较高的要求,且需要浪费更多的时间和人力对MySQL进行更新及维护上。
因此,相关技术中的数据同步方法存在维护成本较高的问题。
发明内容
本公开提供一种数据同步方法、装置、服务器及存储介质,以至少解决相关技术中存在数据同步方法存在维护成本较高的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据同步方法,包括:
获取数据变更日志;所述数据变更日志为第一节点的数据库中的业务数据发生变更时生成的日志;
根据所述数据变更日志,确定所述第一节点的数据库中的变更业务数据;所述变更业务数据携带有源节点标志位;所述源节点标志位用于表征首次写入所述变更业务数据的节点对应的节点信息;
当所述源节点标志位中的节点标志与所述第一节点对应的节点标志相同时,将所述变更业务数据同步至第二节点的数据库中。
在一示例性实施例中,在所述获取数据变更日志的步骤之前,所述方法还包括:
接收所述第二节点发送的数据同步消息;所述数据同步消息携带有待同步业务数据;所述第二节点对应的节点标志与所述待同步业务数据携带的源节点标志位中的节点标志相同;
根据所述数据同步消息,生成所述待同步业务数据的数据同步指令;
通过执行所述数据同步指令,以将所述待同步业务数据从所述第二节点的数据库同步至所述第一节点的数据库。
在一示例性实施例中,所述根据所述数据同步消息,生成所述待同步业务数据的数据同步指令,包括:
解析所述数据同步消息,确定所述数据同步消息对应的消息格式;
基于所述消息格式,对针对所述待同步数据的多个待拼接的指令语句进行拼接处理,得到所述待同步数据的数据同步指令。
在一示例性实施例中,所述方法还包括:
接收数据写入指令;所述数据写入指令携带有待写入业务数据;
通过执行所述数据写入指令,以将所述待写入业务数据写入至所述第一节点的数据库;
生成所述待写入业务数据的数据变更日志。
在一示例性实施例中,所述通过执行所述数据写入指令,以将所述待写入业务数据写入至所述第一节点的数据库,包括:
确定所述待写入业务数据携带的源节点标志位;
将所述待写入业务数据携带的源节点标志位中的节点标志设置为与所述第一节点对应的节点标志相同的节点标志。
在一示例性实施例中,所述将所述第一节点的数据库中的变更数据同步至第二节点的数据库中,包括:
生成所述变更业务数据的数据同步消息;
通过订阅中间件的方式,将所述变更业务数据的数据同步消息转发至所述第二节点,以使所述第二节点在接收到所述变更业务数据的数据同步消息后,将所述变更业务数据写入至所述第二节点的数据库中。
在一示例性实施例中,在所述读取所述源节点标志位中的节点标志的步骤之后,还包括:
当所述源节点标志位中的节点标志与所述第一节点对应的标志不一致时,则不执行所述将所述变更业务数据同步至第二节点的数据库中的步骤。
根据本公开实施例的第二方面,提供一种数据同步装置,包括:
获取单元,被配置为执行获取数据变更日志;所述数据变更日志为第一节点的数据库中的业务数据发生变更时生成的日志;
确定单元,被配置为执行根据所述数据变更日志,确定所述第一节点的数据库中的变更业务数据;所述变更业务数据携带有源节点标志位;所述源节点标志位用于表征首次写入所述变更业务数据的节点对应的节点信息;
同步单元,被配置为执行当所述源节点标志位中的节点标志与所述第一节点对应的节点标志相同时,将所述变更业务数据同步至第二节点的数据库中。
在一示例性实施例中,上述的一种数据同步装置,还包括:接收单元,被配置为执行接收所述第二节点发送的数据同步消息;所述数据同步消息携带有待同步业务数据;所述第二节点对应的节点标志与所述待同步业务数据携带的源节点标志位中的节点标志相同;生成单元,被配置为执行根据所述数据同步消息,生成所述待同步业务数据的数据同步指令;执行单元,被配置为执行通过执行所述数据同步指令,以将所述待同步业务数据从所述第二节点的数据库同步至所述第一节点的数据库。
在一示例性实施例中,所述生成单元,具体被配置为执行解析所述数据同步消息,确定所述数据同步消息对应的消息格式;基于所述消息格式,对针对所述待同步数据的多个待拼接的指令语句进行拼接处理,得到所述待同步数据的数据同步指令。
在一示例性实施例中,上述的一种数据同步装置,还包括:指令接收单元,被配置为执行接收数据写入指令;所述数据写入指令携带有待写入业务数据;写入指令执行单元,被配置为执行通过执行所述数据写入指令,以将所述待写入业务数据写入至所述第一节点的数据库;日志生成单元,被配置为执行生成所述待写入业务数据的数据变更日志。
在一示例性实施例中,所述写入指令执行单元,具体被配置为执行确定所述待写入业务数据携带的源节点标志位;将所述待写入业务数据携带的源节点标志位中的节点标志设置为与所述第一节点对应的节点标志相同的节点标志。
在一示例性实施例中,所述同步单元,具体被配置为执行生成所述变更业务数据的数据同步消息;通过订阅中间件的方式,将所述变更业务数据的数据同步消息转发至所述第二节点,以使所述第二节点在接收到所述变更业务数据的数据同步消息后,将所述变更业务数据写入至所述第二节点的数据库中。
在一示例性实施例中,上述的一种数据同步装置,还包括:数据丢弃单元,被配置为执行当所述源节点标志位中的节点标志与所述第一节点对应的标志不一致时,则不执行所述将所述变更业务数据同步至第二节点的数据库中的步骤。
根据本公开实施例的第三方面,提供一种服务器,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面的任一项实施例中所述的数据同步方法。
根据本公开实施例的第四方面,提供一种存储介质,包括:当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行第一方面的任一项实施例中所述的数据同步方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行第一方面的任一项实施例中所述的数据同步方法。
本公开的实施例提供的技术方案至少带来以下有益效果:通过获取第一节点的数据库中的业务数据发生变更时生成的数据变更日志;当根据数据变更日志,确定第一节点的数据库中携带有源节点标志位的变更业务数据,其中,该源节点标志位用于表征首次写入变更业务数据的节点对应的节点信息;当源节点标志位中的节点标志与第一节点对应的节点标志相同时,则将变更业务数据同步至第二节点的数据库中;如此,在无需开发人员对MYSQL源码进行改写操作的前提下,也可以实现在进行主从节点双向复制的过程中实现回环控制机制,进而可以较少在对MySQL进行更新及维护上耗费的时间和人力,降低了数据同步过程中的维护成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种数据同步方法的应用环境图。
图2是根据一示例性实施例示出的一种数据同步方法的流程图。
图3是根据一示例性实施例示出的另一种数据同步方法的流程图。
图4是根据一示例性实施例示出的一种数据同步方法的处理流程图。
图5是根据一示例性实施例示出的一种数据同步装置的框图。
图6是根据一示例性实施例示出的一种电子设备的内部结构图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开所提供的数据同步方法,可以应用于如图1所示的应用环境中。其中,第一节点110通过网络与第二节点120进行通信。其中,第一节点110获取数据变更日志;数据变更日志为第一节点的数据库中的业务数据发生变更时生成的日志。第一节点110根据数据变更日志,确定第一节点的数据库中的变更业务数据;变更业务数据携带有源节点标志位;源节点标志位用于表征首次写入变更业务数据的节点对应的节点信息。当源节点标志位中的节点标志与第一节点对应的节点标志相同时,第一节点110将变更业务数据同步至第二节点120的数据库中。实际应用中,第一节点110和第二节点120均可以服务器集群中的服务器。
图2是根据一示例性实施例示出的一种数据同步方法的流程图,如图2所示,数据同步方法用于图1中的第一节点110,包括以下步骤。
在步骤S210中,获取数据变更日志。
其中,数据变更日志为第一节点的数据库中的业务数据发生变更时生成的日志。
实际应用中,数据变更日志可以使MySQL数据库中binlog(一种二进制日志)。该binlog用于记录用户对数据库操作的SQL语句的信息。
具体实现中,第一节点中的DRC(double replication controller,双向复制工具)获取第一节点的数据库中的业务数据发生变更时生成的数据变更日志即第一节点中的mysql生成的binlog。
在步骤S220中,根据数据变更日志,确定第一节点的数据库中的变更业务数据;变更业务数据携带有源节点标志位。
其中,源节点标志位用于表征首次写入变更业务数据的节点对应的节点信息。
例如,当region tag为0时,则写入该变更业务数据的节点为数据中心A;当regiontag为1时,则写入该变更业务数据的节点为数据中心B。
需要说明的是,在进行数据业务数据的建表时,需要预先对数据格式进行定义。具体地,可以加上默认字段region(int)。对于不同的region(数据中心),默认值不一样。例如region北京,则值为0。region上海,则值为1。
具体实现中,当第一节点获取到数据变更日志,第一节点对数据变更日志进行解析,进而确定第一节点的mysql数据库中的变更业务数据。其中,变更业务数据携带有用于表征首次写入变更业务数据的节点对应的节点信息的源节点标志位。
实际应用中,源节点标志位也可以命名为region tag。region tag的数值用于描述写入变更业务数据的节点对应的节点标识。
举例来说,当region tag为0时,则写入该变更业务数据的节点为数据中心A;当region tag为1时,则写入该变更业务数据的节点为数据中心B。
在步骤S230中,当源节点标志位中的节点标志与第一节点对应的节点标志相同时,将变更业务数据同步至第二节点的数据库中。
具体实现中,当第一节点确定变更业务数据后,第一节点读取该变更业务数据对应的源节点标志位中的节点标志;然后,第一节点再比对源节点标志位中的节点标志与第一节点对应的节点标志,判断源节点标志位中的节点标志与第一节点对应的节点标志是否一致。当源节点标志位中的节点标志与第一节点对应的节点标志相同时,将变更业务数据同步至第二节点的数据库中,即将变更业务数据复制到对端。
举例来说,假设第一节点为数据中心B且第一节点对应的节点标志为1,第二节点为数据中心A且第二节点对应的节点标志为0。当第一节点确定读取该变更业务数据对应的源节点标志位中的节点标志即region tag为0时,则确定首次写入该变更业务数据的节点为数据中心A,则说明此时第一节点的对端数据库即第二节点的数据库中不存在该变更业务数据。因此需要将该变更业务数据同步至第二节点的数据库中。具体来说,第一节点可以生成并发送针对该变更业务数据的同步消息至第二节点,进而供第二节点接收并将该变更业务数据写入至第二节点的数据库中,以实现将第一节点的数据库中变更业务数据同步至第二节点的数据库中。
上述数据同步方法中,通过获取第一节点的数据库中的业务数据发生变更时生成的数据变更日志;当根据数据变更日志,确定第一节点的数据库中携带有源节点标志位的变更业务数据,其中,该源节点标志位用于表征首次写入变更业务数据的节点对应的节点信息;当源节点标志位中的节点标志与第一节点对应的节点标志相同时,则将变更业务数据同步至第二节点的数据库中;如此,在无需开发人员对MYSQL源码进行改写操作的前提下,也可以实现在进行主从节点双向复制的过程中实现回环控制机制,进而可以较少在对MySQL进行更新及维护上耗费的时间和人力,降低了数据同步过程中的维护成本。
在一示例性实施例中,在获取数据变更日志的步骤之前,方法还包括:接收第二节点发送的数据同步消息;数据同步消息携带有待同步业务数据;第二节点对应的节点标志与待同步业务数据携带的源节点标志位中的节点标志相同;根据数据同步消息,生成待同步业务数据的数据同步指令;通过执行数据同步指令,以将待同步业务数据从第二节点的数据库同步至第一节点的数据库。
具体实现中,当第二节点检测到待同步业务数据携带的源节点标志位中的节点标志与该第二节点的节点标志相同时,第二节点则确定首次写入该待同步业务数据的节点为第二节点,则说明此时第二节点的对端数据库即第一节点的数据库中不存在待同步业务数据。因此需要将待同步业务数据同步至第一节点的数据库中。
然后,第二节点则生成并发送针对待同步业务数据的数据同步消息至第一节点,进而供第一节点接收第二节点发送的携带有待同步业务数据的数据同步消息。当第一节点接收到待同步业务数据的数据同步消息之后,第一节点则根据数据同步消息,生成待同步业务数据的数据同步指令(如SQL命令行)。最后,第一节点则通过执行该数据同步指令,将待同步业务数据写入第一节点的数据库中,进而实现将待同步业务数据从第二节点的数据库同步至第一节点的数据库。
本实施例提供的技术方案,可以实现在无需开发人员对MYSQL源码进行改写操作的前提下,也可以实现在进行主从节点双向复制的过程中实现回环控制机制,进而可以较少在对MySQL进行更新及维护上耗费的时间和人力,降低了数据同步过程中的维护成本。
在一示例性实施例中,根据数据同步消息,生成待同步业务数据的数据同步指令,包括:解析数据同步消息,确定数据同步消息对应的消息格式;基于消息格式,对针对待同步数据的多个待拼接的指令语句进行拼接处理,得到待同步数据的数据同步指令。
实际应用中,待同步数据可以采用事务为单位进行封装;其中,每个事务里面包含一条或者多条记录。
具体实现中,第一节点在根据数据同步消息,生成待同步业务数据的数据同步指令的过程中,第一节点通过对数据同步消息进行解析,确定该数据同步消息对应的消息格式。其中,消息格式可以包括事务id、事务开始时间、事务结束时间、事务产生的变更记录、实例主机名、实例端口号、变更记录库名、变更记录表名、sql语句类型,其中,0代表insert,1代表update,2代表delete,3代表ddl、语句执行开始时间、变更数据的列名、主键列名、变更数据,列表格式,一个元素代表变更的一行数据、变更之前的数据内容、变更之后的数据内容、变更数据主键值、变更数据内容。第一节点根据上述的消息格式,对针对待同步数据的多个待拼接的指令语句(如SQL语句)进行拼接处理,得到待同步数据的数据同步指令即SQL命令行。
本实施例提供的技术方案,在根据数据同步消息,生成待同步业务数据的数据同步指令的过程中,通过解析数据同步消息,确定数据同步消息对应的消息格式;基于消息格式,对针对待同步数据的多个待拼接的指令语句进行拼接处理,准确地得到用于写人待同步数据的数据同步指令。
在一示例性实施例中,方法还包括:接收数据写入指令;数据写入指令携带有待写入业务数据;通过执行数据写入指令,以将待写入业务数据写入至第一节点的数据库;生成待写入业务数据的数据变更日志。
实际应用中,数据写入指令可以是指用SQL语句构成的指令。
具体实现中,当用户需要将新的业务数据写入至第一节点的数据库时,用户可以向第一节点输入携带有待写入业务数据的数据写入指令,以供第一节点进行接收。当第一节点接收到数据写入指令时,第一节点执行该数据写入指令,通过执行数据写入指令,对第一节点的数据库执行对应的操作,以将待写入业务数据写入至第一节点的数据库。在第一节点将将待写入业务数据写入至第一节点的数据库后,最后,第一节点则基于该在写入待写入业务数据时对数据库执行对应的操作,生成待写入业务数据的数据变更日志即binlog。
本实施例提供的技术方案,通过接收携带有待写入业务数据的数据写入指令;并通过执行数据写入指令,以将待写入业务数据准确地写入至第一节点的数据库;生成待写入业务数据的数据变更日志。
在一示例性实施例中,通过执行数据写入指令,以将待写入业务数据写入至第一节点的数据库,包括:确定待写入业务数据携带的源节点标志位;将待写入业务数据携带的源节点标志位中的节点标志设置为与第一节点对应的节点标志相同的节点标志。
具体实现中,在第一节点通过执行数据写入指令,以将待写入业务数据写入至第一节点的数据库的过程中,具体包括:当第一节点为首次写入待写入业务数据的节点时,第一节点在将待写入业务数据写入至第一节点的数据库时,第一节点还可以确定待写入业务数据携带的源节点标志位;然后,第一节点将待写入业务数据携带的源节点标志位中的节点标志设置为与第一节点对应的节点标志相同的节点标志。
举例来说,假设第一节点为数据中心B且第一节点对应的节点标志为1,当第一节点在写入待写入业务数据至第一节点的数据库时,第一节点则将待写入业务数据携带的源节点标志位的节点标志设置为1即将待写入业务数据的region tag设置为1。
本实施例提供的技术方案,通过确定待写入业务数据携带的源节点标志位;将待写入业务数据携带的源节点标志位中的节点标志设置为与第一节点对应的节点标志相同的节点标志,从而可以便于各个节点根据该数据对应的节点标识,判断该数据对应的源节点,进而确定是否需要对该数据进行同步。
在一示例性实施例中,将第一节点的数据库中的变更业务数据同步至第二节点的数据库中,包括:生成变更业务数据的数据同步消息;通过订阅中间件的方式,将变更业务数据的数据同步消息转发至第二节点,以使第二节点在接收到变更业务数据的数据同步消息后,将变更业务数据写入至第二节点的数据库中。
具体实现中,第一节点在将第一节点的数据库中的变更业务数据同步至第二节点的数据库的过程中,具体包括:第一节点基于该变更业务数据,生成针对变更业务数据的数据同步消息。然后,第一节点可以通过订阅中间架的方式,将该变更业务数据的数据同步消息转发至第二节点。具体来说,第一节点可以将该变更业务数据的数据同步消息发送至中间件,以供中间件接收。当中间件接收到第一节点发送的数据同步消息后,中间件将该数据同步消息转发至第二节点,供第二节点接收。当第二节点接收到该数据同步消息后,第二节点解析捕获到的数据同步消息,并根据解析结果确定该变更业务数据;最后,第二节点基于该数据同步消息的消息格式和该变更业务数据的数据内容,拼接得到数据库写入指令即SQL语句,并执行该SQL语句将上述的变更业务数据写入至第二节点的数据库中。
本实施例提供的技术方案,通过生成变更业务数据的数据同步消息;并通过订阅中间件的方式,将变更业务数据的数据同步消息转发至第二节点,以使第二节点在接收到变更业务数据的数据同步消息后,将变更业务数据写入至第二节点的数据库中;如此,可以高兼容性地在各个节点之间进行数据同步。
在一示例性实施例中,在读取源节点标志位中的节点标志的步骤之后,还包括:当源节点标志位中的节点标志与第一节点对应的标志不一致时,则不执行将变更业务数据同步至第二节点的数据库中的步骤。
具体实现中,第一节点比对源节点标志位中的节点标志与第一节点对应的节点标志,判断源节点标志位中的节点标志与第一节点对应的节点标志是否一致。当源节点标志位中的节点标志与第一节点对应的节点标志不一致时,第一节点则不执行将变更业务数据同步至第二节点的数据库中的步骤。
举例来说,假设第一节点为数据中心B且第一节点对应的节点标志为1,第二节点为数据中心A且第二节点对应的节点标志为0;当第一节点确定读取该变更业务数据对应的源节点标志位中的节点标志即region tag为0时,则确定首次写入该变更业务数据的节点为数据中心A;进而说明此时在第一节点的数据库中的变更业务数据是由第一节点的DRC复制产生的,因此没有必要再将该变更业务数据同步至第二节点的数据库即数据中心A中;因此,第一节点则不执行将变更业务数据同步至第二节点的数据库中的步骤,并丢弃该复制消息。
本实施例提供的技术方案,当源节点标志位中的节点标志与第一节点对应的标志不一致时,则不执行将变更业务数据同步至第二节点的数据库中,避免第一节点对变更业务数据重复地发送至第二节点,节省各个节点之间传递数据消耗的数据流量,提高各个节点的运行效率。
图3是根据一示例性实施例示出的一种数据同步方法的流程图,如图3所示,包括以下步骤。在步骤S310中,接收数据写入指令;所述数据写入指令携带有待写入业务数据。在步骤S320中,通过执行所述数据写入指令,以将所述待写入业务数据写入至所述第一节点的数据库。在步骤S340中,生成所述待写入业务数据的数据变更日志。在步骤S350中,根据所述数据变更日志,确定所述第一节点的数据库中的变更业务数据;所述变更业务数据携带有源节点标志位;所述源节点标志位用于表征首次写入所述变更业务数据的节点对应的节点信息。在步骤S360中,当所述源节点标志位中的节点标志与所述第一节点对应的节点标志相同时,则生成所述变更业务数据的数据同步消息。在步骤S370中,通过订阅中间件的方式,将所述变更业务数据的数据同步消息转发至所述第二节点,以使所述第二节点在接收到所述变更业务数据的数据同步消息后,将所述变更业务数据写入至所述第二节点的数据库中。需要说明的是,上述步骤的具体限定可以参见上文对一种数据同步方法的具体限定,在此不再赘述。
应该理解的是,虽然图2和图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2和图3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
为了便于本领域技术人员的理解,图4提供了一种数据同步方法的处理流程图;其中,数据回放以事务为单位,每个事务里面包含一条或者多条记录。数据中心B对应的节点标志为0,数据中心A对应的节点标志为1。其中,数据中心B写入业务数据后,数据中心B的DRC解析binlog捕获事务的数据变更。由于数据中心B是首次写入该业务数据的节点,因此,数据中心B将同步消息传送至数据中心A的DRC。数据中心A的DRC在接收到数据中心B发送的同步消息后,解析数据中心A捕获到的数据,并将拼接SQL语句,入库即写入数据中心A的数据库。与此同时,数据中心A的DRC捕获数据中心A的mysql生成的binlog,发现变动业务数据的region tag为0,即与数据中心A的本地Region的tag值不一致。说明此数据是DRC复制产生,进而丢弃。不再复制到对数据中心B。
图5是根据一示例性实施例示出的一种装置框图。参照图5,该装置包括:
获取单元510,被配置为执行获取数据变更日志;所述数据变更日志为第一节点的数据库中的业务数据发生变更时生成的日志;
确定单元520,被配置为执行根据所述数据变更日志,确定所述第一节点的数据库中的变更业务数据;所述变更业务数据携带有源节点标志位;所述源节点标志位用于表征首次写入所述变更业务数据的节点对应的节点信息;
同步单元530,被配置为执行当所述源节点标志位中的节点标志与所述第一节点对应的节点标志相同时,将所述变更业务数据同步至第二节点的数据库中。
在一示例性实施例中,上述的一种数据同步装置,还包括:接收单元,被配置为执行接收所述第二节点发送的数据同步消息;所述数据同步消息携带有待同步业务数据;所述第二节点对应的节点标志与所述待同步业务数据携带的源节点标志位中的节点标志相同;生成单元,被配置为执行根据所述数据同步消息,生成所述待同步业务数据的数据同步指令;执行单元,被配置为执行通过执行所述数据同步指令,以将所述待同步业务数据从所述第二节点的数据库同步至所述第一节点的数据库。
在一示例性实施例中,所述生成单元,具体被配置为执行解析所述数据同步消息,确定所述数据同步消息对应的消息格式;基于所述消息格式,对针对所述待同步数据的多个待拼接的指令语句进行拼接处理,得到所述待同步数据的数据同步指令。
在一示例性实施例中,上述的一种数据同步装置,还包括:指令接收单元,被配置为执行接收数据写入指令;所述数据写入指令携带有待写入业务数据;写入指令执行单元,被配置为执行通过执行所述数据写入指令,以将所述待写入业务数据写入至所述第一节点的数据库;日志生成单元,被配置为执行生成所述待写入业务数据的数据变更日志。
在一示例性实施例中,所述写入指令执行单元,具体被配置为执行确定所述待写入业务数据携带的源节点标志位;将所述待写入业务数据携带的源节点标志位中的节点标志设置为与所述第一节点对应的节点标志相同的节点标志。
在一示例性实施例中,所述同步单元530,具体被配置为执行生成所述变更业务数据的数据同步消息;通过订阅中间件的方式,将所述变更业务数据的数据同步消息转发至所述第二节点,以使所述第二节点在接收到所述变更业务数据的数据同步消息后,将所述变更业务数据写入至所述第二节点的数据库中。
在一示例性实施例中,上述的一种数据同步装置,还包括:数据丢弃单元,被配置为执行当所述源节点标志位中的节点标志与所述第一节点对应的标志不一致时,则不执行所述将所述变更业务数据同步至第二节点的数据库中的步骤。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6是根据一示例性实施例示出的一种用于执行数据同步方法的设备600的框图。例如,设备600可以为一服务器。参照图6,设备600包括处理组件620,其进一步包括一个或多个处理器,以及由存储器622所代表的存储器资源,用于存储可由处理组件620的执行的指令,例如应用程序。存储器622中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件620被配置为执行指令,以执行上述的数据同步方法。
设备600还可以包括一个电源组件624被配置为执行设备600的电源管理,一个有线或无线网络接口626被配置为将设备600连接到网络,和一个输入输出(I/O)接口628。设备600可以操作基于存储在存储器622的操作系统,例如Window6 6erverTM,Mac O6 XTM,UnixTM,LinuxTM,FreeB6DTM或类似。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器622,上述指令可由设备600的处理器执行以完成上述方法。存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
获取数据变更日志;所述数据变更日志为第一节点的数据库中的业务数据发生变更时生成的日志;
根据所述数据变更日志,确定所述第一节点的数据库中的变更业务数据;所述变更业务数据携带有源节点标志位;所述源节点标志位用于表征首次写入所述变更业务数据的节点对应的节点信息;
当所述源节点标志位中的节点标志与所述第一节点对应的节点标志相同时,将所述变更业务数据同步至第二节点的数据库中。
2.根据权利要求1所述的数据同步方法,其特征在于,在所述获取数据变更日志的步骤之前,所述方法还包括:
接收所述第二节点发送的数据同步消息;所述数据同步消息携带有待同步业务数据;所述第二节点对应的节点标志与所述待同步业务数据携带的源节点标志位中的节点标志相同;
根据所述数据同步消息,生成所述待同步业务数据的数据同步指令;
通过执行所述数据同步指令,以将所述待同步业务数据从所述第二节点的数据库同步至所述第一节点的数据库。
3.根据权利要求2所述的数据同步方法,其特征在于,所述根据所述数据同步消息,生成所述待同步业务数据的数据同步指令,包括:
解析所述数据同步消息,确定所述数据同步消息对应的消息格式;
基于所述消息格式,对针对所述待同步数据的多个待拼接的指令语句进行拼接处理,得到所述待同步数据的数据同步指令。
4.根据权利要求1所述的数据同步方法,其特征在于,所述方法还包括:
接收数据写入指令;所述数据写入指令携带有待写入业务数据;
通过执行所述数据写入指令,以将所述待写入业务数据写入至所述第一节点的数据库;
生成所述待写入业务数据的数据变更日志。
5.根据权利要求4所述的数据同步方法,其特征在于,所述通过执行所述数据写入指令,以将所述待写入业务数据写入至所述第一节点的数据库,包括:
确定所述待写入业务数据携带的源节点标志位;
将所述待写入业务数据携带的源节点标志位中的节点标志设置为与所述第一节点对应的节点标志相同的节点标志。
6.根据权利要求1所述的方法,其特征在于,所述将所述第一节点的数据库中的变更业务数据同步至第二节点的数据库中,包括:
生成所述变更业务数据的数据同步消息;
通过订阅中间件的方式,将所述变更业务数据的数据同步消息转发至所述第二节点,以使所述第二节点在接收到所述变更业务数据的数据同步消息后,将所述变更业务数据写入至所述第二节点的数据库中。
7.一种数据同步装置,其特征在于,包括:
获取单元,被配置为执行获取数据变更日志;所述数据变更日志为第一节点的数据库中的业务数据发生变更时生成的日志;
确定单元,被配置为执行根据所述数据变更日志,确定所述第一节点的数据库中的变更业务数据;所述变更业务数据携带有源节点标志位;所述源节点标志位用于表征首次写入所述变更业务数据的节点对应的节点信息;
同步单元,被配置为执行当所述源节点标志位中的节点标志与所述第一节点对应的节点标志相同时,将所述变更业务数据同步至第二节点的数据库中。
8.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的数据同步方法。
9.一种存储介质,其特征在于,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如权利要求1至6中任一项所述的数据同步方法。
10.一种计算机应用程序,其特征在于,所述计算机应用程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机应用程序,使得所述设备执行如权利要求1至6中任一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010845411.6A CN112000678A (zh) | 2020-08-20 | 2020-08-20 | 数据同步方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010845411.6A CN112000678A (zh) | 2020-08-20 | 2020-08-20 | 数据同步方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112000678A true CN112000678A (zh) | 2020-11-27 |
Family
ID=73473684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010845411.6A Pending CN112000678A (zh) | 2020-08-20 | 2020-08-20 | 数据同步方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112000678A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376017A (zh) * | 2013-08-15 | 2015-02-25 | 阿里巴巴集团控股有限公司 | 在数据库之间进行数据同步的方法及系统 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN107180116A (zh) * | 2017-06-28 | 2017-09-19 | 努比亚技术有限公司 | 一种数据同步处理方法、移动终端以及计算机可读存储介质 |
CN110134737A (zh) * | 2019-05-20 | 2019-08-16 | 中国铁道科学研究院集团有限公司 | 数据变化监听方法及装置、电子设备和计算机可读存储介质 |
CN111459954A (zh) * | 2020-03-04 | 2020-07-28 | 深圳壹账通智能科技有限公司 | 分布式数据同步方法、装置、设备及介质 |
-
2020
- 2020-08-20 CN CN202010845411.6A patent/CN112000678A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376017A (zh) * | 2013-08-15 | 2015-02-25 | 阿里巴巴集团控股有限公司 | 在数据库之间进行数据同步的方法及系统 |
CN105243067A (zh) * | 2014-07-07 | 2016-01-13 | 北京明略软件系统有限公司 | 一种实现实时增量同步数据的方法及装置 |
CN107180116A (zh) * | 2017-06-28 | 2017-09-19 | 努比亚技术有限公司 | 一种数据同步处理方法、移动终端以及计算机可读存储介质 |
CN110134737A (zh) * | 2019-05-20 | 2019-08-16 | 中国铁道科学研究院集团有限公司 | 数据变化监听方法及装置、电子设备和计算机可读存储介质 |
CN111459954A (zh) * | 2020-03-04 | 2020-07-28 | 深圳壹账通智能科技有限公司 | 分布式数据同步方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109829011B (zh) | 一种分布式异构数据库的数据同步方法及装置 | |
US20150213100A1 (en) | Data synchronization method and system | |
CN109101627A (zh) | 异构数据库同步方法及装置 | |
CN108280023B (zh) | 任务执行方法、装置和服务器 | |
US20100162225A1 (en) | Cross-product refactoring apparatus and method | |
US20070255763A1 (en) | Database replication method and system | |
CN111177161B (zh) | 数据处理方法、装置、计算设备和存储介质 | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
US10726042B2 (en) | Replication control using eventually consistent meta-data | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
CN102272751B (zh) | 在数据库环境通过背景同步的数据完整性 | |
CN106339177A (zh) | 一种创建虚拟机的方法和装置 | |
US20160088077A1 (en) | Seamless binary object and metadata sync | |
CN109213516A (zh) | Svn中代码同步与通知的方法、存储介质、设备和系统 | |
CN111008246A (zh) | 数据库日志同步方法、装置、计算机设备及可读存储介质 | |
WO2016082594A1 (zh) | 数据更新处理方法及装置 | |
CN113704790A (zh) | 一种异常日志信息汇总方法及计算机设备 | |
CN115114370B (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
JP2024026143A (ja) | 最終的に一貫性のあるデータベース複製への切り替え | |
US8090695B2 (en) | Dynamic restoration of message object search indexes | |
WO2024103898A1 (zh) | 数据库集群管理的方法和装置 | |
CN112416944A (zh) | 一种同步业务数据的方法和设备 | |
CN112000678A (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN111522688B (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 |