CN114490865A - 数据库同步方法、装置、设备及计算机存储介质 - Google Patents

数据库同步方法、装置、设备及计算机存储介质 Download PDF

Info

Publication number
CN114490865A
CN114490865A CN202111580888.7A CN202111580888A CN114490865A CN 114490865 A CN114490865 A CN 114490865A CN 202111580888 A CN202111580888 A CN 202111580888A CN 114490865 A CN114490865 A CN 114490865A
Authority
CN
China
Prior art keywords
records
database
statement
merging
record
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
Application number
CN202111580888.7A
Other languages
English (en)
Inventor
任正国
林佩航
杨济嘉
张攀
卢学嘉
方子扬
陈晓帆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202111580888.7A priority Critical patent/CN114490865A/zh
Publication of CN114490865A publication Critical patent/CN114490865A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据库同步方法、装置、设备及计算机存储介质,涉及数据库同步技术领域,用于提升数据库数据同步的效率。该方法包括:解析源数据库的数据库日志,获取所述源数据库的数据表的多条操作记录;基于所述多条操作记录针对的操作对象,对所述多条操作记录进行合并处理,获得合并后的至少一条操作记录;基于所述至少一条操作记录的操作类型,对所述至少一条操作记录进行分类归并处理,获得每种操作类型对应的操作记录集合;基于获得的各个操作记录集合,对目标数据库进行数据同步。

Description

