CN114969200B - 数据同步方法、装置、电子设备及存储介质 - Google Patents
数据同步方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114969200B CN114969200B CN202210403471.1A CN202210403471A CN114969200B CN 114969200 B CN114969200 B CN 114969200B CN 202210403471 A CN202210403471 A CN 202210403471A CN 114969200 B CN114969200 B CN 114969200B
- Authority
- CN
- China
- Prior art keywords
- target
- sentences
- statement
- threads
- target operation
- 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
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据同步方法、装置、电子设备及存储介质,该方法包括:获取第一数据库的目标日志文件中记录的多个目标操作语句;将所述多个目标操作语句分配至多个线程,多个所述线程并发执行,每个所述线程中包括至少一个目标操作语句,各所述线程中的目标操作语句不同;通过所述多个线程同时执行所述目标操作语句以更新第二数据库中的目标数据。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据同步方法、装置、电子设备及存储介质。
背景技术
MySQL是一种关系型数据库,负责关系型数据的存储。对于MySQL关系型数据库而言,二进制日志(binary log,binlog)是MySQL最重要的日志,其记录了几乎所有的数据操纵语言(Data Manipulation Language,DML)语句和数据定义语言(Data DefinitionLanguage,DDL)语句。其中,DML语句以插入(INSERT)、修改(UPDATE)和删除(DELETE)三种指令为核心,负责操作数据库表,DDL语句负责操作数据库。
在一些场景下,binlog日志可以为不同数据库提供同步机制,从而保证主MySQL数据库和从MySQL数据库之间的数据的同步性,对于主MySQL数据库而言,主MySQL数据库的所有DML操作和DDL操作均会按时序记录到binlog日志中,如此,当主MySQL数据库的DML操作和DDL操作频繁时,binlog日志记录的数据量非常大,而binlog日志同步的模式为串行执行模式,按照binlog日志中DML操作和DDL操作的时序逐一的顺序同步到从数据库中,如此,数据同步效率较低,无法保证主数据库和从数据库之间数据同步的及时性,容易造成主数据库和从数据库的数据的不一致,导致主数据库和从数据库的稳定性较差。
发明内容
本申请实施例的目的是提供一种数据同步方法、装置、电子设备及存储介质,能够提高数据库之间的同步效率,保证主数据库和从数据库之间数据同步的及时性,进而提高数据库的稳定性。
为了解决上述技术问题,本申请实施例是这样实现的:
第一方面,本申请实施例提供了一种数据同步方法,包括:获取第一数据库的目标日志文件中记录的多个目标操作语句;将所述多个目标操作语句分配至多个线程,多个所述线程并发执行,每个所述线程中包括至少一个目标操作语句,各所述线程中的目标操作语句不同;通过所述多个线程同时执行所述目标操作语句以更新第二数据库中的目标数据。
第二方面,本申请实施例提供了一种数据同步装置,包括:获取模块,用于获取第一数据库的目标日志文件中记录的多个目标操作语句;分配模块,用于将所述多个目标操作语句分配至多个线程,多个所述线程并发执行,每个所述线程中包括至少一个目标操作语句,各所述线程中的目标操作语句不同;执行模块,用于通过所述多个线程同时执行所述目标操作语句以更新第二数据库中的目标数据。
第三方面,本申请实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线;其中,所述处理器、所述通信接口以及所述存储器通过通信总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现如第一方面所提到的数据同步方法步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现如第一方面所提到的数据同步方法步骤。
由以上本申请实施例提供的技术方案可见,通过获取第一数据库的目标日志文件中记录的多个目标操作语句;将所述多个目标操作语句分配至多个线程,多个所述线程并发执行,每个所述线程中包括至少一个目标操作语句,各所述线程中的目标操作语句不同;通过所述多个线程同时执行所述目标操作语句以更新第二数据库中的目标数据。能够采用多线程的方式同时执行所述目标操作语句以更新第二数据库中的目标数据,相比于串行执行方式,提高了数据同步效率,保证主数据库和从数据库之间数据同步的及时性,避免造成主数据库和从数据库的数据的不一致,提高了主数据库和从数据库的稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的数据同步方法的第一种流程示意图;
图2为本申请实施例提供的数据同步方法的第二种流程示意图;
图3为本申请实施例提供的数据同步装置的一种模块组成示意图;
图4为本申请实施例提供的电子设备的结构示意图。
具体实施方式
本申请实施例提供了一种数据同步方法、装置、电子设备及存储介质,能够提高数据库之间的同步效率,保证主数据库和从数据库之间数据同步的及时性,进而提高数据库的稳定性。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
示例性的,如图1所示,本申请实施例提供一种数据同步方法,该方法的执行主体可以为服务器,其中,该服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是能够进行数据同步服务器,该数据同步方法具体可以包括以下步骤:
在步骤S101中,获取第一数据库的目标日志文件中记录的多个目标操作语句。
具体来讲,第一数据库可以为主MySQL数据库,目标日志文件可以为binlog日志文件。其中,可以对主MySQL数据库中的各个数据表中的数据进行DML操作,如插入操作、修改操作以及删除操作,对主MySQL数据库进行DDL操作,在对主MySQL数据库中的各个数据表中的数据进行DML操作时,会相应的在binlog日志文件记录对主MySQL数据库的DML操作语句,DML操作语句包括但不限于插入操作语句、修改操作语句以及删除操作语句等,对主MySQL数据库进行DDL操作时,会相应的在binlog日志文件记录对主MySQL数据库的DDL操作语句。其中,目标操作语句包括但不限于上述的DML操作语句和DDL操作语句。
进一步,获取第一数据库的目标日志文件中记录的多个目标操作语句可以通过以下步骤获取:通过binlog解析器将binlog日志文件中的二进制文件解析成DML操作语句和DDL操作语句。
在步骤S103中,将多个目标操作语句分配至多个线程,多个线程并发执行,每个线程中包括至少一个目标操作语句,各线程中的目标语句不同。
具体来讲,在从binlog日志文件中获取到多个DML操作语句和DDL操作语句之后,可以将各个DML操作语句和DDL操作语句建立各自对应的线程,即一个操作语句对应一个线程,各个线程是同时执行的,从而能够同时执行各个操作语句,同时对第二数据库中同时进行多个操作语句,提高了数据同步的效率,保证了第一数据库和第二数据库之间数据的一致性,提高了数据库的稳定性。其中,DML操作语句包含了对数据表进行的操作以及操作后的数据。
进一步,为了避免多个线程同时对第二数据库中的数据进行更新,从而引起占用过多资源,如输入输出(Input/Output,I/O)资源、中央处理器(Central Processing Unit,CPU)资源等,可以将相互关联的目标操作语句放到同一个队列中,一个队列中的目标操作语句由一个线程按照各目标操作语句的时序顺序执行,从而减少在第二数据库的操作次数,避免了对资源的过多占用,既能保证数据同步的一致性和效率,又能避免对资源(如I/O资源)过多占用。
即步骤S103包括:根据多个目标操作语句之间的关联性将目标操作语句划分为第一集合和第二集合,目标操作语句包括第一目标操作语句和第二目标操作语句,所述第一目标操作语句划分至所述第一集合,所述第二目标操作语句划分至所述第二集合,所述第一集合中的所述第一目标操作语句之间不存在关联性,所述第二集合中的所述第二目标语句之间存在关联性;将第一集合中的第一目标操作语句分别分配到不同的线程中,一个线程对应一个第一目标操作语句;将第二集合中的第二目标操作语句分配到同一个队列中,同一个队列对应同一个线程,同一个队列中的第二目标操作语句通过同一个线程按顺序执行。
具体来讲,关联性通过目标操作语句之间的业务关联性确定,将存在业务关联性的目标操作语句划分至第二集合,将不存在业务关联性的目标操作语句划分至第一集合。具体的,第一集合可以称为单表模式,第二集合可以称为多表混合模式,即将DML操作语句或者DDL操作语句,根据DML操作语句或者DDL操作语句之间的关联性,将DML操作语句或DDL操作语句配置为单表模式或多表很合模式,对于单表模式而言,适用于DML操作语句或DDL操作语句操作的第一数据库的数据表之间关联度不高且不含外键的情况;对于多表混合模式而言,适用于DML操作语句或DDL操作语句操作的第一数据库的数据表之间关联度高或含有外键的情况,让DML操作语句或DDL操作语句进入相应的并发线程中。
对于第一集合中的DML操作语句或DDL操作语句而言,可以为各DML操作语句或DDL操作语句分别建立一个线程,各个线程并发执行。
对于第二集合中的DML操作语句或DDL操作语句而言,各个DML操作语句或DDL操作语句之间是有逻辑先后顺序的,为了避免各个DML操作语句或DDL操作语句乱序执行,而对数据库的稳定性造成影响,通过采用多表混合模式,将存在逻辑先后顺序的DML操作语句或DDL操作语句放到同一个队列中,该队列对应一个线程,由该线程对该队列中的DML操作语句或DDL操作语句按照时序顺序执行,保证第一数据库和第二数据库的数据的一致性,提高数据库的稳定性。例如,DML操作语句包括两个插入操作语句,第一个插入操作语句是对数据表test1中插入数据,第二个插入操作语句是对数据表test2中插入数据,两个插入操作语句序列的形式如下:insert into test1(pk1,a,b,c)value(100,2,3,4)和insert intotest2(pk2,a,b,c,pk1)value(1,2,3,4,100),其中,test1中的pk1是test2中的外键,将上述两个插入操作语句放到同一个队列当中,由同一个线程对该队列当中的插入操作语句按序执行,保证数据库中的数据不出现异常。
在步骤S105中,通过多个线程同时执行目标操作语句以更新第二数据库中的目标数据。
具体来讲,通过多个线程同时执行DML操作语句或DDL操作语句,从而将第二数据库中的数据进行与第一数据库中相同的操作,并更新第二数据库中的目标数据,保证第一数据库和第二数据库中数据的一致性。其中,目标数据指的是与第一数据库中相对应的进行DML操作或DDL操作的数据,第二数据库可以为从MySQL数据库或者另一个主MySQL数据库。
通过本申请实施例公开的技术方案,能够采用多线程的方式同时执行目标操作语句以更新第二数据库中的目标数据,相比于串行执行方式,提高了数据同步效率,保证主数据库和从数据库之间数据同步的及时性,避免造成主数据库和从数据库的数据的不一致,提高了主数据库和从数据库的稳定性。
示例性的,如图2所示,本申请实施例提供一种数据同步方法,该方法的执行主体可以为服务器,其中,该服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是能够进行数据同步服务器,该数据同步方法具体可以包括以下步骤:
在步骤S201中,获取第一数据库的目标日志文件中记录的多个目标操作语句。
在步骤S202中,从多个目标操作语句中查找多个DML操作语句;根据DML操作语句的类型对多个DML操作语句中的至少两个DML操作语句进行合并。
具体来讲,为了进一步提高数据同步的效率,可以将多个DML操作优化合并为一次操作,从而对第二数据库的操作频率降低,减少资源占用和消耗。对于多个DML操作语句而言,其根据对第一数据库的操作时间对应有时序,对各个DML操作按照时间的先后顺序依次排列,时间早的DML操作语句排序靠前。
对于DML操作语句的类型包括删除操作语句、插入操作语句和修改操作语句,根据DML操作语句的类型对多个DML操作语句中的至少两个DML操作语句进行合并可以如下:
遍历DML操作语句,其中,可以按照DML操作语句的时序由早到晚遍历。后文中,前序和后序为相邻的两个DML操作语句,前序为时序靠前的操作语句,后序为时序靠后的操作语句。
在前序为插入操作语句且后序为修改操作语句的情况下,合并为目标插入操作语句,插入操作语句中与修改操作语句对应的内容被修改,得到修改内容,目标插入操作语句中包括插入操作语句中未被修改的原始内容和修改内容。例如,对于数据表test(pk,a,b,c),前序执行的操作语句为插入操作语句“Insert into test(pk,a,b,c)value(1,2,3,4)”,后序执行的操作语句为修改操作语句“Update test set a=200where pk=1”,则将这两个操作语句合并为目标插入操作语句“Insert into test(pk,a,b,c)value(1,200,3,4)”,其中,目标插入操作语句中的内容包括插入操作语句中未被修改的原始内容test(pk,a,b,c)value(1,3,4)和插入操作语句中与修改操作语句对应的内容被修改的修改内容200。
在前序为插入操作语句且后序为删除操作语句的情况下,删除插入操作语句和删除操作语句,即对插入操作语句和删除操作语句均不执行。例如,对于数据表test(pk,a,b,c),前序执行的操作语句为插入操作语句“Insert into test(pk,a,b,c)value(1,2,3,4)”,后序执行的操作语句为删除操作语句“Delete test where pk=1”,则删除这两个操作语句,都不执行,即对第二数据库不进行任何操作。
在前序和后序均为修改操作语句的情况下,将两个修改操作语句合并为第一目标修改操作语句,第一目标修改操作语句中的内容包括两个修改操作语句中的内容。例如,对于数据表test(pk,a,b,c),前序执行的操作语句为修改操作语句“Update test set a=200where pk=1”,后序执行的操作语句为修改操作语句“Update test set c=200wherepk=1”,则将上述两个修改操作语句合并为第一目标修改操作语句“Update test set a=200,b=2,c=200where pk=1”,目标修改操作语句中的内容包括上述两个修改操作中的全部内容“a=200,b=2,c=200where pk=1”。
在前序为修改操作语句且后序为删除操作语句的情况下,合并为第二目标修改操作语句,第二目标修改操作语句中的内容包括修改操作语句中的内容,删除操作语句中的内容进行删除。例如,对于数据表test(pk,a,b,c),前序执行的操作语句为修改操作语句“Update test set c=200where pk=1”,后序执行的操作语句为删除操作语句“Deletetest where pk=1”,则将上述两个操作语句合并为第二目标修改操作语句“Update testset c=200where pk=1”,第二目标修改操作语句中的内容包括修改操作语句中的“c=200where pk=1”。
在前序为删除操作语句且后序为插入操作语句的情况下,合并为第三目标修改操作语句,第三目标修改操作语句中与删除操作语句中对应的内容被删除,第三目标修改操作语句中的内容包括插入操作语句中未被删除的内容和删除操作语句中的内容。例如,对于数据表test(pk,a,b,c),前序执行的操作语句为删除操作语句“Delete test where pk=1”,后序执行的操作语句为插入操作语句“Insert into test(pk,a,b,c)value(1,2,3,4)”,则合并后的第三目标修改操作语句为“Update test set a=2,b=3,c=4where pk=1”其中,第三目标修改操作语句包括删除操作语句中的内容“where pk=1”和插入操作语句中未被删除的内容“a=2,b=3,c=4”。
在步骤S203中,将多个合并后的DML操作语句分配至多个线程。
具体来讲,将合并后的DML操作语句分配至线程,由于多个DML操作合并为一个DML操作,相应的减少了线程的数量,也即减少了对第二数据库的操作次数,对第二数据库的操作频率降低,提高了第二数据库的稳定性,减少资源的占用和消耗,如占用I/O资源、CPU资源等。
在步骤S205中,通过多个线程同时执行多个合并后的DML操作语句以更新第二数据库中的目标数据。
值得注意的是,步骤S201、步骤S203和步骤S205具有与上述实施例中步骤S101至步骤S105相同或类似的实现方式,相同之处可以互相参照,本申请实施例在此不再赘述。
通过本申请实施例公开的技术方案,能够采用多线程的方式同时执行目标操作语句以更新第二数据库中的目标数据,相比于串行执行方式,提高了数据同步效率,保证主数据库和从数据库之间数据同步的及时性,避免造成主数据库和从数据库的数据的不一致,提高了主数据库和从数据库的稳定性。此外,由于多个DML操作合并为一个DML操作,相应的减少了线程的数量,也即减少了对第二数据库的操作次数,对第二数据库的操作频率降低,提高了第二数据库的稳定性,减少资源的占用和消耗,如占用I/O资源、CPU资源等。
在一种可能的实现方式中,在多个目标操作语句中存在DDL操作语句处生成一个断点,通过多个线程先同时执行断点对应的时序之前的DML操作语句,再执行断点处的DDL操作语句。也就是说,按照各个目标操作语句的时序,DML操作语句和DDL操作语句按照时序顺序排列,在DML操作语句中,若下一个操作语句为DDL操作语句,则需要在该DDL操作语句处形成一个断点,先执行该断点对应的时序之前的DML操作语句或者合并后的DML操作语句,再执行该DDL操作语句,避免由于DDL操作语句造成的更改数据库结构而出现两个数据库中的数据不一致以及数据库不兼容的问题,提高了数据库的稳定性。
对应上述实施例提供的数据同步方法,基于相同的技术构思,本申请实施例还提供了一种数据同步装置,图3本申请实施例提供的数据同步装置的模块组成示意图,该数据同步装置用于执行图1或图2描述的数据同步方法,如图3所示,该数据同步装置300包括:获取模块301,用于获取第一数据库的目标日志文件中记录的多个目标操作语句;分配模块302,用于将多个目标操作语句分配至多个线程,多个线程并发执行,每个线程中包括至少一个目标操作语句,各线程中的目标操作语句不同;执行模块303,用于通过多个线程同时执行目标操作语句以更新第二数据库中的目标数据。
通过本申请实施例公开的技术方案,能够采用多线程的方式同时执行目标操作语句以更新第二数据库中的目标数据,相比于串行执行方式,提高了数据同步效率,保证主数据库和从数据库之间数据同步的及时性,避免造成主数据库和从数据库的数据的不一致,提高了主数据库和从数据库的稳定性。
在一种可能的实现方式中,分配模块302,还用于根据多个目标操作语句之间的关联性将目标操作语句划分为第一集合和第二集合,目标操作语句包括第一目标操作语句和第二目标操作语句,所述第一目标操作语句划分至所述第一集合,所述第二目标操作语句划分至所述第二集合,所述第一集合中的所述第一目标操作语句之间不存在关联性,所述第二集合中的所述第二目标语句之间存在关联性;将第一集合中的第一目标操作语句分别分配到不同的线程中,一个线程对应一个第一目标操作语句;将第二集合中的第二目标操作语句分配到同一个队列中,同一个队列对应同一个线程,同一个队列中的第二目标操作语句通过同一个线程按顺序执行。
在一种可能的实现方式中,关联性通过目标操作语句之间的业务关联性确定,将存在业务关联性的目标操作语句划分至第二集合,将不存在业务关联性的目标操作语句划分至第一集合。
在一种可能的实现方式中,执行模块303,还用于从多个目标操作语句中查找多个DML操作语句;根据DML操作语句的类型对多个DML操作语句中的至少两个DML操作语句进行合并。
在一种可能的实现方式中,分配模块302,还用于将多个合并后的DML操作语句分配至多个线程。
在一种可能的实现方式中,执行模块303,还用于通过多个线程同时执行多个合并后的DML操作语句以更新第二数据库中的目标数据。
在一种可能的实现方式中,DML操作语句的类型包括删除操作语句、插入操作语句和修改操作语句,执行模块303,还用于遍历DML操作语句;
在前序为插入操作语句且后序为修改操作语句的情况下,合并为目标插入操作语句,插入操作语句中与修改操作语句对应的内容被修改,得到修改内容,目标插入操作语句中包括插入操作语句中未被修改的原始内容和修改内容;在前序为插入操作语句且后序为删除操作语句的情况下,删除插入操作语句和删除操作语句;在前序和后序均为修改操作语句的情况下,将两个修改操作语句合并为第一目标修改操作语句,第一目标修改操作语句中的内容包括两个修改操作语句中的内容;在前序为修改操作语句且后序为删除操作语句的情况下,合并为第二目标修改操作语句,第二目标修改操作语句中的内容包括修改操作语句中的内容;在前序为删除操作语句且后序为插入操作语句的情况下,合并为第三目标修改操作语句,第三目标修改操作语句中与删除操作语句中对应的内容被删除,第三目标修改操作语句中的内容包括插入操作语句中的内容和删除操作语句中的内容。
在一种可能的实现方式中,目标操作语句包括DDL操作语句和DML操作语句,执行模块303,还用于在多个目标操作语句中存在DDL操作语句处生成一个断点;通过多个线程先同时执行断点对应的时序之前的DML操作语句,再执行断点处的DDL操作语句。
在一种可能的实现方式中,第一数据库为主MySQL数据库,第二数据库为从MySQL数据库,目标日志文件为binlog日志文件。
本申请实施例提供的数据同步装置能够实现上述数据同步方法对应的实施例中的各个过程,且具有相同或类似的有益效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例提供的数据同步装置与本申请实施例提供的数据同步方法基于同一申请构思,因此该实施例的具体实施可以参见前述数据同步方法的实施,且具有相同或类似的有益效果,重复之处不再赘述。
对应上述实施例提供的数据同步方法,基于相同的技术构思,本申请实施例还提供了一种电子设备,该电子设备用于执行上述的数据同步方法,图4为实现本申请各个实施例的一种电子设备的结构示意图,如图4所示。电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器401和存储器402,存储器402中可以存储有一个或一个以上存储应用程序或数据。其中,存储器402可以是短暂存储或持久存储。存储在存储器402的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对电子设备中的一系列计算机可执行指令。
更进一步地,处理器401可以设置为与存储器402通信,在电子设备上执行存储器402中的一系列计算机可执行指令。电子设备还可以包括一个或一个以上电源403,一个或一个以上有线或无线网络接口404,一个或一个以上输入输出接口405,一个或一个以上键盘406。
具体在本实施例中,电子设备包括有处理器、通信接口、存储器和通信总线;其中,处理器、通信接口以及存储器通过总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序,实现以上图1中方法实施例中的各个步骤,且具有以上方法实施例所具有的有益效果,为避免重复,本申请实施例在此不再赘述。
本实施例中还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现以上图1或图2方法实施例中的各个步骤,且具有以上方法实施例所具有的有益效果,为避免重复,本申请实施例在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,电子设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、装置或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (9)
1.一种数据同步方法,其特征在于,所述数据同步方法包括:
获取第一数据库的目标日志文件中记录的多个目标操作语句;
将所述多个目标操作语句分配至多个线程,多个所述线程并发执行以同时执行各所述线程内的所述目标操作语句,每个所述线程中包括至少一个目标操作语句,各所述线程中的目标操作语句不同;
通过所述多个线程同时执行所述目标操作语句以更新第二数据库中的目标数据;
所述将所述多个目标操作语句分配至多个线程包括:
根据所述多个目标操作语句之间的关联性将所述目标操作语句划分为第一集合和第二集合,所述目标操作语句包括第一目标操作语句和第二目标操作语句,所述第一目标操作语句划分至所述第一集合,所述第二目标操作语句划分至所述第二集合,所述第一集合中的所述第一目标操作语句之间不存在关联性,所述第二集合中的所述第二目标操作语句之间存在关联性;
将所述第一集合中的所述第一目标操作语句分别分配到不同的线程中,一个线程对应一个所述第一目标操作语句;
将所述第二集合中的所述第二目标操作语句分配到同一个队列中,所述同一个队列对应同一个线程,所述同一个队列中的第二目标操作语句通过所述同一个线程按顺序执行。
2.根据权利要求1所述的数据同步方法,其特征在于,所述关联性通过所述目标操作语句之间的业务关联性确定,将存在所述业务关联性的目标操作语句划分至所述第二集合,将不存在所述业务关联性的目标操作语句划分至所述第一集合。
3.根据权利要求1所述的数据同步方法,其特征在于,在所述将所述多个目标操作语句分配至多个线程之前,所述方法还包括:
从多个所述目标操作语句中查找多个DML操作语句;
根据所述DML操作语句的类型对所述多个DML操作语句中的至少两个DML操作语句进行合并;
所述将所述多个目标操作语句分配至多个线程包括:
将多个合并后的DML操作语句分配至多个线程;
所述通过所述多个线程同时执行所述目标操作语句以更新第二数据库中的目标数据包括:
通过所述多个线程同时执行所述多个合并后的DML操作语句以更新第二数据库中的目标数据。
4.根据权利要求3所述的数据同步方法,其特征在于,所述DML操作语句的类型包括删除操作语句、插入操作语句和修改操作语句,所述根据所述DML操作语句的类型对所述多个DML操作语句中的至少两个DML操作语句进行合并包括:
遍历所述DML操作语句;
在前序为所述插入操作语句且后序为所述修改操作语句的情况下,合并为目标插入操作语句,所述插入操作语句中与所述修改操作语句对应的内容被修改,得到修改内容,所述目标插入操作语句中包括所述插入操作语句中未被修改的原始内容和所述修改内容;
在前序为所述插入操作语句且后序为所述删除操作语句的情况下,删除所述插入操作语句和所述删除操作语句;
在前序和后序均为修改操作语句的情况下,将两个所述修改操作语句合并为第一目标修改操作语句,所述第一目标修改操作语句中的内容包括两个所述修改操作语句中的内容;
在前序为所述修改操作语句且后序为所述删除操作语句的情况下,合并为第二目标修改操作语句,所述第二目标修改操作语句中的内容包括所述修改操作语句中的内容;
在前序为所述删除操作语句且后序为所述插入操作语句的情况下,合并为第三目标修改操作语句,所述第三目标修改操作语句中与所述删除操作语句中对应的内容被删除,所述第三目标修改操作语句中的内容包括所述插入操作语句中的内容和所述删除操作语句中的内容。
5.根据权利要求1所述的数据同步方法,其特征在于,所述目标操作语句包括DDL操作语句和DML操作语句,在所述通过所述多个线程同时执行所述目标操作语句以更新第二数据库中的目标数据之前,所述方法还包括:
在多个所述目标操作语句中存在DDL操作语句处生成一个断点;
所述通过所述多个线程同时执行所述目标操作语句以更新第二数据库中的目标数据包括:
通过所述多个线程先同时执行断点对应的时序之前的DML操作语句,再执行所述断点处的DDL操作语句。
6.根据权利要求1所述的数据同步方法,其特征在于, 所述第一数据库为主MySQL数据库,所述第二数据库为从MySQL数据库,所述目标日志文件为binlog日志文件。
7.一种数据同步装置,其特征在于,所述数据同步装置包括:
获取模块,用于获取第一数据库的目标日志文件中记录的多个目标操作语句;
分配模块,用于将所述多个目标操作语句分配至多个线程,多个所述线程并发执行以同时执行各所述线程内的所述目标操作语句,每个所述线程中包括至少一个目标操作语句,各所述线程中的目标操作语句不同;
执行模块,用于通过所述多个线程同时执行所述目标操作语句以更新第二数据库中的目标数据;
所述分配模块用于将所述多个目标操作语句分配至多个线程包括:
根据所述多个目标操作语句之间的关联性将所述目标操作语句划分为第一集合和第二集合,所述目标操作语句包括第一目标操作语句和第二目标操作语句,所述第一目标操作语句划分至所述第一集合,所述第二目标操作语句划分至所述第二集合,所述第一集合中的所述第一目标操作语句之间不存在关联性,所述第二集合中的所述第二目标操作语句之间存在关联性;
将所述第一集合中的所述第一目标操作语句分别分配到不同的线程中,一个线程对应一个所述第一目标操作语句;
将所述第二集合中的所述第二目标操作语句分配到同一个队列中,所述同一个队列对应同一个线程,所述同一个队列中的第二目标操作语句通过所述同一个线程按顺序执行。
8.一种电子设备,包括处理器、通信接口、存储器和通信总线,其特征在于,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信,所述存储器,用于存放计算机程序,所述处理器,用于执行所述存储器上所存放的程序,实现如权利要求1-6任意一项所述的数据同步方法步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-6任意一项所述的数据同步方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210403471.1A CN114969200B (zh) | 2022-04-18 | 2022-04-18 | 数据同步方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210403471.1A CN114969200B (zh) | 2022-04-18 | 2022-04-18 | 数据同步方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114969200A CN114969200A (zh) | 2022-08-30 |
CN114969200B true CN114969200B (zh) | 2023-09-19 |
Family
ID=82976954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210403471.1A Active CN114969200B (zh) | 2022-04-18 | 2022-04-18 | 数据同步方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114969200B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955970A (zh) * | 2015-11-12 | 2016-09-21 | 中国银联股份有限公司 | 一种基于日志解析的数据库复制方法及装置 |
WO2018093094A1 (ko) * | 2016-11-16 | 2018-05-24 | 주식회사 실크로드소프트 | 데이터베이스 관리 시스템에서의 데이터 복제 기법 |
CN109522361A (zh) * | 2018-09-27 | 2019-03-26 | 中国经济信息社有限公司 | 一种利用消息总线进行数据库实时同步的方法及系统 |
CN109992595A (zh) * | 2019-04-11 | 2019-07-09 | 北京启迪区块链科技发展有限公司 | 异构数据库转换方法、装置、设备和存储介质 |
CN112231407A (zh) * | 2020-10-22 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | PostgreSQL数据库的DDL同步方法、装置、设备和介质 |
CN113297317A (zh) * | 2020-06-28 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据表同步方法、装置、电子设备和存储介质 |
-
2022
- 2022-04-18 CN CN202210403471.1A patent/CN114969200B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955970A (zh) * | 2015-11-12 | 2016-09-21 | 中国银联股份有限公司 | 一种基于日志解析的数据库复制方法及装置 |
WO2018093094A1 (ko) * | 2016-11-16 | 2018-05-24 | 주식회사 실크로드소프트 | 데이터베이스 관리 시스템에서의 데이터 복제 기법 |
CN109522361A (zh) * | 2018-09-27 | 2019-03-26 | 中国经济信息社有限公司 | 一种利用消息总线进行数据库实时同步的方法及系统 |
CN109992595A (zh) * | 2019-04-11 | 2019-07-09 | 北京启迪区块链科技发展有限公司 | 异构数据库转换方法、装置、设备和存储介质 |
CN113297317A (zh) * | 2020-06-28 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据表同步方法、装置、电子设备和存储介质 |
CN112231407A (zh) * | 2020-10-22 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | PostgreSQL数据库的DDL同步方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114969200A (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391628B (zh) | 数据同步方法及装置 | |
CN107688999B (zh) | 一种基于区块链的并行交易执行方法 | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
Punnoose et al. | Rya: a scalable RDF triple store for the clouds | |
US20160357740A1 (en) | Metadata Updating Method and Apparatus Based on Columnar Storage in Distributed File System, and Host | |
CN111813805A (zh) | 一种数据处理方法及装置 | |
CN112286941B (zh) | 一种基于Binlog+HBase+Hive的大数据同步方法和装置 | |
CN107391544B (zh) | 列式存储数据的处理方法、装置、设备及计算机储存介质 | |
CN105117417A (zh) | 一种读优化的内存数据库Trie树索引方法 | |
Hsieh et al. | SQLMR: A scalable database management system for cloud computing | |
CN104199899A (zh) | 一种基于Hbase的海量图片存储方法及装置 | |
CN113177090A (zh) | 数据处理方法及装置 | |
CN113177021B (zh) | 一种不同数据源的数据导出方法及装置 | |
CN116662019B (zh) | 请求的分配方法、装置、存储介质及电子装置 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN114969200B (zh) | 数据同步方法、装置、电子设备及存储介质 | |
US20230259490A1 (en) | Data query method and apparatus, device, and storage medium | |
CN111221814B (zh) | 二级索引的构建方法、装置及设备 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN116431601A (zh) | 数据表创建方法及设备 | |
CN113268483B (zh) | 请求处理方法和装置、电子设备和存储介质 | |
CN110377601B (zh) | 一种基于B树数据结构的MapReduce计算过程优化方法 | |
JP7146611B2 (ja) | カラムストアデータベースシステム及びデータベース処理高速化方法 | |
CN109542631A (zh) | 一种备机的重演方法、装置、服务器及存储介质 | |
CN115544321B (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 |