CN112182104A - 一种数据同步方法、装置、设备及存储介质 - Google Patents

一种数据同步方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112182104A
CN112182104A CN202011025736.6A CN202011025736A CN112182104A CN 112182104 A CN112182104 A CN 112182104A CN 202011025736 A CN202011025736 A CN 202011025736A CN 112182104 A CN112182104 A CN 112182104A
Authority
CN
China
Prior art keywords
information
incremental data
data
source
writing
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
CN202011025736.6A
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.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
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 China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202011025736.6A priority Critical patent/CN112182104A/zh
Publication of CN112182104A publication Critical patent/CN112182104A/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/273Asynchronous replication or reconciliation

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

一种数据同步方法、装置、设备及存储介质
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种数据同步方法、装置、设备及存储介质。
背景技术
现今是数据的时代,保证数据的实时性,是对业务数据统计和分析的先决条件。在很多业务场景下,我们都有可能会涉及到数据同步,即将数据从一个源数据库同步到目标数据库中。
相关技术中,数据同步的方法可以通过采集平台来实现,但是通过这种采集平台进行数据同步的速度较慢,不能达到很好的实时性,其他数据采集的方法需要手动操作,操作繁琐,数据同步频次较慢,也消耗人力资源。
发明内容
本发明实施例提供了一种数据同步方法、装置、设备及存储介质,可以加速数据的同步,可以减轻源数据库的压力,提高数据的实时性,降低人力操作成本。
第一方面,本发明实施例提供了一种数据同步方法,其特征在于,包括:
每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中;
在从所述源表中获取所述增量数据成功,且所述增量数据写入所述中间表成功的情况下,将当前时间节点信息以及所述中间表的信息写入到控制表中;
将所述当前时间节点信息以及所述中间表的信息作为待执行任务标识,并添到待执行任务队列中;
依次将所述待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。
第二方面,本发明实施例还提供了一种数据同步装置,包括:
第一写入模块,用于每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中;
第二写入模块,用于在从所述源表中获取所述增量数据成功,且所述增量数据写入所述中间表成功的情况下,将当前时间节点信息以及所述中间表的信息写入到控制表中;
添加模块,用于将所述当前时间节点信息以及所述中间表的信息作为待执行任务标识,并添到待执行任务队列中;
第三写入模块,用于依次将所述待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。
第三方面,本发明实施例还提供了一种数据同步设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例提供的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例提供的方法。
本发明实施例提供的技术方案,通过从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将增量数据写入所述源表对应的中间表中;在从源表中获取所述增量数据成功,且增量数据写入所述中间表成功的情况下,将当前时间节点信息以及中间表的信息写入到控制表中,并作为待执行任务标识,并添到待执行任务队列中;依次将待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。即将数据同步划分为卸数作业和装数作业,并且在卸数成功的情况下,将当前时间节点信息以及中间表的信息写入到控制表中,并作为待执行任务标识,形成待执行任务队列,按照待执行任务队列执行装数作业,可以加速数据的采集以及同步,可以减轻源数据库的压力,可以提高数据的实时性,降低人力操作成本。
附图说明
图1a是本发明实施例提供的一种数据同步方法流程图;
图1b是本发明实施例提供的数据流向示意图;
图2是本发明实施例提供的一种数据同步方法流程图;
图3是本发明实施例提供卸数作业流程图;
图4是本发明实施例提供的装数作业流程图;
图5是本发明实施例提供的一种数据同步装置结构框图;
图6是本发明实施例提供的一种设备结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
目前是数据的时代,保证数据的实时性是对业务数据统计和分析的先决条件。在很多业务场景下,我们都有可能会涉及到数据同步,即将数据从一个源数据库同步到目标数据库中。例如,基于用户需求,在需要将多个住房公积金管理中心的数据实时同步到指定的目标数据库中的场景中,实现住房公积金的数据同步的方法可以是:通过exp/expdp命令,在源数据库的oracle服务端将数据以dmp包的形式卸数作业,然后通过sftp命令传输到目标数据库的oracle服务端,最后通过impdp/imp命令进行装数作业。但是该方法需要工作人员手动卸数作业、传输dmp包和装数作业,操作繁琐,数据同步的频次较慢,人力资源消耗大,并且人为操作有失误风险,并且错误日志可能会被人为忽略;当数据同步流程出现问题的时候,排查困难。另一种数据同步的方法是通过数据采集平台将各个住房公积金管理中心的当天数据汇总,并推送到区块链,然后可以从区块链上将数据下载至目标数据库中,以进行数据收集和统计分析,但是该方法缺点如下:
实时性较差:数据采集平台把数据通过卸数作业采集之后,还需要对其进行一系列的数据分片、加密、校验、上链的操作,耗时较长,每进行一次数据同步要耗时约半个小时,往往同步的时间维度为一天。
不方便统一维护:数据同步的目标数据库的系统环境需要部署程序来获取区块链上的数据分片然后进行一系列的处理。
其中,数据同步是指通过各种数据传输接口,使多个数据库之间的数据保持完整性和统一性。住房公积金管理中心是各个地区等设定的住房公积金管理运作机构。卸数作业,可以是通过SQL或者数据库导出命令,将数据库中一张或多张表的数据采集到本地缓存、数据文件或新数据表中。装数作业可以是通过SQL或者数据库导出命令,将本地缓存、数据文件或新数据表中的数据,通过插入/更新的方法装入目标表。
图1a是本发明实施例提供的一种数据同步方法流程图,所述方法可以由数据同步装置来执行,所述装置可以由软件和/或硬件来实现,所述装置可以配置在服务器、计算机等电子设备中,所述方法可以应用于两个数据库中的数据进行同步的场景中,可选的,所述方法可以应用于住房公积金的业务数据在两个数据库中进行同步的场景中,可选的,两个数据库分别是源数据库和目标数据库,其中,源数据库可以是G系统核心Oracle数据库。其中,G系统可以是住房公积金业务管理核心系统。目标数据库可以是Mysql数据库。
如图1a所示,本发明实施例提供的技术方案包括:
S110:每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中。
在本发明实施例中,从源数据库中的源表中获取增量数据,并进行缓存,以及将增量数据写入源表对应中间表的过程,可以理解为一次卸数作业。
在本发明实施例中,设定时间间隔可以是5分钟,或者也可以是其他时间间隔,相应的,过去设定时间间隔可以是过去5分钟,或者过去的其他时间间隔。源数据库中可以是住房公积金管理中心的数据库。其中,住房公积金管理中心的数据库可以是G系统核心Oracle数据库。
在本发明实施例中,增量数据可以是数据库的表某个时刻(更新时间)或者检查点以后的数据,增量数据可以是变化的数据。其中,将增量数据写入到中间表中可以具体是将增量数据插入或者更新至中间表中。
在本发明实施例的一个实施方式中,所述每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中,包括:每隔设定时间间隔从源数据库中的源表中通过select语句采集获取过去设定时间间隔内的增量数据,并在目标数据库中建立所述源表对应的中间表,并将所述增量数据写入所述中间表中。其中,通过select语句基于时间戳在源数据库中进行查询过去设定时间间隔内的增量数据,通过在目标数据库中建立源表对应的中间表,并将增量数据插入或者更新至中间表中。
在本发明实施例的一个实施方式中,可选的,从源数据库中的源表中获取过去设定时间间隔内的增量数据,包括:从源数据库中的至少一个源表中并行获取过去设定时间间隔内的增量数据。其中,源数据库中包括多个源表,可以从多个源表中并行获取过去设定时间间隔内的增量数据,从而可以理解为卸数作业可以并行执行。卸数作业只需对源表进行查询操作,对源数据库的压力较小,所以可以允许卸数作业并行执行。例如,用户设置程序(数据高铁的程序)每五分钟同步一次数据,那么每五分钟执行一次卸数作业,即每隔5分钟从源数据库中的源表中获取过去5分钟内的增量数据,并将增量数据写入到中间表中。程序每次运行时会通过select语句去获取到前五分钟的增量数据。但是,若某个时刻业务量较大,可能前五分钟增加/修改的数据有数十万条,五分钟内无法执行完卸数作业,下一个卸数作业执行并不会对前一个卸数作业造成影响,它们可以并行运行,可以保证每个五分钟时间段的增量数据都可以准确无误的迁移到目标数据库(保存在中间表内)。由此,通过从源数据库中的源表中并行获取过去设定时间间隔内的增量数据,可以保证每个设定时间内的增量数据准确迁移至目标数据库中的中间,以准确完成数据的同步。
在本发明实施例的一个实施方式中,从源数据库中的源表中获取过去设定时间间隔内的增量数据,包括:基于配置文件中的配置信息从源数据表中获取过去设定时间段内的增量数据;相应的,将待执行任务对应的中间表的数据写入目标数据库对应的目标表中,包括:基于配置文件中的配置信息将待执行任务对应的中间表的数据写入到目标数据库对应的目标表中。其中,配置信息可以包括数据同步的步骤,同步方式、源表地址,数据同步地址等。由此,通过调用配置文件进行获取增量数据以及将增量数据写入到目标表中,当需要更改同步方式、数据同步地址时,仅需要对配置文件进行配置即可,无需重启服务,真正做到程序的“热插拔”。
S120:在从所述源表中获取所述增量数据成功,且所述增量数据写入所述中间表成功的情况下,将当前时间节点信息以及所述中间表的信息写入到控制表中。
在本发明实施例中,当前时间节点信息包括当前时刻以及在所述当前时刻之前,且与所述当前时刻间隔为设定时间间隔的时刻。其中,中间表的信息可以是中间表的标识信息,中间表的标识信息形式并不做限定。
S130:将所述当前时间节点信息以及所述中间表的信息作为待执行任务标识,并添到待执行任务队列中。
在本发明实施例中,将当前时间节点信息以及中间表的信息写入到控制表中,并且将当前时间节点信息以及中间表的信息对应的任务状态修改为“待执行”,并添加到待执行任务队列中。其中,各个时间点信息以及对应的中间表的信息,形成待执行任务队列,即将各个时间节点信息以及对应的中间表信息作为待执行任务标识,形成待执行任务队列。其中,待执行任务队列可以是待装数队列。其中,装数作业是指通过结构化查询语言(Structured Query Language,SQL)或者数据库导出命令,将本地缓存的数据文件或数据表(包括中间表)中的数据,通过插入/更新的方法装入目标数据库中的目标表中。
S140:依次将所述待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。
本发明实施例中,待执行任务队列中的待执行任务为时间点信息以及中间表的信息对应的任务,可以通过待执行任务队列中的时间点信息以及中间表的信息查询对应的中间表,将查询到的中间表的数据写入到目标数据库对应的目标表中。例如,待执行任务队列中的时间点信息是8:00-8:05,中间表的信息是XXX;可以查询信息为“XXX”,且存储“8:00-8:05”之间的增量数据的中间表,将该中间表的增量数据写入到目标数据库中的目标表中。
为了实现将各个住房公积金管理中心的业务数据,从G系统核心Oracle数据库中,通过ETL(extract-transform-loa)工具进行一系列的抽取、转换、导入操作,实时同步数据到Mysql数据库内。并且数据同步频率至少达到每五分钟一次,时间节点精确到秒,其中,ELT可以是指将数据从来源端(G系统核心Oracle数据库)经过抽取、转换、加载至目的端(Mysql数据库)的过程。本发明实施例提供的方法,将卸数作业和装数作业任务分离,卸数作业可以以流水线的方式并行执行,即使某个时间节点的卸数作业或装数作业任务出现异常,并不会影响整个数据同步系统的运行。当某个时间节点增量数据较大时,即使本次数据同步任务并未执行完成,下一个数据同步任务可以正常开始,通过以队列方式将中间表数据写入到目标数据库中的目标表中,并不会对目标数据库的目标表实时冲突操作,有效提高了数据同步的效率以及速度,实现两个数据库中数据同步频度达到分钟级别,其中本发明实施例提供的方法中数据流向示意图可以参考图1b,其中,增量数据从源表到中间表的过程为卸数作业过程,增量数据从中间表到目标表的过程为装数作业过程。执行本发明实施例提供方法的程序可以部署在远程设备上,只需要保证该设备到源数据库和目标数据库的网络连通即可,对于源数据库和目标数据库所处的环境,无需进行更改或者配置,本发明实施例提供的方法可以直接对目标数据库连接,并传输数据,无需经过数据转换,数据的传输速度可以达到7000条/秒,或者数据的传输速度更大。本发明实施例通过调用配置文件进行获取增量数据以及将增量数据写入到目标表中,即数据同步通过运行配置文件即可,操作简单,当需要更改同步方式、数据同步地址时,仅需要对配置文件进行配置即可,无需重启服务,真正做到程序的“热插拔”。
本发明实施例提供的技术方案,通过从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将增量数据写入所述源表对应的中间表中;在从源表中获取所述增量数据成功,且增量数据写入所述中间表成功的情况下,将当前时间节点信息以及中间表的信息写入到控制表中,并作为待执行任务标识,并添到待执行任务队列中;依次将待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。即将数据同步划分为卸数作业和装数作业,并且在卸数成功的情况下,将当前时间节点信息以及中间表的信息写入到控制表中,并作为待执行任务标识,形成待执行任务队列,按照待执行任务队列执行装数作业,可以减轻源数据库的压力,可以提高数据的实时性,降低人力操作成本。
图2是本发明实施例提供的一种数据同步方法流程图,在本实施例中,可选的,本发明实施例提供的方法还可以包括:
若从所述源表中获取增量数据失败,和/或所述增量数据写入所述中间表失败,将所述当前时间节点信息和错误信息记录到所述控制表中;
将所述当前时间节点信息和所述错误信息对应的任务状态更新为卸数出错;
基于所述控制表中任务状态为卸数出错的当前时间节点信息以及所述错误信息重新获取增量数据和/重新将所述增量数据写入所述中间表中。
可选的,本发明实施例提供的方法还可以包括:
若检测到将所述中间表的增量数据写入所述目标表失败,将所述中间表的信息和目标表的信息写入到所述控制表中,并将所述中间表的信息和所述目标表的信息对应的任务状态修改为装数出错;
查找任务状态为装数出错的中间表的信息以及目标表的信息,并基于查找到的信息确定装数出错任务对应中间表和目标表,将确定的所述中间表的增量数据重新写入到确定的所述目标表中。
如图2所示,本发明实施例提供的技术方案包括:
S210:每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中。
S220:若从所述源表中获取增量数据失败,和/或所述增量数据写入所述中间表失败,将所述当前时间节点信息和错误信息记录到所述控制表中。
S230:将所述当前时间节点信息和所述错误信息对应的任务状态更新为卸数出错。
S240:基于所述控制表中任务状态为卸数出错的当前时间节点信息以及所述错误信息重新获取增量数据和/重新将所述增量数据写入所述中间表中。
在本发明实施例中,每隔设定时间间隔从源数据库中的源表中采集增量数据,并进行本地缓存,可以缓存至Kettle中。若从源表中获取数据成功,在目标数据库中创建中间表,将增量数据写入到中间表中。若从源表中获取增量数据失败,将当前时间节点信息和错误信息记录在控制表中,并将所述当前时间节点信息和所述错误信息对应的任务状态更新为卸数出错,基于控制表中任务状态为卸数出错的当前时间节点信息以及所述错误信息重新获取增量数据,其中错误信息包括出错环节信息以及出错原因信息等。由此,当获取增量数据失败时,通过将当前时间节点信息以及错误信息记录在控制表中,并基于当前时间节点信息以及错误信息重新获取增量数据,可以准确实现数据的同步,避免遗漏数据。
在本发明实施例中,若从源表中获取增量数据失败,和/或所述增量数据写入所述中间表失败,还可以将当前时间节点信息和错误信息记录在日志表中,以使工作人员通过日志表数据同步的故障环节进行了解以便于进行修复。
在本发明实施例中,若将增量数据写入中间表失败,将当前时间节点信息和错误信息记录在控制表中,并将所述当前时间节点信息和所述错误信息对应的任务状态更新为卸数出错,基于控制表中任务状态为卸数出错的当前时间节点信息以及所述错误信息重新将增量数据写入到中间表中,具体可以是:查询与当前时间节点对应的增量数据,将增量数据写入到中间表中。由此,通过将增量数据写入中间表失败时,通过将当前时间节点信息以及错误信息记录在控制表中,并基于当前时间节点信息以及错误信息重新将增量数据写入到中间表中,可以准确实现数据的同步,避免遗漏数据。
S250:在从所述源表中获取所述增量数据成功,且所述增量数据写入所述中间表成功的情况下,将当前时间节点信息以及所述中间表的信息写入到控制表中。
S260:将所述当前时间节点信息以及所述中间表的信息作为待执行任务标识,并添到待执行任务队列中。
S270:依次将所述待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。
S280:判断所述增量数据写入目标表是否成功。
若否,执行S290,若是,执行S292。
S290:将所述中间表的信息和目标表的信息写入到所述控制表中,并将所述中间表的信息和所述目标表的信息对应的任务状态修改为装数出错。
S291:查找任务状态为装数出错的中间表的信息以及目标表的信息,并基于查找到的信息确定装数出错任务对应中间表和目标表,将确定的所述中间表的增量数据重新写入到确定的所述目标表中。
S292:将控制表内中间表的信息对应的任务状态进行更新,并删除所述中间表。
在本发明实施例中,若将中间表中的增量数据写入目标表成功,更新控制表内中间表的信息对应的任务状态,例如,可以将该中间表的信息对应的任务状态修改为“装数成功”。若将中间表中的增量数据写入目标表失败,将中间表的信息以及目标表的信息写入到控制表中,并将对应的任务状态修改为装数出错,其中,中间表的信息可以是中间表的标识信息,目标表的信息可以是目标表的标识信息。在控制表中查找任务状态为装数出错的中间表的信息以及目标表的信息,并确定对应的中间表和目标表,则将该中间表中的增量数据重新写入到该目标表中。由此,通过控制表记录任务状态为装数出错的中间表的信息和目标表的信息,通过查询控制表,将装数失败的中间表的增量数据重写入目标表中,可以准确实现数据同步,避免数据遗漏。
在上述实施例的基础上,本发明实施例提供的技术方案还包括:每隔预设时间段从所述源数据库中的所有源表中的数据同步至所述目标数据库的目标表中,其中,预设时间段大于所述设定时间间隔。其中,所有源表的数据可以称为全量数据。由于增量数据的获取是通过每个源表中的时间戳字段来进行筛选,若在某些情况下,工作人员直接对源表进行修数但是却没更改时间戳字段的值,那么就会造成源表中的增量数据无法被采集,因此,本发明实施例通过每个预设时间段可以对源数据库中的所有源表中的数据同步至目标数据库中,可以避免增量数据无法被采集的情况,避免错误。
为了更清楚的描述卸数作业和装数作业,卸数作业的流程可以参考图3,卸数作业的流程可以参考图4。
如图3所示,卸数作业的过程可以具体是:
(1)考虑到卸数作业只需对源表进行查询操作,对源数据库的压力较小,卸数作业可以并行运行。例如,用户设置程序每五分钟同步一次数据,那么卸数作业会每五分钟执行一次,每次运行时会通过select语句去获取到该时间节点前五分钟的增量数据。但是,当某个时刻业务量较大的时候,可能前五分钟增加/修改的数据有数十万条,五分钟内无法执行完卸数作业。那么下一个卸数作业执行的时候并不会对前一个作业造成影响,它们可以并行运行。这样,可以保证每个五分钟时间段的增量数据都可以准确无误的迁移到目标数据库(保存在中间表内)。
(2)当源数据库出现问题的时候,卸数作业无法正常运行,这时候卸数作业会将数据库返回的错误信息以及当前时间节点信息记录到日志表和控制表中,任务状态标志为“卸数出错”。然后,当程序扫描到控制表内有“卸数出错”的任务时,会调用卸数作业程序重新进行一次该时间节点信息对应卸数作业。
(3)当卸数作业成功执行,并且数据装入到目标库的中间表的之后,程序会将时间节点信息、中间表信息等写入到控制表,并且任务状态标志为“待装数”,形成了类似消息队列的机制。
其中,在卸数作业过程中,可能由于源数据库的问题,无法将增量数据采集下来,那么这时候会把该时间节点的信息记录到控制表内,然后由工作人员或者程序自动重新执行。
如图4所示,装数作业的过程可以具体是:
(1)从控制表内获取到任务状态为“待装数”的任务,然后执行sql,将中间表内的数据插入/更新到目标表。为了避免同时对一张中间表进行操作,所以装数作业并不能并行执行。
(2)由于装数作业不涉及库与库之间的数据的迁移(中间表与目标表均在目标数据库中),执行速度较快,并且对时间节点也没有要求,因此,装数作业过程中可以不断地去循环查询控制表,当查到控制表中有“待装数”状态的任务时,待装数也可以理解为待处理,即可该任务下的中间表内增量数据插入/更新到目标表中,并删除中间表。
(3)执行装数作业的过程中,也有可能会出现装数错误的现象,这时候程序会将控制表内该任务的状态置为“装数出错”,并把数据库返回的错误输出到日志表中,等待技术人员处理。
其中,在装数作业过程中,可能由于目标数据库或者目标表的问题,无法将中间表内的数据插入/更新到目标表,这时候同样会将中间表信息和目标表信息记录在控制表,然后由技术人员或者程序自动重新执行。
图5是本发明实施例提供的一种数据同步装置结构框图,如图5所示,本发明实施例提供的装置,包括:第一写入模块510,第二写入模块520、添加模块530和第三写入模块540。
其中,第一写入模块510,用于每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中;
第二写入模块520,用于在从所述源表中获取所述增量数据成功,且所述增量数据写入所述中间表成功的情况下,将当前时间节点信息以及所述中间表的信息写入到控制表中;
添加模块530,用于将所述当前时间节点信息以及所述中间表的信息作为待执行任务标识,并添到待执行任务队列中;
第三写入模块540,用于依次将所述待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。
可选的,所述装置还包括:
记录模块,用于若从所述源表中获取增量数据失败,和/或所述增量数据写入所述中间表失败,将所述当前时间节点信息和错误信息记录到所述控制表中;
任务状态更新模块,用于将所述当前时间节点信息和所述错误信息对应的任务状态更新为卸数出错;
第四写入模块,用于基于所述控制表中任务状态为卸数出错的当前时间节点信息以及所述错误信息重新获取增量数据和/重新将所述增量数据写入所述中间表中。
可选的,所述装置还包括:
任务状态修改模块,用于若检测到将所述中间表的增量数据写入所述目标表失败,将所述中间表的信息和目标表的信息写入到所述控制表中,并将所述中间表的信息和所述目标表的信息对应的任务状态修改为装数出错;
第五写入模块,用于查找任务状态为装数出错的中间表的信息以及目标表的信息,并基于查找到的信息确定装数出错任务对应中间表和目标表,将确定的所述中间表的增量数据重新写入到确定的所述目标表中。
可选的,任务状态修改模块,还用于若所述增量数据写入所述目标表成功,将所述控制表内中间表的信息对应的任务状态进行更新,并删除所述中间表。
可选的,所述装置还包括第六写入模块,用于若从所述源表中获取增量数据失败,和/或所述增量数据写入所述中间表失败,将当前时间节点信息以及所述错误信息记录到日志表中。
可选的,所述装置还包括全量数据同步模块,用于每隔预设时间段从所述源数据库中的所有源表中的数据同步至所述目标数据库的目标表中,其中,预设时间段大于所述设定时间间隔。
可选的,从源数据库中的源表中获取过去设定时间间隔内的增量数据,包括:
从源数据库中的源表中并行获取过去设定时间间隔内的增量数据。
可选的,从源数据库中的源表中获取过去设定时间间隔内的增量数据,包括:
基于配置文件中的配置信息从源数据表中获取过去设定时间段内的增量数据;
将待执行任务对应的中间表的数据写入目标数据库对应的目标表中,包括:
基于配置文件中的配置信息将待执行任务对应的中间表的数据写入到目标数据库对应的目标表中。
可选的,当前时间节点信息包括当前时刻以及在所述当前时刻之前,且与所述当前时刻间隔为设定时间间隔的时刻。
可选的,所述每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中,包括:
每隔设定时间间隔从源数据库中的源表中通过select语句采集过去设定时间间隔内的增量数据,并在所述目标数据库中建立所述源表对应的中间表,并将所述增量数据写入所述中间表中。
上述装置可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
图6是本发明实施例提供的一种设备结构示意图,如图6所示,该设备包括:
一个或多个处理器610,图6中以一个处理器610为例;
存储器620;
所述设备还可以包括:输入装置630和输出装置640。
所述设备中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或者其他方式连接,图6中以通过总线连接为例。
存储器620作为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种数据同步方法对应的程序指令/模块(例如,附图5所示的第一写入模块510,第二写入模块520、添加模块530和第三写入模块540)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例的一种数据同步方法,即:
每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中;
在从所述源表中获取所述增量数据成功,且所述增量数据写入所述中间表成功的情况下,将当前时间节点信息以及所述中间表的信息写入到控制表中;
将所述当前时间节点信息以及所述中间表的信息作为待执行任务标识,并添到待执行任务队列中;
依次将所述待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。
存储器620可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器620可选包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的一种数据同步方法:
每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中;
在从所述源表中获取所述增量数据成功,且所述增量数据写入所述中间表成功的情况下,将当前时间节点信息以及所述中间表的信息写入到控制表中;
将所述当前时间节点信息以及所述中间表的信息作为待执行任务标识,并添到待执行任务队列中;
依次将所述待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (15)