数据库同步方法、装置、设备及计算机存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及数据库同步技术领域,提供一种数据库同步方法、装置、设备及计算机存储介质。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库,数据库管理系统是为管理数据库而设计的软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来分类,例如关系式、可扩展标记语言(ExtensibleMarkup Language,XML);或依据所用查询语言来分类,例如结构化查询语言(StructuredQuery Language,SQL)、XML查询语言(XQuery),亦或是采用其他的分类方式。
数据库管理系统是数据库系统的核心组成部分,主要完成对数据库的操作与管理功能,实现数据库对象的创建、数据库存储数据的查询、添加、修改与删除操作和数据库的用户管理、权限管理等。在数据库的备份、主从同步以及迁移等过程中,都可能涉及到数据库的同步过程,如何快捷有效的进行数据库同步过程是值得考虑的问题。
发明内容
本申请实施例提供一种数据库同步方法、装置、设备及计算机存储介质,用于提升了数据库的数据同步的效率。
一方面,提供一种数据库同步方法,所述方法包括:
解析源数据库的数据库日志,获取所述源数据库的数据表的多条操作记录;
基于所述多条操作记录针对的操作对象,对所述多条操作记录进行合并处理,获得合并后的至少一条操作记录;
基于所述至少一条操作的操作类型,对所述至少一条操作记录进行分类归并处理,获得每种操作类型对应的操作记录集合;
基于获得的各个操作记录集合,对目标数据库进行数据同步。
一方面,提供一种数据库同步装置,所述装置包括:。
解析单元,用于解析源数据库的数据库日志,获取所述源数据库的数据表的多条操作记录;
合并处理单元,用于基于所述多条操作记录针对的操作对象,对所述多条操作记录进行合并处理,获得合并后的至少一条操作记录;
分类归并单元,用于基于所述至少一条操作的操作类型,对所述至少一条操作记录进行分类归并处理,获得每种操作类型对应的操作记录集合;
同步入库单元,用于基于获得的各个操作记录集合,对目标数据库进行数据同步。
可选的,所述合并处理
单元,具体用于:
对所述多条操作记录中相同操作对象对应的多条操作记录进行合并,获得各个操作对象各自对应的合并后的操作记录;
按照各条操作记录的执行顺序,对所述各个操作对象各自对应的合并后的操作记录中,级联的操作对象对应的操作记录进行合并,获得所述至少一条操作记录。
可选的,所述合并处理单元,具体用于:
将各条操作记录对应的操作对象进行对比,确定每两条操作记录对应的操作对象是否相同;
若所述每两条操作记录对应的操作对象相同,则将所述每两条操作记录添加至相应操作对象各自对应的操作记录序列中;
对所述各个操作对象各自对应的操作记录序列进行合并,获得各个操作对象各自对应的合并后的操作记录。
可选的,所述相同操作对象为相同数据表中的相同主键值。
可选的,所述合并处理单元,具体用于:
针对所述各个操作对象,分别执行如下操作:
针对一个操作对象,若相应的操作记录序列中存在插入操作语句和修改操作语句,则合并为插入操作语句;或者,
若一个操作对象的操作记录序列中最后一条是删除操作语句,则合并为删除操作语句。
可选的,所述合并处理单元,具体用于:
若针对第一操作对象执行插入操作语句之后,执行将第一操作对象更新至第二操作对象的修改操作语句,则合并为针对所述第二操作对象执行插入操作语句;或者,
若执行将第一操作对象更新至第二操作对象的修改操作语句之后,执行将第二操作对象更新至第三操作对象的修改操作语句,则合并为将第一操作对象更新至第三操作对象的修改操作语句;或者,
若执行将第一操作对象更新至第二操作对象的修改操作语句之后,执行删除所述第二操作对象的删除操作语句,则合并为删除第一操作对象的删除操作语句。
可选的,所述同步入库单元,具体用于:
分别按照所述各个操作记录集合,并发的执行每个操作记录集合中的操作语句,以对所述目标数据库进行数据同步。
一方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种方法的步骤。
一方面,提供一种计算机存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任一种方法的步骤。
一方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种方法的步骤。
本申请实施例中,通过解析源数据库的数据库日志,进而可以获取源数据库的数据表的多条操作记录,并基于多条操作记录针对的操作对象,对多条操作记录进行合并处理,获得合并后的至少一条操作记录,以及基于至少一条操作的操作类型,对至少一条操作记录进行分类归并处理,获得每种操作类型对应的操作记录集合,从而基于合并以及归类之后的各个操作记录集合,对目标数据库进行数据同步,通过上述的合并处理过程,使得操作记录的数量得以大量的减少,极大的提升操作语句的执行效率,且按照分类进行数据同步,使得操作语句得以并发批量进行入库,提升了同步数据并发执行效率,进而,提升了数据库同步的效率。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的应用场景示意图;
图2为本申请实施例提供的数据库同步方法的流程示意图;
图3为本申请实施例提供的合并处理过程的流程示意图;
图4为本申请实施例提供的合并过程的示例图;
图5为本申请实施例提供的级联的操作对象的合并示例图;
图6为本申请实施例提供的进行分类归并的示例图;
图7为本申请实施例提供的数据库同步装置的一种结构示意图;
图8为本申请实施例提供的计算机设备的一种结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
为便于理解本申请实施例提供的技术方案,这里先对本申请实施例使用的一些关键名词进行解释:
操作对象:操作是指可以对数据表进行操作,例如可以为删除(delete)操作、插入(insert)操作以及修改(update),操作对象则为数据库的数据表中可进行操作的对象,例如可以为数据表中的主关键字(primary key),后简称主键。
操作记录:指对操作对象进行操作的记录,每一次操作都会形成操作记录,如对数据表中的主键值1进行一次insert操作,则会形成一条“insert 1”的操作记录,通过操作记录中,则可以获取对数据库中的数据表进行了何种改动,从而得以基于操作记录对另一数据库同步这种改动,使得两个数据库得以同步。
下面对本申请实施例的设计思想进行简要介绍。
目前,在数据库的备份、主从同步以及迁移等过程中,都可能涉及到数据库的同步过程,例如源数据库有10亿条日志数据,数据大小足为800G,需要做数据实时同步时,那么同步至目标数据库中的消耗是非常大的,可见,如何快捷有效的进行数据库同步过程是值得考虑的问题。
鉴于此,本申请实施例提供一种基于数据库同步方法,在该方法中,通过解析源数据库的数据库日志,进而可以获取源数据库的数据表的多条操作记录,并基于多条操作记录针对的操作对象,对多条操作记录进行合并处理,获得合并后的至少一条操作记录,以及基于至少一条操作的操作类型,对至少一条操作记录进行分类归并处理,获得每种操作类型对应的操作记录集合,从而基于合并以及归类之后的各个操作记录集合,对目标数据库进行数据同步,通过上述的合并处理过程,使得操作记录的数量得以大量的减少,极大的提升操作语句的执行效率,且按照分类进行数据同步,使得操作语句得以并发批量进行入库,提升了同步数据并发执行效率,进而,提升了数据库同步的效率。
此外,本申请实施例中,通过根据主键值合并相同表的变更记录,保证一批数据一张表的相同主键只有一条结果,可极大减少操作语句的数据量,提升操作语句的执行效率。以及,还可以按执行顺序合并级联主键变更的记录,在保证数据完整的情况下,减少因为数据级联修改导致数据库死锁的风险,从而提升数据库的效率。并且,由于执行同步数据按主键合并和级联合并之后,增量同步数据的执行顺序不再影响数据的最终一致性,因此能按数据操作类型对同步数据进行归并,然后再按归好类的语句进行批量入库,提升同步数据并发执行效率。
下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施过程中,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
本申请实施例提供的方案可以适用于大多数需要进行数据库同步的场景。如图1所示,为本申请实施例提供的一种应用场景示意图,在该场景中,可以包括源数据库101、数据库管理系统102和目标数据库103。
源数据库101和目标数据库103均可以为分布式关系型数据库、分布式文件系统和非结构化数据库等数据,在实际应用中,源数据库101和目标数据库103的类型可以相同,也可以不同,本申请实施例对此不做限制。
数据库管理系统102用于实现源数据库101和目标数据库103的操作与管理功能,实现数据库对象的创建、数据库存储数据的查询、添加、修改与删除操作和数据库的用户管理、权限管理等功能。
参见图1所示,数据库管理系统102可以包括如下部分:
(1)管理节点集群
管理节点集群用于整个数据库管理系统102的整体管理功能,用于进行配置以及其他集群的协调调度。例如,在数据核对场景中,管理节点集群可以用于数据核对配置,推送数据核对配置到核对节点(即同步节点集群中的同步节点),同时接收核对节点反馈回来的数据同步状态、进度等信息;在数据同步场景中,管理节点集群可以用于数据同步配置,推送数据同步配置到同步节点,以及为每个同步节点进行任务分配等,同时接收同步节点返回的数据同步状态、进度等信息。
(2)同步节点集群
同步节点集群为执行具体数据核对或者数据同步过程的模块,同步节点集群可以包括多个同步节点,每个同步节点可以用于执行一个或者数据核对或者数据同步任务(task),使得多个同步节点可以并发批量执行任务,提升任务执行效率。
(3)协调器集群
协调器集群为基于管理节点集群的执行,执行协调数据核对或者数据同步的模块。
上述的各个集群可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、即内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
本申请各实施例中提供的方法流程,可以由数据库管理系统102来执行,当然在实际应用中,也可以通过上述源数据库101、数据库管理系统102和目标数据库103共同执行。以数据库管理系统102为例,数据库管理系统102可以包括一个或多个处理器、存储器等。其中,服务器102的存储器中可以存储本申请实施例提供的数据库同步方法的程序指令,这些程序指令被处理器执行时能够用以实现本申请实施例提供的数据库同步方法的步骤,以实现数据库同步过程。
上述源数据库101、数据库管理系统102和目标数据库103之间可以通过一个或者多个网络进行直接或间接的通信连接。该网络可以是有线网络,也可以是无线网络,例如无线网络可以是移动蜂窝网络,或者可以是无线保真(Wireless-Fidelity,WIFI)网络,当然还可以是其他可能的网络,本发明实施例对此不做限制。
当然,本申请实施例提供的方法并不限用于图1所示的应用场景中,还可以用于其他可能的应用场景,本申请实施例并不进行限制。对于图1所示的应用场景的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。
参见图2所示,为本申请实施例提供的数据库同步方法的流程示意图。
步骤201:解析源数据库的数据库日志,获取源数据库的数据表的多条操作记录。
本申请实施例中,当需要进行表数据同步时,则可以触发获取源数据库的数据库日志,数据库日志包含了整个源数据库运行过程中产生的变更记录,通过数据库日志则可以获知源数据库进行了哪些变动,也就是说,操作记录实质上也就是需要同步的数据,这些操作记录在目标数据库执行之后,则可以使得目标数据库与源数据库的数据同步。
例如,对源数据库的数据表A的主键1进行了insert操作,则可以在数据库日志中增加一条“insert,数据表A,主键1”的操作记录,从而通过对数据库日志进行解析,则可以获取源数据库的数据表的多条操作记录。
在一种实施方式中,可以定期执行数据库同步的过程。则可以预先设定数据库同步的周期,则周期到达时,则可以触发本申请实施例提供的数据库同步流程,例如周期可以设置为1小时、一天或者一个星期等,具体时长可以基于实际的业务进行设定,本申请实施例对此不做限制。
在一种实施方式中,也可以实时的执行数据库同步的过程。例如,当源数据库进行了一批数据的变更之后,则可以将该批数据变更实时更新至目标数据库中,使得两个数据库保持实时同步。
步骤202:基于多条操作记录针对的操作对象,对多条操作记录进行合并处理,获得合并后的至少一条操作记录。
本申请实施例中,操作是指可以对数据表进行操作,操作对象则为数据库的数据表中可进行操作的对象,例如可以为数据表中的主键。
由于针对同一操作对象的多条操作记录而言,虽然在源数据库中进行了多次操作得到了当前的操作结果,但是其操作结果实际上可以合并为一条操作记录即可完成,例如先在数据表中的第1行插入了1行数据,后又将该行数据修改至第2行,实际上在第2行进行一次数据插入操作即可完成;又或者,对第2行的数据进行修改操作之后,又对第2行数据进行了删除,那么结果即是第2行数据在数据表中已不存在,从而实际上直接执行删除操作即可完成。因此,可以基于此特性,可以对每个操作对象对应的操作记录进行合并,使得每个操作对象仅对应一条操作记录。
此外,对于级联的操作对象而言,多条操作记录也可以合并为一条操作记录。例如,以主键为例,当将主键值1的数据修改至主键值2后,又将主键值2的数据修改至主键值3,那么实际上执行主键值1的数据直接修改至主键3的修改操作即可达到相同的目的;又或者,当将主键值1的数据修改至主键值2后,又对主键值2的数据进行删除操作,那么实际上直接执行主键值1的数据即可达到相同的目的。因此,可以基于此特性,可以对级联的操作对象的操作记录进行合并,进一步减少操作记录的数量。
因此,参见图3所示,进行合并处理可以包括如下步骤。
步骤2021:对多条操作记录中相同操作对象对应的多条操作记录进行合并,获得各个操作对象各自对应的合并后的操作记录。
本申请实施例中,为了将各个操作对象的操作记录集中到一起处理,可以先将各条操作记录对应的操作对象进行对比,确定每两条操作记录对应的操作对象是否相同,若每两条操作记录对应的操作对象相同,则将每两条操作记录添加至相应操作对象各自对应的操作记录序列中,进而对各个操作对象各自对应的操作记录序列进行合并,获得各个操作对象各自对应的合并后的操作记录。
具体的,操作记录序列中可以按照执行顺序进行排序。
本申请实施例中,操作对象可以是指表格中的主键值,因此,相同操作对象则可以为相同数据表中的相同主键值。
具体的,由于针对每一个操作对象的合并过程是类似的,因此这里仅以其中任意的一个操作对象为例进行说明,针对一个操作对象而言,若该操作对象的操作记录序列中存在插入操作语句和修改操作语句,则可以合并为一条插入操作语句;若一个操作对象的操作记录序列中最后一条是删除操作语句,则可以合并为一条删除操作语句。
参见图4所示,为几种合并情况的示例图。其中,当存在insert操作语句和update操作语句时,则合并为insert操作语句;当最后一条是delete操作语句时,则合并为delete操作语句;当存在两次相同update操作语句时,则合并为一条update操作语句,例如对第1行数据进行了两次修改,则可以执行从原始数据到最终数据的一次修改操作即可实现。
因而,通过对每个操作对象对应的操作记录进行合并后,使得每个操作对象仅存在一条操作记录。例如,根据主键值合并相同表的变更记录,保证一批数据一张表的相同主键值的多条变更数据合并后只有一条结果,可极大减少同步数据的数量,提升SQL语句的执行效率。
步骤2022:按照各条操作记录的执行顺序,对各个操作对象各自对应的合并后的操作记录中,级联的操作对象对应的操作记录进行合并,获得至少一条操作记录。
本申请实施例中,级联是指两个操作对象是连续的,以主键为例,即两个连续的主键值则可以为级联的操作对象,如主键值1和主键值2。
下面针对几种实际的情况介绍级联的操作对象的合并过程。参见图5所示,为级联的操作对象的合并示例图。
在一种实施方式中,若针对第一操作对象执行插入操作语句之后,执行将第一操作对象更新至第二操作对象的更新操作语句,则合并为针对第二操作对象执行插入操作语句。参见图5所示,当两条操作记录分别为先执行insert(主键1)后,执行update(主键1→2),即在数据表中插入主键1的数据后,将主键1的数据修改至主键2,那么可以合并为直接在主键2进行数据插入操作,也可获得相同的执行结果。
在一种实施方式中,若执行将第一操作对象更新至第二操作对象的更新操作语句之后,执行将第二操作对象更新至第三操作对象的更新操作语句,则合并为将第一操作对象更新至第三操作对象的更新操作语句。参见图5所示,当两条操作记录分别为先执行update(主键1→2)后,执行update(主键2→3),即在数据表中将主键1的数据修改至主键2之后,又将主键2的数据修改至主键3,那么可以合并为直接将主键1的数据修改至主键3,也可获得相同的执行结果。
在一种实施方式中,若执行将第一操作对象更新至第二操作对象的更新操作语句之后,执行删除第二操作对象的删除操作语句,则合并为删除第一操作对象的删除操作语句。参见图5所示,当两条操作记录分别为先执行update(主键1→2)后,执行delete(主键2),即在数据表中将主键1的数据修改至主键2之后,又将主键2的数据删除,那么实际上直接删除主键1的数据即可,即可以合并为直接将主键1的数据进行删除操作语句,也可获得相同的执行结果。
通过上述的过程,即按同步数据的执行顺序合并级联主键变更记录,可以在保证数据完整的情况下,减少因为同步数据级联修改导致数据库死锁的风险,进一步提升数据库同步的效率。
当然,上述的示例仅为可能的实施方式,在实际操作过程中,还可能存在其他可能的实施方式,本申请实施例对此不做限制。
需要说明的是,本申请实施例中,上述的步骤2021和步骤2022并没有实质上的先后顺序,在实际实施过程中,可以先执行步骤2021,即先对每个操作对象的操作记录进行合并后,再将级联的操作对象的操作记录进行合并;或者,也可以先执行步骤2022,即将级联的操作对象的操作记录进行合并后,再对每个操作对象的操作记录进行合并;或者,在不矛盾的情况下,步骤2021和步骤2022也可以是同时进行的。
步骤203:基于至少一条操作记录的操作类型,对至少一条操作记录进行分类归并处理,获得每种操作类型对应的操作记录集合。
本申请实施例中,在执行同步数据按主键合并和级联合并过程之后,增量同步数据的执行顺序不再影响数据的最终一致性,因此可以对同步数据按操作类型进行归并,然后再按分好类的语句进行并发批量入库,提升同步数据并发执行效率。
具体的,参见图6所示,为进行分类归并的示例图。其中,在获得的至少一条操作记录中共包括3种操作类型,即图5所示的insert操作、update操作和delete操作,进而进行分类归并之后,则可以获得如图5所示的操作记录集合1~3,每个操作记录集合包括相同操作类型的至少一条操作记录。
步骤204:基于获得的各个操作记录集合,对目标数据库进行数据同步。
具体的,在获得上述的各个操作记录集合之后,则可以分别按照各个操作记录集合,并发的执行每个操作记录集合中的操作语句,以对目标数据库进行并发的数据入库,从而提升同步数据并发执行效率,进一步提升数据库同步的效率。
下面,结合一个实际的例子对本申请实施例的技术方案进行介绍。
其中,在该实施例中,源数据库和目标数据库业务系统均为分布式数据库,总共有10亿条日志数据,数据大小约为800G,需要做数据实时同步,包括表数据的全量同步和实时增量同步。
本申请实施例中,在实施之前,可以配置好源数据库信息和目标服务器信息,进而可以该信息一键自动化生成同步映射关系,在后续的同步过程中,则可以将源数据库的数据同步到目标服务器。
在具体实施过程中,可以实时解析源库日志,将源库的日志数据解析成同步数据,然后对同步数据进行压缩和加密传输到目标数据库节点上,进而可以利用本申请实施例的方法对同步数据进行处理后再执行。
具体的,可以根据同步数据的主键值合并相同表的变更记录,保证一批数据一张表的相同主键只有一条结果,主键值相同的多条变更数据合并后的结果为,如果有一条insert操作语句和多条update操作语句,则可以合并成一条insert操作语句,而如果最后一条是delete操作语句,则直接执行最后的delete语句,从而通过按主键合并多条语句可极大减少同步数据的数量,提升后续的执行效率。
此外,还可以按同步数据的执行顺序合并级联主键变更的记录,以在保证数据完整的情况下,减少因为同步数据级联修改导致数据库死锁的风险,从而提升数据库的效率,并且,在执行同步数据按主键合并和级联合并之后,增量同步数据的执行顺序不再影响数据的最终一致性,因此能按数据操作类型对同步数据进行归并,然后再按归好类的语句进行批量入库。
在通过上述方法进行数据实时同步后,整体用时约为3小时,5个同步通道平均每秒同步性能为10万条记录,同步性能稳定,同步数据量800G,吞吐量约为74M/秒,同步性能相比常规同步提升了50%,并且实时同步数据经客户检查百分百准确,可见,上述方法过程不会影响数据的最终一致性,且同步效率得到了很大的改善。
请参见图7,基于同一发明构思,本申请实施例还提供了一种数据库同步装置70,该装置包括:
解析单元701,用于解析源数据库的数据库日志,获取源数据库的数据表的多条操作记录;
合并处理单元702,用于基于多条操作记录针对的操作对象,对多条操作记录进行合并处理,获得合并后的至少一条操作记录;
分类归并单元703,用于基于至少一条操作的操作类型,对至少一条操作记录进行分类归并处理,获得每种操作类型对应的操作记录集合;
同步入库单元704,用于基于获得的各个操作记录集合,对目标数据库进行数据同步。
可选的,合并处理单元702,具体用于:
对多条操作记录中相同操作对象对应的多条操作记录进行合并,获得各个操作对象各自对应的合并后的操作记录;
按照各条操作记录的执行顺序,对各个操作对象各自对应的合并后的操作记录中,级联的操作对象对应的操作记录进行合并,获得至少一条操作记录。
可选的,合并处理单元702,具体用于:
将各条操作记录对应的操作对象进行对比,确定每两条操作记录对应的操作对象是否相同;
若每两条操作记录对应的操作对象相同,则将每两条操作记录添加至相应操作对象各自对应的操作记录序列中;
对各个操作对象各自对应的操作记录序列进行合并,获得各个操作对象各自对应的合并后的操作记录。
可选的,相同操作对象为相同数据表中的相同主键值。
可选的,合并处理单元702,具体用于:
针对各个操作对象,分别执行如下操作:
针对一个操作对象,若相应的操作记录序列中存在插入操作语句和修改操作语句,则合并为插入操作语句;或者,
若一个操作对象的操作记录序列中最后一条是删除操作语句,则合并为删除操作语句。
可选的,合并处理单元702,具体用于:
若针对第一操作对象执行插入操作语句之后,执行将第一操作对象更新至第二操作对象的修改操作语句,则合并为针对第二操作对象执行插入操作语句;或者,
若执行将第一操作对象更新至第二操作对象的修改操作语句之后,执行将第二操作对象更新至第三操作对象的修改操作语句,则合并为将第一操作对象更新至第三操作对象的修改操作语句;或者,
若执行将第一操作对象更新至第二操作对象的修改操作语句之后,执行删除第二操作对象的删除操作语句,则合并为删除第一操作对象的删除操作语句。
可选的,同步入库单元704,具体用于:
分别按照各个操作记录集合,并发的执行每个操作记录集合中的操作语句,以对目标数据库进行数据同步。
通过上述装置,可以根据主键值合并相同表的变更记录,保证一批数据一张表的相同主键只有一条结果,极大减少SQL语句的数量,提升SQL语句的执行效率。此外,还可以按同步数据的执行顺序合并级联主键变更的记录;在保证数据完整的情况下,减少因为同步数据级联修改导致数据库死锁的风险,从而提升数据库的效率,并且,在执行同步数据按主键合并和级联合并之后,增量同步数据的执行顺序不再影响数据的最终一致性,因此能按数据操作类型对同步数据进行归并,然后再按归好类的语句进行批量入库,提升同步数据并发执行效率。
该装置可以用于执行本申请各实施例中所示的方法,因此,对于该装置的各功能模块所能够实现的功能等可参考前述实施例的描述,不多赘述。
请参见图8,基于同一技术构思,本申请实施例还提供了一种计算机设备80,该计算机设备80可以为图1所示的源数据库101、数据库管理系统102或者目标数据库103中的设备,该计算机设备80可以包括存储器801和处理器802。
所述存储器801,用于存储处理器802执行的计算机程序。存储器801可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。处理器802,可以是一个中央处理单元(central processing unit,CPU),或者为数字处理单元等等。本申请实施例中不限定上述存储器801和处理器802之间的具体连接介质。本申请实施例在图8中以存储器801和处理器802之间通过总线803连接,总线803在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线803可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器801可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器801也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器801是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器801可以是上述存储器的组合。
处理器802,用于调用所述存储器801中存储的计算机程序时执行本申请各实施例中设备所执行的方法。
在一些可能的实施方式中,本申请提供的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的方法中的步骤,例如,所述计算机设备可以执行本申请各实施例中设备所执行的方法。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (11)

