CN114510531A - 数据库同步方法、装置、电子设备和存储介质 - Google Patents

数据库同步方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN114510531A
CN114510531A CN202011286758.8A CN202011286758A CN114510531A CN 114510531 A CN114510531 A CN 114510531A CN 202011286758 A CN202011286758 A CN 202011286758A CN 114510531 A CN114510531 A CN 114510531A
Authority
CN
China
Prior art keywords
data
task
synchronization
database
middleware
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
CN202011286758.8A
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.)
Beijing Dianzhi Technology Co ltd
Original Assignee
Beijing Dianzhi 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 Beijing Dianzhi Technology Co ltd filed Critical Beijing Dianzhi Technology Co ltd
Priority to CN202011286758.8A priority Critical patent/CN114510531A/zh
Publication of CN114510531A publication Critical patent/CN114510531A/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
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

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

Abstract

本公开涉及互联网技术领域,提供一种数据库同步方法、装置、电子设备和存储介质。数据库同步方法包括:启动同步任务,将所述同步任务的配置数据储存至中间件;根据所述同步任务的配置数据自源数据库采集数据;将所采集的数据发送至消息队列;由数据消费线程自所述消息队列上消费所采集的数据,其中,所述数据消费线程根据所述中间件的所述同步任务的配置数据生成;以及根据所采集的数据同步至目标数据库。本公开通过同步任务的配置自源数据库至目的数据库的数据同步,实现跨网络环境及跨区域特性的适应以及定制化的数据同步操作。

Description