1.一种数据同步方法,其特征在于,包括:
每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中;
在从所述源表中获取所述增量数据成功,且所述增量数据写入所述中间表成功的情况下,将当前时间节点信息以及所述中间表的信息写入到控制表中;
将所述当前时间节点信息以及所述中间表的信息作为待执行任务标识,并添到待执行任务队列中;
依次将所述待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。
2.根据权利要求1所述的方法,其特征在于,还包括:
若从所述源表中获取增量数据失败,和/或所述增量数据写入所述中间表失败,将所述当前时间节点信息和错误信息记录到所述控制表中;
将所述当前时间节点信息和所述错误信息对应的任务状态更新为卸数出错;
基于所述控制表中任务状态为卸数出错的当前时间节点信息以及所述错误信息重新获取增量数据和/重新将所述增量数据写入所述中间表中。
3.根据权利要求1所述的方法,其特征在于,还包括:
若检测到将所述中间表的增量数据写入所述目标表失败,将所述中间表的信息和目标表的信息写入到所述控制表中,并将所述中间表的信息和所述目标表的信息对应的任务状态修改为装数出错;
查找任务状态为装数出错的中间表的信息以及目标表的信息,并基于查找到的信息确定装数出错任务对应中间表和目标表,将确定的所述中间表的增量数据重新写入到确定的所述目标表中。
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
若所述增量数据写入所述目标表成功,将所述控制表内中间表的信息对应的任务状态进行更新,并删除所述中间表。
5.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
若从所述源表中获取增量数据失败,和/或所述增量数据写入所述中间表失败,将当前时间节点信息以及所述错误信息记录到日志表中。
6.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
每隔预设时间段从所述源数据库中的所有源表中的数据同步至所述目标数据库的目标表中,其中,预设时间段大于所述设定时间间隔。
7.根据权利要求1-3任一项所述的方法,其特征在于,从源数据库中的源表中获取过去设定时间间隔内的增量数据,包括:
从源数据库中的源表中并行获取过去设定时间间隔内的增量数据。
8.根据权利要求1-3任一项所述的方法,其特征在于,从源数据库中的源表中获取过去设定时间间隔内的增量数据,包括:
基于配置文件中的配置信息从源数据表中获取过去设定时间段内的增量数据;
将待执行任务对应的中间表的数据写入目标数据库对应的目标表中,包括:
基于配置文件中的配置信息将待执行任务对应的中间表的数据写入到目标数据库对应的目标表中。
9.根据权利要求1-3任一项所述的方法,其特征在于,当前时间节点信息包括当前时刻以及在所述当前时刻之前,且与所述当前时刻间隔为设定时间间隔的时刻。
10.根据权利要求1-3任一项所述的方法,其特征在于,所述每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中,包括:
每隔设定时间间隔从源数据库中的源表中通过select语句采集过去设定时间间隔内的增量数据,并在所述目标数据库中建立所述源表对应的中间表,并将所述增量数据写入所述中间表中。
11.一种数据同步装置,其特征在于,包括:
第一写入模块,用于每隔设定时间间隔从源数据库中的源表中获取过去设定时间间隔内的增量数据,并将所述增量数据写入所述源表对应的中间表中;
第二写入模块,用于在从所述源表中获取所述增量数据成功,且所述增量数据写入所述中间表成功的情况下,将当前时间节点信息以及所述中间表的信息写入到控制表中;
添加模块,用于将所述当前时间节点信息以及所述中间表的信息作为待执行任务标识,并添到待执行任务队列中;
第三写入模块,用于依次将所述待执行任务队列中待执行任务对应的中间表的增量数据写入目标数据库对应的目标表中。
12.根据权利要求11所述的装置,其特征在于,还包括:
记录模块,用于若从所述源表中获取增量数据失败,和/或所述增量数据写入所述中间表失败,将所述当前时间节点信息和错误信息记录到所述控制表中;
任务状态更新模块,用于将所述当前时间节点信息和所述错误信息对应的任务状态更新为卸数出错;
第四写入模块,用于基于所述控制表中任务状态为卸数出错的当前时间节点信息以及所述错误信息重新获取增量数据和/重新将所述增量数据写入所述中间表中。
13.根据权利要求11所述的装置,其特征在于,还包括:
任务状态修改模块,用于若检测到将所述中间表的增量数据写入所述目标表失败,将所述中间表的信息和目标表的信息写入到所述控制表中,并将所述中间表的信息和所述目标表的信息对应的任务状态修改为装数出错;
第五写入模块,用于查找任务状态为装数出错的中间表的信息以及目标表的信息,并基于查找到的信息确定装数出错任务对应中间表和目标表,将确定的所述中间表的增量数据重新写入到确定的所述目标表中。
14.一种数据同步设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10任一项所述的方法。
CN202011025736.6A 2020-09-25 2020-09-25 一种数据同步方法、装置、设备及存储介质 Pending CN112182104A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011025736.6A CN112182104A (zh) 2020-09-25 2020-09-25 一种数据同步方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011025736.6A CN112182104A (zh) 2020-09-25 2020-09-25 一种数据同步方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN112182104A true CN112182104A (zh) 2021-01-05