1.一种数据库同步方法,其特征在于,所述方法包括:
解析源数据库的数据库日志,获取所述源数据库的数据表的多条操作记录;
基于所述多条操作记录针对的操作对象,对所述多条操作记录进行合并处理,获得合并后的至少一条操作记录;
基于所述至少一条操作记录各自对应的操作类型,对所述至少一条操作记录进行分类归并处理,获得每种操作类型对应的操作记录集合;
基于获得的各个操作记录集合,对目标数据库进行数据同步。
2.如权利要求1所述的方法,其特征在于,基于所述多条操作记录针对的操作对象,对所述多条操作记录进行合并处理,获得合并后的至少一条操作记录,包括:
对所述多条操作记录中相同操作对象对应的多条操作记录进行合并,获得各个操作对象各自对应的合并后的操作记录;
按照各条操作记录的执行顺序,对所述各个操作对象各自对应的合并后的操作记录中,级联的操作对象对应的操作记录进行合并,获得所述至少一条操作记录。
3.如权利要求2所述的方法,其特征在于,在对所述多条操作记录中相同操作对象对应的多条操作记录进行合并,获得各个操作对象各自对应的合并后的操作记录之前,包括:
将各条操作记录对应的操作对象进行对比,确定每两条操作记录对应的操作对象是否相同;
若所述每两条操作记录对应的操作对象相同,则将所述每两条操作记录添加至相应操作对象各自对应的操作记录序列中;
则对所述多条操作记录中相同操作对象对应的多条操作记录进行合并,获得各个操作对象各自对应的合并后的操作记录,包括:
对所述各个操作对象各自对应的操作记录序列进行合并,获得各个操作对象各自对应的合并后的操作记录。
4.如权利要求2或者3所述的方法,其特征在于,所述相同操作对象为相同数据表中的相同主键值。
5.如权利要求3所述的方法,其特征在于,对所述各个操作对象各自对应的操作记录序列进行合并,获得各个操作对象各自对应的合并后的操作记录,包括:
针对所述各个操作对象,分别执行如下操作:
针对一个操作对象,若相应的操作记录序列中存在插入操作语句和修改操作语句,则合并为插入操作语句;或者,
若一个操作对象的操作记录序列中最后一条是删除操作语句,则合并为删除操作语句。
6.如权利要求1所述的方法,其特征在于,按照各条操作记录的执行顺序,对所述各个操作对象各自对应的合并后的操作记录中,级联的操作对象对应的操作记录进行合并,获得所述至少一条操作记录,包括:
若针对第一操作对象执行插入操作语句之后,执行将第一操作对象更新至第二操作对象的修改操作语句,则合并为针对所述第二操作对象执行插入操作语句;或者,
若执行将第一操作对象更新至第二操作对象的修改操作语句之后,执行将第二操作对象更新至第三操作对象的修改操作语句,则合并为将第一操作对象更新至第三操作对象的修改操作语句;或者,
若执行将第一操作对象更新至第二操作对象的修改操作语句之后,执行删除所述第二操作对象的删除操作语句,则合并为删除第一操作对象的删除操作语句。
7.如权利要求1所述的方法,其特征在于,基于获得的各个操作记录集合,对目标数据库进行数据同步,包括:
分别按照所述各个操作记录集合,并发的执行每个操作记录集合中的操作语句,以对所述目标数据库进行数据同步。
8.一种数据库同步装置,其特征在于,所述装置包括:
解析单元,用于解析源数据库的数据库日志,获取所述源数据库的数据表的多条操作记录;
合并处理单元,用于基于所述多条操作记录针对的操作对象,对所述多条操作记录进行合并处理,获得合并后的至少一条操作记录;
分类归并单元,用于基于所述至少一条操作记录各自对应的操作类型,对所述至少一条操作记录进行分类归并处理,获得每种操作类型对应的操作记录集合;
同步入库单元,用于基于获得的各个操作记录集合,对目标数据库进行数据同步。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,
所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机存储介质,其上存储有计算机程序指令,其特征在于,
该计算机程序指令被处理器执行时实现权利要求1至7任一项所述方法的步骤。
11.一种计算机程序产品,包括计算机程序指令,其特征在于,
该计算机程序指令被处理器执行时实现权利要求1至7任一项所述方法的步骤。
CN202111580888.7A 2021-12-22 2021-12-22 数据库同步方法、装置、设备及计算机存储介质 Pending CN114490865A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111580888.7A CN114490865A (zh) 2021-12-22 2021-12-22 数据库同步方法、装置、设备及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111580888.7A CN114490865A (zh) 2021-12-22 2021-12-22 数据库同步方法、装置、设备及计算机存储介质