数据库同步方法、装置、电子设备和存储介质
技术领域
本公开涉及互联网技术领域,具体地说,涉及一种数据库同步方法、装置、电子设备和存储介质。
背景技术
在诸如电商采购系统的各类管理系统中,数据存储是基于多用户逻辑隔离的,即在数据库中通过使用不同的用户编码来区分数据的归属用户。在该种数据隔离的设计下,部分客户为保证数据的安全性,需要将客户所属用户编码的数据同步至客户方的数据中保存,以便于开发仅属于该客户的定制功能。由此,目前存在将多租户数据库中某个用户的数据同步至客户机房的自建数据库或客户指定的云数据库内,也可用于异步数据的备份的需求。针对以上两种场景,可以使用如下方案进行数据同步:1)用户数据同步:利用mysql(关系型数据库管理系统)搭建主从机制,进行数据同步;2)异地灾备:定时使用mysql命令导出导入数据。
然而,上述方案将存在如下缺陷:1)用户数据同步无法保证跨网络环境及跨区域特性。例如,源库多用户数据机房在北京,客户自建数据库机房在上海,由于主从机制的特性,无法进行跨网络环境和异地的数据传输;2)无法实现针对某一用户或部分表的定制化同步。例如,无法实现针对某个用户下的商品数据同步,订单数据不同步的定制化操作。
需要说明的是,上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本公开提供一种数据库同步方法、装置、电子设备和存储介质,通过同步任务的配置自源数据库至目的数据库的数据同步,实现跨网络环境及跨区域特性的适应以及定制化的数据同步操作。
本公开的一个方面提供一种数据库同步方法,包括:任务启动步骤:启动同步任务,将所述同步任务的配置数据储存至中间件;数据采集步骤:根据所述同步任务的配置数据自源数据库采集数据;数据发送步骤:将所采集的数据发送至消息队列;数据消费步骤:由数据消费线程自所述消息队列上消费所采集的数据,其中,所述数据消费线程根据所述中间件的所述同步任务的配置数据生成;以及同步步骤:根据所采集的数据同步至目标数据库。
在一些实施例中,所述同步任务为结构迁移任务时,所述任务启动步骤为结构迁移任务启动步骤,包括:判断自所述源数据库至所述目标数据库,是否首次执行所述结构迁移任务;若是,则生成库结构同步任务以及至少一表结构同步任务;若否,则生成至少一表结构同步任务,其中,所述库结构同步任务供所述数据采集步骤自源数据库采集库创建语句,并将采集的库创建语句中的源数据库名替换为目标数据库名;一个表结构同步任务关联源数据库中的一个表,所述表结构同步任务供所述数据采集步骤自源数据库采集表创建语句,并将采集的库创建语句中的源数据库的表名替换为目标数据库的表名。
在一些实施例中,所述同步任务为全量迁移任务时,所述任务启动步骤包括:判断自所述源数据库至所述目标数据库,是否首次执行所述全量迁移任务;若是,则执行所述结构迁移任务启动步骤,并生成至少一表数据同步任务;若否,则获取所生成的表数据同步任务和/或生成新的表数据同步任务,其中,一个表数据同步任务关联源数据库的一个表,所述表数据同步任务供所述数据采集步骤自源数据库采集关联表的数据。
在一些实施例中,所述表结构同步任务和/或所述表结构数据任务为多个时,所述数据消费步骤由多个数据消费线程自所述消息队列上消费所采集的数据。
在一些实施例中,所述同步任务为增量迁移任务时,所述数据采集步骤自所述源数据库采集待同步的二进制日志,所述数据发送步骤将所述待同步的二进制日志的按时间发生顺序发送至所述消息队列,所述数据消费步骤将依次自所述消息队列消费的所述待同步的二进制日志转换为数据库执行语句,以供所述同步步骤在所述目标数据库执行。
在一些实施例中,所述任务启动步骤之后,且所述数据采集步骤之前还包括:监听所述中间件储存的同步任务的配置数据;响应于所述中间件储存的同步任务的配置数据的变更触发所述数据采集步骤的执行。
在一些实施例中,所述数据采集步骤之后,且所述数据发送步骤之前还包括:按事件类型过滤和/或组装所采集的二进制日志。
本公开的另一个方面提供一种数据库同步装置,包括:任务启动模块,配置成启动同步任务,将所述同步任务的配置数据储存至中间件;数据采集模块:配置成根据所述同步任务的配置数据自源数据库采集数据;数据发送模块:配置成将所采集的数据发送至消息队列;数据消费模块:配置成由数据消费线程自所述消息队列上消费所采集的数据,其中,所述数据消费线程根据所述中间件的所述同步任务的配置数据生成;以及同步模块:配置成根据所采集的数据同步至目标数据库。
本公开的又一个方面提供一种电子设备,包括:处理器;存储器,所述存储器中存储有可执行指令;其中,所述可执行指令被所述处理器执行时,实现上述任意实施例所述的数据库同步方法。
本公开的又一个方面提供一种计算机可读的存储介质,用于存储程序,其特征在于,所述程序被执行时实现上述任意实施例所述的数据库同步方法。
本公开与现有技术相比的有益效果至少包括:
本公开通过将同步任务的配置数据储存至中间件以供进行数据采集以及数据消费线程的生成,由此,可以通过配置数据的设置和修改以实现定制化的数据同步操作;
本公开通过将同步任务的配置数据储存至中间件以供进行数据采集后,将采集的输出传输至消息队列,以供数据消费线程消费,从而同步至目标数据库中,由此,实现从源数据库同步数据至目标数据库实现跨网络环境及跨区域特性的适应。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开实施例中数据库同步方法的步骤示意图;
图2示出本公开实施例中同步任务为结构迁移任务的同步流程图;
图3示出本公开实施例中同步任务为全量迁移任务的同步流程图;
图4示出本公开实施例中同步任务为增量迁移任务的同步流程图;
图5示出本公开实施例中数据库同步装置的模块示意图;
图6示出本公开实施例中电子设备的结构示意图;以及
图7示出本公开实施例中计算机可读的存储介质的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使本公开全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
下面实施例中的步骤序号仅用于表示不同的执行内容,并不严格限定步骤之间的执行顺序。具体描述时使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。需要说明的是,在不冲突的情况下,本公开的实施例及不同实施例中的特征可以相互组合。
图1示出实施例中数据库同步方法的主要步骤,参照图1所示,本实施例中数据库同步方法包括:在步骤S110中执行任务启动步骤:启动同步任务,将所述同步任务的配置数据储存至中间件;在步骤S120中执行数据采集步骤:根据所述同步任务的配置数据自源数据库采集数据;在步骤S130中执行数据发送步骤:将所采集的数据发送至消息队列;在步骤S140中执行数据消费步骤:由数据消费线程自所述消息队列上消费所采集的数据,其中,所述数据消费线程根据所述中间件的所述同步任务的配置数据生成;以及在步骤S150中执行同步步骤:根据所采集的数据同步至目标数据库。
上述实施例的数据库同步方法,通过将同步任务的配置数据储存至中间件以供进行数据采集以及数据消费线程的生成,由此,可以通过配置数据的设置和修改以实现定制化的数据同步操作;通过将同步任务的配置数据储存至中间件以供进行数据采集后,将采集的输出传输至消息队列,以供数据消费线程消费,从而同步至目标数据库中,由此,实现从源数据库同步数据至目标数据库实现跨网络环境及跨区域特性的适应。
具体而言,上述任务启动步骤、数据采集步骤、数据发送步骤、数据消费步骤以及同步步骤仅用于对各步骤进行命名和标识,并非用于限定各步骤执行的具体内容和各步骤之间的执行顺序。本发明提供的数据库同步方法中,各步骤的执行顺序并非以图1所示的顺序为限制,可以按实际需求进行步骤的合并、拆分、顺序的调换、其它同步或异步执行的方式,这些变化的方式皆在本发明的保护范围之内。
下面结合具体的示例,对数据库同步方法进行详细说明。
具体而言,步骤S110中储存至中间的同步任务的配置数据可由用户于配置界面进行配置。配置数据可以包括但不限于同步任务的类型、源数据库信息、目标数据库信息、待同步的表信息。待同步的元数据等。进一步地,中间件还可以储存同步任务的任务信息(包括任务名称、任务之间的关联关系、执行状态)等。
步骤S110中,在启动同步任务时,可以将当前任务的源数据库与目标数据库进行映射。步骤S110中还可以包括同步任务的预检测步骤。预检测步骤用于检测源数据库与目标数据库的同步前置条件,如连接是否正常,mysql版本、权限配置和binlog配置等是否完善,本发明并非以此为限制。
具体而言,中间件例如可以为zookeeper(分布式的,开放源码的分布式应用程序协调服务)以储存同步任务的配置数据以及任务执行数据;消息队列例如可以是kafka(高吞吐量的分布式发布订阅消息系统)以作为同步数据消息的中间件。本发明并非以此为限制,其它中间件以及其它消息队列的使用也在本发明的保护范围之内。
具体而言,同步任务的任务类型可以包括但不限于结构迁移任务、全量迁移任务、增量迁移任务以及他们之间的任意组合。
当所述同步任务为结构迁移任务(结构迁移指将源数据库表结构迁移至目标数据库)时,所述任务启动步骤为结构迁移任务启动步骤。结构迁移任务启动步骤包括:判断自所述源数据库至所述目标数据库,是否首次执行所述结构迁移任务;若是,则生成库结构同步任务以及至少一表结构同步任务;若否,则生成至少一表结构同步任务。所述库结构同步任务供所述数据采集步骤自源数据库采集库创建语句,并将采集的库创建语句中的源数据库名替换为目标数据库名;所述表结构同步任务供所述数据采集步骤自源数据库采集表创建语句,并将采集的库创建语句中的源数据库的表名替换为目标数据库的表名。
下面结合图2示出本公开实施例中同步任务为结构迁移任务的同步流程图,对结构迁移任务进行进一步地说明。图2共示出如下步骤:
步骤S210:判断自所述源数据库至所述目标数据库,是否首次执行所述结构迁移任务。
若步骤S210判断为是,则执行步骤S211:生成库结构同步任务。具体而言,该步骤可以通过在中间件中生成父任务列表(父任务列表中将库结构同步任务作为父任务,将表结构同步任务作为子任务)来实现。
步骤S211之后,执行步骤S212:自源数据库采集库创建语句,并将采集的库创建语句中的源数据库名替换为目标数据库名。具体而言,可以查询源数据库的schema(数据库模式),以获取库创建语句(例如为创建库的SQL语句)。然后,通过源数据库和目标数据库的映射关系,将该库创建语句中的源数据库的库名替换为目标数据库的库名,发送至消息队列中。由数据消费线程消费,以执行该经替换的库创建语句,从而执行步骤S213:创建目标数据库。
步骤S213之后,执行步骤S214:更新中间件中的同步任务的执行状态。换言之,可以在中间件中将库结构同步任务的状态更新为已完成。同时,还可以将目标数据库的信息更新至中间件中。
若步骤S210判断为否/步骤S214之后,执行步骤S215:生成至少一表结构同步任务。具体而言,一个表结构同步任务可以对应一个表,从而对应一个数据消费线程。由此,当步骤S215生成多个表结构同步任务时,可以生成多个数据消费线程,该多个数据消费线程可以并行执行数据消费任务。
步骤S215之后,执行步骤S216:自源数据库采集表创建语句,并将采集的库创建语句中的源数据库的表名替换为目标数据库的表名。具体而言,可以查询源数据库的schema(数据库模式),以获取表创建语句(例如为创建表的SQL语句)。然后,通过源数据库的表和目标数据库的表的映射关系,将该表创建语句中的表名替换为目标数据库对应的表名,发送至消息队列中。由数据消费线程消费,以执行该经替换的表创建语句,从而执行步骤S217:创建目标数据库的表。具体而言,步骤S217中,于目标数据库中创建的表为目标数据库中不存在的表。
步骤S217之后,执行步骤S218,更新中间件中的同步任务的执行状态。换言之,可以在中间件中将表结构同步任务的状态更新为已完成。当各表结构同步任务执行完成后,还可以将中间件中的结构迁移任务的任务执行状态更新为已完成。同时,还可以将目标数据库的表的信息更新至中间件中。
由此,通过上述步骤实现结构迁移任务,图2仅仅是示意性地示出结构迁移任务的执行过程,本发明并非以此为限制,例如步骤S215可以与步骤S211同步执行,当步骤S210判断为否时,可以直接从与步骤S211同步执行的步骤S211中获取表结构同步任务,各步骤之间的顺序变化皆在本发明的保护范围之内。
当同步任务为全量迁移任务(全量迁移指将源数据库表结构和全部数据同步至目标数据库)时,所述任务启动步骤可以包括:判断自所述源数据库至所述目标数据库,是否首次执行所述全量迁移任务;若是,则执行所述结构迁移任务启动步骤,并生成至少一表数据同步任务;若否,则获取所生成的表数据同步任务和/或生成新的表数据同步任务,其中,一个表数据同步任务关联源数据库的一个表,所述表数据同步任务供所述数据采集步骤自源数据库采集关联表的数据。
下面结合图3示出本公开实施例中同步任务为全量迁移任务的同步流程图,对全量迁移任务进行进一步地说明。图3共示出如下步骤:
步骤S220:判断自所述源数据库至所述目标数据库,是否首次执行所述全量迁移任务。
若步骤S220判断为是,则执行步骤S221:执行结构迁移任务(如图2所示的结构迁移任务的同步流程)。具体而言,在步骤S221执行之前可以将全量迁移任务的任务数据储存至中间件。
步骤S221之后,执行步骤S222:生成至少一表数据同步任务。在一些具体实现中,表数据同步任务可以由库数据同步任务拆分。具体而言,一个表数据同步任务可以关联源数据库的一个表,以用于同步表数据。
若步骤S220判断为否,则执行步骤S223:获取所生成的表数据同步任务(首次执行全量迁移时于步骤S222中生成的任务)和/或生成新的表数据同步任务(可以同步未在首次执行全量迁移时完成迁移的表的表数据)。
步骤S222之后/步骤S223之后,执行步骤S224:执行表数据同步任务。表数据同步任务中,自源数据库中采集表数据并按各数据所属的表名标识不同表数据,采集后发送至消息队列。根据表数据同步任务生成多个数据消费队列,以分别自消息队列中消费对应的表的表数据,并储存至目标数据库的对应表中。
步骤S224之后,执行步骤S225:更新中间件中的同步任务的执行状态。换言之,可以在中间件中将表结构同步任务的状态更新为已完成。当各表结构同步任务执行完成后,还可以将中间件中的全量迁移任务的任务执行状态更新为已完成。同时,还可以将目标数据库的表的信息更新至中间件中。
由此,通过上述步骤实现全量迁移任务,图3仅仅是示意性地示出全量迁移任务的执行过程,本发明并非以此为限制,例如步骤S221中仅执行库结构同步任务,表结构同步任务和表数据同步任务可以在步骤S224中同步执行执行,各步骤之间的顺序变化皆在本发明的保护范围之内。
当所述同步任务为增量迁移任务(增量迁移指源数据库产生数据后实时同步至目标数据库中)时,所述数据采集步骤自所述源数据库采集待同步的二进制日志(Binlog),所述数据发送步骤将所述待同步的二进制日志的按时间发生顺序发送至所述消息队列,所述数据消费步骤将依次自所述消息队列消费的所述待同步的二进制日志转换为数据库执行语句,以供所述同步步骤在所述目标数据库执行。具体而言,二进制日志可以依据操作类型转换为数据库执行语句,数据库执行语句例如可以为DDL(数据定义语言)和DML(数据操纵语言)语句,本发明并非以此为限制。
具体而言,所述任务启动步骤之后,且所述数据采集步骤之前还可以包括:监听所述中间件储存的同步任务的配置数据;响应于所述中间件储存的同步任务的配置数据的变更触发所述数据采集步骤的执行。具体而言,任务启动时,会实时将源数据库中二进制日志的元数据(名称和位置)作为配置数据储存至中间件中,当监听到中间件的配置数据发生变化时,启动采集和更新的步骤。由此,可以根据中间件储存的同步任务的更新的配置数据,自源数据库中获取对应该配置数据的二进制日志,从而对目标数据库进行更新。
具体而言,所述数据采集步骤之后,且所述数据发送步骤之前还可以包括:按事件类型过滤和/或组装所采集的二进制日志。具体而言,在上述实施例中,当采集Binlog日志后,可以使用Netty(提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序)进行解析成不同的事件数据,并根据时间数据的类型过滤掉不需要的数据。这是由于Binlog日志不仅记录数据表中的增删改等操作,还会记录一些对数据表中的数据没有影响的操作。因此,根据事件类型可以将这些Binlog日志剔除,从而无需对这些Binlog日志进行传输,降低传输带宽需求,提高同步效率。具体而言,还可以按事件类型将组装所采集的二进制日志,从而可以将同一事件的Binlog日志组装在一起进行传输,以便于数据消费线程的消费和同步。
下面结合图4示出本公开实施例中同步任务为增量迁移任务的同步流程图,对增量迁移任务进行进一步地说明。图4共示出如下步骤:
步骤S230:自中间件获取同步任务的配置信息。具体而言,中间件的同步任务根据基于配置信息的配置,首先,配置需要同步的binlog文件名和位置。若不配置则从源数据库当前文件和位置开始导出,将任务信息存储到中间件上。
步骤S231:建立数据采集模块与源数据库之间的TCP连接。具体而言,由于需要采集binlog日志,因此,需要与源数据库的binlog日志库进行连接。具体而言,可以从中间件上监听到配置信息的变更后,使用Netty网络框架进行TCP连接至源数据库,连接过程包括认证与接收响应等操作。
步骤S231之后,执行步骤S232:于采集步骤判断当前任务是否为GTID(mysql 5.6版本后推出的全局事务编码,即global transaction id)导出模式。
若步骤S232判断为是:则执行步骤S233:判断中间件中GTID设置是否为空。若步骤S233判断为是,则执行步骤S234:获取GTID的当前状态,并根据GTID的当前状态采集GTID数据。步骤S234之后,执行步骤S235:设置采集模块与源数据库的连接数据、更新中间件GTID设置、同时更新中间件中的任务执行数据。
若步骤S232判断为否(相当于任务为Binlog导出模式):则执行步骤S236:判断中间件中Binlog名是否为空。若步骤S236判断为是,则执行步骤S237:获取Binlog的当前状态数据,并根据Binlog的当前状态采集Binlog数据。步骤S237之后,执行步骤S238:设置采集模块与源数据库的连接数据、更新中间件Binlog名和位置、同时更新中间件中的任务执行数据。
步骤S233判断为否/步骤S236判断为否/步骤S235之后/步骤S238之后,执行步骤S239:校验获取的数据。具体而言,校验完成后,可以将根据binlog事件的不同类型,组装为数据发送至消息队列中,由于单表中数据需要按事件发生顺序进行同步,发送规则为表名计算哈希至后,作为消息队列上的唯一键值。
步骤S239之后,执行步骤S240:消费步骤判断是否为GTID模式。若步骤S240判断为是,则执行步骤S241:将获取的消息组装为GTID模式的数据库执行语句。若步骤S240判断为否,则执行步骤S242:将获取的消息组装为Binlog模式的数据库执行语句。步骤S241之后/步骤S242之后执行步骤S243:在目标数据库执行数据库执行语句,以实现数据同步。
由此,通过上述步骤实现增量迁移任务,图4仅仅是示意性地示出全量迁移任务的执行过程,本发明并非以此为限制,
以上仅仅是示意性地示出本发明的多种实现方式,本发明并非以此为限制,各实现方式可以单独或组合实现。
本公开实施例还提供一种数据库同步装置,可用于实现上述任意实施例所描述的数据库同步方法。
图5示出实施例中数据库同步装置的主要模块,参照图5所示,本实施例中数据库同步装置400包括:任务启动模块410,配置成启动同步任务,将所述同步任务的配置数据储存至中间件;数据采集模块420,配置成根据所述同步任务的配置数据自源数据库采集数据;数据发送模块430,配置成将所采集的数据发送至消息队列;数据消费模块440,配置成由数据消费线程自所述消息队列上消费所采集的数据,其中,所述数据消费线程根据所述中间件的所述同步任务的配置数据生成;以及同步模块450,配置成根据所采集的数据同步至目标数据库。其中,各个模块的具体原理可参见上述任意数据库同步方法实施例,此处不再重复说明。
本实施例的数据库同步装置通过将同步任务的配置数据储存至中间件以供进行数据采集以及数据消费线程的生成,由此,可以通过配置数据的设置和修改以实现定制化的数据同步操作;通过将同步任务的配置数据储存至中间件以供进行数据采集后,将采集的输出传输至消息队列,以供数据消费线程消费,从而同步至目标数据库中,由此,实现从源数据库同步数据至目标数据库实现跨网络环境及跨区域特性的适应。
图5仅仅是示意性的示出本发明提供的数据库同步装置,在不违背本发明构思的前提下,模块的拆分、合并、增加都在本发明的保护范围之内。本发明提供的批量合成图片的装置可以由软件、硬件、固件、插件及他们之间的任意组合来实现,本发明并非以此为限。
本公开实施例还提供一种电子设备,包括处理器和存储器,存储器中存储有可执行指令,可执行指令被处理器执行时,实现上述任意实施例描述的数据库同步方法。
本公开的电子设备通过将同步任务的配置数据储存至中间件以供进行数据采集以及数据消费线程的生成,由此,可以通过配置数据的设置和修改以实现定制化的数据同步操作;通过将同步任务的配置数据储存至中间件以供进行数据采集后,将采集的输出传输至消息队列,以供数据消费线程消费,从而同步至目标数据库中,由此,实现从源数据库同步数据至目标数据库实现跨网络环境及跨区域特性的适应。
图6是本公开实施例中电子设备的结构示意图,应当理解的是,图6仅仅是示意性地示出各个模块,这些模块可以是虚拟的软件模块或实际的硬件模块,这些模块的合并、拆分及其余模块的增加都在本公开的保护范围之内。
如图6所示,电子设备500以通用计算设备的形式表现。电子设备500的组件包括但不限于:至少一个处理单元510、至少一个存储单元520、连接不同平台组件(包括存储单元520和处理单元510)的总线530、显示单元540等。
其中,存储单元存储有程序代码,程序代码可以被处理单元510执行,使得处理单元510执行上述任意实施例描述的数据库同步方法的步骤。例如,处理单元510可以执行如图1和图3所示的步骤。
存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(ROM)5203。
存储单元520还可以包括具有一个或多个程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备500也可以与一个或多个外部设备600通信,外部设备600可以是键盘、指向设备、蓝牙设备等设备中的一种或多种。这些外部设备600使得用户能与该电子设备500进行交互通信。电子设备500也能与一个或多个其它计算设备进行通信,所示计算机设备包括路由器、调制解调器。这种通信可以通过输入/输出(I/O)接口550进行。并且,电子设备500还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器560可以通过总线530与电子设备500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本公开实施例还提供一种计算机可读的存储介质,用于存储程序,程序被执行时实现上述任意实施例描述的数据库同步方法。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行上述任意实施例描述的数据库同步方法。
本公开的计算机可读的存储介质通过将同步任务的配置数据储存至中间件以供进行数据采集以及数据消费线程的生成,由此,可以通过配置数据的设置和修改以实现定制化的数据同步操作;通过将同步任务的配置数据储存至中间件以供进行数据采集后,将采集的输出传输至消息队列,以供数据消费线程消费,从而同步至目标数据库中,由此,实现从源数据库同步数据至目标数据库实现跨网络环境及跨区域特性的适应。
图7是本公开的计算机可读的存储介质的结构示意图。参考图6所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品700,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子包括但不限于:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读的存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备,例如利用因特网服务提供商来通过因特网连接。
以上内容是结合具体的优选实施方式对本公开所作的进一步详细说明,不能认定本公开的具体实施只局限于这些说明。对于本公开所属技术领域的普通技术人员来说,在不脱离本公开构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本公开的保护范围。