Family

ID=73944032

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011025736.6A Pending CN112182104A (zh) 2020-09-25 2020-09-25 一种数据同步方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112182104A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112732679A (zh) * 2021-01-20 2021-04-30 维沃移动通信有限公司 数据迁移方法、装置、电子设备及可读存储介质
CN112948504A (zh) * 2021-03-30 2021-06-11 苏宁易购集团股份有限公司 数据采集方法、装置、计算机设备和存储介质
CN113378622A (zh) * 2021-04-06 2021-09-10 青岛以萨数据技术有限公司 一种特定人员识别方法、设备、系统及介质
CN113407544A (zh) * 2021-07-13 2021-09-17 南方电网数字电网研究院有限公司 一种多模型数据的同步方法及装置
CN113486113A (zh) * 2021-06-25 2021-10-08 山东齐鲁数通科技有限公司 一种基于Kettle的增量同步数据的方法及终端
CN114185983A (zh) * 2021-12-14 2022-03-15 中南大学 一种数据抽取管控方法、装置、设备及存储介质
CN115455012A (zh) * 2022-11-10 2022-12-09 广东广宇科技发展有限公司 一种数据采集方法、电子设备及存储介质
CN116089537A (zh) * 2023-04-07 2023-05-09 江西省智能产业技术创新研究院 增量数据同步方法、系统、计算机及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017076321A1 (zh) * 2015-11-05 2017-05-11 中兴通讯股份有限公司 数据库同步方法及系统、源数据和目标数据同步装置
CN107885804A (zh) * 2017-11-02 2018-04-06 平安科技(深圳)有限公司 数据库同步方法、应用服务器及计算机可读存储介质
CN109241175A (zh) * 2018-06-28 2019-01-18 东软集团股份有限公司 数据同步方法、装置、存储介质及电子设备
CN111125214A (zh) * 2019-12-02 2020-05-08 武汉虹信技术服务有限责任公司 一种轻量级增量数据同步方法、装置及计算机可读介质
CN111400407A (zh) * 2020-04-10 2020-07-10 浙江大华技术股份有限公司 数据的同步方法及装置、存储介质及电子装置
CN111506556A (zh) * 2020-04-09 2020-08-07 北京市测绘设计研究院 一种多源异构的结构化数据同步方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017076321A1 (zh) * 2015-11-05 2017-05-11 中兴通讯股份有限公司 数据库同步方法及系统、源数据和目标数据同步装置
CN107885804A (zh) * 2017-11-02 2018-04-06 平安科技(深圳)有限公司 数据库同步方法、应用服务器及计算机可读存储介质
WO2019085471A1 (zh) * 2017-11-02 2019-05-09 平安科技(深圳)有限公司 数据库同步方法、应用服务器及计算机可读存储介质
CN109241175A (zh) * 2018-06-28 2019-01-18 东软集团股份有限公司 数据同步方法、装置、存储介质及电子设备
CN111125214A (zh) * 2019-12-02 2020-05-08 武汉虹信技术服务有限责任公司 一种轻量级增量数据同步方法、装置及计算机可读介质
CN111506556A (zh) * 2020-04-09 2020-08-07 北京市测绘设计研究院 一种多源异构的结构化数据同步方法
CN111400407A (zh) * 2020-04-10 2020-07-10 浙江大华技术股份有限公司 数据的同步方法及装置、存储介质及电子装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112732679A (zh) * 2021-01-20 2021-04-30 维沃移动通信有限公司 数据迁移方法、装置、电子设备及可读存储介质
CN112948504A (zh) * 2021-03-30 2021-06-11 苏宁易购集团股份有限公司 数据采集方法、装置、计算机设备和存储介质
CN112948504B (zh) * 2021-03-30 2022-12-02 苏宁易购集团股份有限公司 数据采集方法、装置、计算机设备和存储介质
CN113378622A (zh) * 2021-04-06 2021-09-10 青岛以萨数据技术有限公司 一种特定人员识别方法、设备、系统及介质
CN113486113A (zh) * 2021-06-25 2021-10-08 山东齐鲁数通科技有限公司 一种基于Kettle的增量同步数据的方法及终端
CN113486113B (zh) * 2021-06-25 2023-06-06 山东齐鲁数通科技有限公司 一种基于Kettle的增量同步数据的方法及终端
CN113407544A (zh) * 2021-07-13 2021-09-17 南方电网数字电网研究院有限公司 一种多模型数据的同步方法及装置
CN114185983A (zh) * 2021-12-14 2022-03-15 中南大学 一种数据抽取管控方法、装置、设备及存储介质
CN115455012A (zh) * 2022-11-10 2022-12-09 广东广宇科技发展有限公司 一种数据采集方法、电子设备及存储介质
CN116089537A (zh) * 2023-04-07 2023-05-09 江西省智能产业技术创新研究院 增量数据同步方法、系统、计算机及存储介质