Publications (1)

Publication Number Publication Date
CN114490865A true CN114490865A (zh) 2022-05-13

Family

ID=81494495

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111580888.7A Pending CN114490865A (zh) 2021-12-22 2021-12-22 数据库同步方法、装置、设备及计算机存储介质

Country Status (1)

Country Link
CN (1) CN114490865A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116821245A (zh) * 2023-07-05 2023-09-29 贝壳找房(北京)科技有限公司 分布式场景下数据聚合同步方法及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116821245A (zh) * 2023-07-05 2023-09-29 贝壳找房(北京)科技有限公司 分布式场景下数据聚合同步方法及存储介质

Similar Documents

Publication Publication Date Title
CN109997126B (zh) 事件驱动提取、变换、加载(etl)处理
US10956422B2 (en) Integrating event processing with map-reduce
CN112506870B (zh) 数据仓库增量更新方法、装置及计算机设备
CN111917834A (zh) 一种数据同步方法、装置、存储介质及计算机设备
CN111651519A (zh) 数据同步方法、数据同步装置、电子设备及存储介质
CN111737227A (zh) 数据修改方法及系统
CN111611276A (zh) 数据查询方法、装置及存储介质
CN115858488A (zh) 基于数据治理的平行迁移方法、装置及可读介质
CN114661823A (zh) 数据同步的方法、装置、电子设备及可读存储介质
CN114490865A (zh) 数据库同步方法、装置、设备及计算机存储介质
CN110309206B (zh) 订单信息采集方法及系统
CN104317820B (zh) 报表的统计方法和装置
CN114443599A (zh) 数据同步方法、装置、电子设备及存储介质
CN111143463A (zh) 一种基于主题模型的银行数据仓库的构建方法及装置
CN116628042A (zh) 数据处理方法、装置、设备及介质
CN110688355A (zh) 变更容器状态的方法和装置
CN113760600B (zh) 一种数据库备份方法、数据库还原方法和相关装置
CN113220530B (zh) 数据质量监控方法及平台
CN115455006A (zh) 数据处理方法、数据处理装置、电子设备及存储介质
Chardonnens Big data analytics on high velocity streams
CN113868138A (zh) 测试数据的获取方法、系统、设备及存储介质
CN117131059A (zh) 报表数据处理方法、装置、设备及存储介质
CN112835901A (zh) 文件存储方法及装置、计算机设备、计算机可读存储介质
CN113419896A (zh) 数据恢复方法、装置、电子设备及计算机可读介质
CN111339245A (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