Claims (10)

1.一种数据库同步方法,其特征在于,包括:
任务启动步骤:启动同步任务,将所述同步任务的配置数据储存至中间件;
数据采集步骤:根据所述同步任务的配置数据自源数据库采集数据;
数据发送步骤:将所采集的数据发送至消息队列;
数据消费步骤:由数据消费线程自所述消息队列上消费所采集的数据,其中,所述数据消费线程根据所述中间件的所述同步任务的配置数据生成;以及
同步步骤:根据所采集的数据同步至目标数据库。
2.如权利要求1所述的数据库同步方法,其特征在于,所述同步任务为结构迁移任务时,所述任务启动步骤为结构迁移任务启动步骤,包括:
判断自所述源数据库至所述目标数据库,是否首次执行所述结构迁移任务;
若是,则生成库结构同步任务以及至少一表结构同步任务;
若否,则生成至少一表结构同步任务,
其中,所述库结构同步任务供所述数据采集步骤自源数据库采集库创建语句,并将采集的库创建语句中的源数据库名替换为目标数据库名;
所述表结构同步任务供所述数据采集步骤自源数据库采集表创建语句,并将采集的库创建语句中的源数据库的表名替换为目标数据库的表名。
3.如权利要求2所述的数据库同步方法,其特征在于,所述同步任务为全量迁移任务时,所述任务启动步骤包括:
判断自所述源数据库至所述目标数据库,是否首次执行所述全量迁移任务;
若是,则执行所述结构迁移任务启动步骤,并生成至少一表数据同步任务;
若否,则获取所生成的表数据同步任务和/或生成新的表数据同步任务,
其中,一个表数据同步任务关联源数据库的一个表,所述表数据同步任务供所述数据采集步骤自源数据库采集关联表的数据。
4.如权利要求3所述的数据库同步方法,其特征在于,所述表结构同步任务和/或所述表结构数据任务为多个时,所述数据消费步骤由多个数据消费线程自所述消息队列上消费所采集的数据。
5.如权利要求1所述的数据库同步方法,其特征在于,所述同步任务为增量迁移任务时,所述数据采集步骤自所述源数据库采集待同步的二进制日志,所述数据发送步骤将所述待同步的二进制日志的按时间发生顺序发送至所述消息队列,所述数据消费步骤将依次自所述消息队列消费的所述待同步的二进制日志转换为数据库执行语句,以供所述同步步骤在所述目标数据库执行。
6.如权利要求5所述的数据库同步方法,其特征在于,所述任务启动步骤之后,且所述数据采集步骤之前还包括:
监听所述中间件储存的同步任务的配置数据;
响应于所述中间件储存的同步任务的配置数据的变更触发所述数据采集步骤的执行。
7.如权利要求5所述的数据库同步方法,其特征在于,所述数据采集步骤之后,且所述数据发送步骤之前还包括:
按事件类型过滤和/或组装所采集的二进制日志。
8.一种数据库同步装置,其特征在于,包括:
任务启动模块,配置成启动同步任务,将所述同步任务的配置数据储存至中间件;
数据采集模块,配置成根据所述同步任务的配置数据自源数据库采集数据;
数据发送模块,配置成将所采集的数据发送至消息队列;
数据消费模块,配置成由数据消费线程自所述消息队列上消费所采集的数据,其中,所述数据消费线程根据所述中间件的所述同步任务的配置数据生成;以及
同步模块,配置成根据所采集的数据同步至目标数据库。
9.一种电子设备,其特征在于,包括:
处理器;
存储器,所述存储器中存储有可执行指令;
其中,所述可执行指令被所述处理器执行时,实现如权利要求1-7任一项所述的数据库同步方法。
10.一种计算机可读的存储介质,用于存储程序,其特征在于,所述程序被执行时实现如权利要求1-7任一项所述的数据库同步方法。
CN202011286758.8A 2020-11-17 2020-11-17 数据库同步方法、装置、电子设备和存储介质 Pending CN114510531A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011286758.8A CN114510531A (zh) 2020-11-17 2020-11-17 数据库同步方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011286758.8A CN114510531A (zh) 2020-11-17 2020-11-17 数据库同步方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN114510531A true CN114510531A (zh) 2022-05-17