Similar Documents

Publication Publication Date Title
CN112182104A (zh) 一种数据同步方法、装置、设备及存储介质
CN109460349B (zh) 一种基于日志的测试用例生成方法和装置
CN112000737B (zh) 基于多云管理的数据同步方法、系统、终端及存储介质
CN107783975B (zh) 分布式数据库同步处理的方法和装置
CN110069572B (zh) 基于大数据平台的hive任务调度方法、装置、设备及存储介质
CN109918349B (zh) 日志处理方法、装置、存储介质和电子装置
CN106874281B (zh) 实现数据库读写分离的方法和装置
CN109086382B (zh) 一种数据同步方法、装置、设备及存储介质
CN107943618B (zh) 仿真系统的数据快速恢复方法及存储介质
CN108108431B (zh) 数据同步方法和系统
CN111008246A (zh) 数据库日志同步方法、装置、计算机设备及可读存储介质
CN113704790A (zh) 一种异常日志信息汇总方法及计算机设备
CN112612850A (zh) 数据同步方法及装置
CN113076304A (zh) 一种分布式版本管理方法、装置和系统
US10915510B2 (en) Method and apparatus of collecting and reporting database application incompatibilities
CN115994085A (zh) 代码覆盖率的测试处理方法、装置、设备及存储介质
CN116501700B (zh) 一种app格式化文件离线存储方法、装置、设备及存储介质
CN115391457B (zh) 跨数据库的数据同步方法、装置及存储介质
CN113553488A (zh) 搜索引擎中索引数据的更新方法、装置、电子设备及介质
CN114253924A (zh) 一种同步方法、设备和存储介质
CN115878721A (zh) 一种数据同步方法、装置、终端和计算机可读存储介质
CN113468218A (zh) 一种对数据库慢sql进行监测和管理的方法和装置
CN112948494A (zh) 数据同步方法、装置、电子设备和计算机可读介质
CN114510529A (zh) 数据同步方法、装置、计算机设备和存储介质
CN116737834B (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