Family

ID=81546655

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011286758.8A Pending CN114510531A (zh) 2020-11-17 2020-11-17 数据库同步方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114510531A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115174682A (zh) * 2022-06-17 2022-10-11 中国银联股份有限公司 数据分流方法、系统、中心、装置及计算机可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115174682A (zh) * 2022-06-17 2022-10-11 中国银联股份有限公司 数据分流方法、系统、中心、装置及计算机可读存储介质
CN115174682B (zh) * 2022-06-17 2023-07-28 中国银联股份有限公司 数据分流方法、系统、中心、装置及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN109254982B (zh) 一种流数据处理方法、系统、装置及计算机可读存储介质
CN107038162B (zh) 基于数据库日志的实时数据查询方法和系统
CN109491989B (zh) 数据处理方法及装置、电子设备、存储介质
CN110633186A (zh) 用于电力计量微服务架构的日志监控系统及实现方法
US20220188196A1 (en) Continuous data protection
CN111949633B (zh) 一种基于并行流处理的ict系统运行日志分析方法
CN111324610A (zh) 一种数据同步的方法及装置
CN110807067A (zh) 关系型数据库和数据仓库的数据同步方法、装置及设备
CN110874272A (zh) 资源配置方法及装置、计算机可读存储介质、电子设备
Agneeswaran Big-data–theoretical, engineering and analytics perspective
CN111221831B (zh) 一种对广告效果数据实时处理的计算系统
CN112148578A (zh) 基于机器学习的it故障缺陷预测方法
CN110309108A (zh) 数据采集及储存方法、装置、电子设备、存储介质
CN114218218A (zh) 基于数据仓库的数据处理方法、装置、设备及存储介质
CN113596117A (zh) 实时数据处理方法、系统、设备及介质
CN113486095A (zh) 一种民航空管跨网安全数据交换管理平台
CN114510531A (zh) 数据库同步方法、装置、电子设备和存储介质
CN116521664A (zh) 数据仓库的数据监控方法及装置、计算设备、存储介质
CN116155689A (zh) 一种基于ClickHouse的高可用Kong网关日志分析方法及系统
CN114756301B (zh) 日志处理方法、装置和系统
CN113032477B (zh) 基于gtid的长距离数据同步方法、装置及计算设备
US20220222131A1 (en) Schema management using an event stream
CN112685486B (zh) 数据库集群的数据管理方法、装置、电子设备及存储介质
US10749766B1 (en) Archival datastore for aggregated metrics
US11003690B1 (en) Aggregator systems for storage of data segments

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