CN117708243A - 一种基于Flink CDC的多源异构数据同步方法 - Google Patents

一种基于Flink CDC的多源异构数据同步方法 Download PDF

Info

Publication number
CN117708243A
CN117708243A CN202311811320.0A CN202311811320A CN117708243A CN 117708243 A CN117708243 A CN 117708243A CN 202311811320 A CN202311811320 A CN 202311811320A CN 117708243 A CN117708243 A CN 117708243A
Authority
CN
China
Prior art keywords
data
cdc
source
flink
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
Application number
CN202311811320.0A
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 Telecom Digital Intelligence Technology Co Ltd
Original Assignee
China Telecom Digital Intelligence 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 China Telecom Digital Intelligence Technology Co Ltd filed Critical China Telecom Digital Intelligence Technology Co Ltd
Priority to CN202311811320.0A priority Critical patent/CN117708243A/zh
Publication of CN117708243A publication Critical patent/CN117708243A/zh
Pending legal-status Critical Current

Links

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
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

本发明提供一种基于Flink CDC的多源异构数据同步方法,属数据处理技术领域。具体包括:读取并解析配置文件;根据所述配置文件连接至指定数据源;由所述数据源解析建表SQL,根据所述建表SQL导入流式数据表结构及批式数据表结构至目标数据库;监控所述目标数据库中的变更操作,并将所述变更操作转换为数据流进行处理,以完成数据同步。本发明提升了数据同步任务的实时性,同时提升了性能及吞吐量,另外还支持多种数据源,还能够保证数据不会丢失或者重复。

Description

一种基于Flink CDC的多源异构数据同步方法
技术领域
本发明属于数据处理技术领域,尤其涉及一种基于Flink CDC的多源异构数据同步方法。
背景技术
在云网资源数字孪生的业务系统中,多个省份的数据都需要同步到统一的数据库或者是数据湖中,在这样的场景下,我们以往在使用oracle数据库的时候,是通过ogg做数据同步,地区性的ogg组件把增量信息推送给总ogg组件,总ogg组件接收增量信息同步数据,集团ogg组件把增量信息推送给ogg4kafka组件,然后通过读取kafka消息进行数据的增量模转,后续在去O的目标下,现在更换为PG的两级从库的方案。
然而目前市面上支持增量同步的工具有很多,但大都存在一定的问题:
实时性不够强:datax和sqoop都是比较知名的数据同步工具,而且这两个工具都支持全量和增量同步,但是datax和sqoop执行增量同步的方式并不是实时进行的,而是定时或者手动进行数据的同步,这就导致数据不能够及时地传输到我们所需要使用的存储位置;
执行效率低、影响业务表结构:以往的数据同步工具,在做增量同步的时候,通常是使用拉链表的形式,对数据进行upsert操作,拉链表会导致业务表的列数和行数变大,会影响到查询的效率和占用较大的存储空,而upsert操作并不是每个数据库都支持的操作,如果数据库没有upsert操作的原生支持,那么就需要先执行update,根据update的结果判断是否进行insert,同步性能低的同时还对数据库造成了不必要的压力;
同步的过程中丢失数据:Canal作为阿里开源的数据库同步工具,最开始的设计是为了应对双机房部署问题而开发的,在前些年应用比较广泛,但是近几年来都在逐渐减少使用,就是因为canal在同步数据的过程中,偶尔会出现丢失数据的情况,即使是在最近的一次更新中,canal也会出现这种情况;
耦合性较高:上文中提到的OGG同步工具,只是为了oracle单独开发的数据同步工具,Debezium的工作原理与canal比较相似,但是其在开发之初,设计成一个Kafka Connect的Source Plugin,目前开发者虽致力于将其与Kafka Connect解耦,但当前的代码实现还未变动,其他的像Maxwell等虽然不与kafka强相关,但也大多只支持到消息队列或者其他中间存储中,不支持直接进行数据的同步。
发明内容
鉴于以上现有技术的不足,发明的目的在于提供一种基于Flink CDC的多源异构数据同步方法。
本发明提供一种基于Flink CDC的多源异构数据同步方法,包括:
S1:读取并解析配置文件;
S2:根据所述配置文件连接至指定数据源;
S3:由所述数据源解析建表SQL,根据所述建表SQL导入流式数据表结构及批式数据表结构至目标数据库;
S4:监控所述目标数据库中的变更操作,并将所述变更操作转换为数据流进行处理,以完成数据同步。
进一步的,步骤S1中,所述配置文件的格式为INI、JSON、YAML或properties格式。
进一步的,步骤S2中的所述指定数据源包括基本文件系统、Apache Kafka流消息平台、Amazon Kinesis流数据平台、数据库及WebSocket。
进一步的,所述基本文件系统包括本地文件系统、HDFS、Amazon S3及Ceph。
进一步的,所述数据库包括MySQL、PostgreSQL、Elasticsearch、Cassandra及Redis。
进一步的,步骤S2中的所述指定数据源还包括非结构化数据及自定义协议,当所述指定数据源为非结构化数据或自定义协议时,通过通用连接器进行连接。
进一步的,步骤S3中,所述流式数据表结构中包括时间戳字段及版本号字段,所述时间戳字段表示每条流式数据的生成时间,所述版本号字段表示每条流式数据的版本信息。
进一步的,所述流式数据表结构中还添加有元数据信息,所述元数据信息包括数据来源及数据处理节点。
进一步的,步骤S3中,对批式数据表结构的批处理包括水平切片及分片存储至目标数据库。
进一步的,步骤S4具体包括:
将对所述目标数据库中表的变更操作,转换为Flink数据流;
由所述目标数据库的变更日志中解析获得变更前行数据及变更后行数据;
对变更数据进行按键分区;
基于CDC数据源与Flink检查点机制,对变更数据进行保存。
本发明有益效果如下:
本发明的一种基于Flink CDC的多源异构数据同步方法,提供了一种基于FlinkCDC技术的,支持多个数据源的实时ETL系统,第一支持多种数据源:支持多种数据源作为输入端、输出端和流批的聚合等操作;第二可配置:以配置的形式,只需要用户在配置文件中写建表sql和同步sql即可进行数据的处理、转换、同步;第三支持增量和全量同步:在数据同步时,开始时是做的全量同步,后续过程为增量同步,同时会自动监控数据库的数据变动,实时地更新目标端数据;第四支持与源表的数据进行聚合操作:得益于Flink的流批一体的设计理念,在实时数据同步的时候,如果需要对数据进行聚合操作,那么可以导入需要聚合的表的数据,就不需要再去数据库中查询;第五确定一次语义:在分布式场景下,有时会出现一个消息执行多次的情况,本发明保证了每个数据在输出到目标端时会且仅会执行一次。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于Flink CDC的多源异构数据同步方法流程图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。应该理解,这些描述只是示例性的,并非用于限定本发明的范围。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明公开的概念。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的方法和系统的例子。
下面结合图1描述本发明实施例。
本发明提供一种基于Flink CDC的多源异构数据同步方法,包括:
S1:读取并解析配置文件;
其中,步骤S1中,所述配置文件的格式为INI、JSON、YAML或properties格式。
本阶段首先进行解析配置文件,读取所需要的配置,并进行资源申请,系统支持INI、JSON、XML、YAML、TOML、properties格式的配置文件的解析。
S2:根据所述配置文件连接至指定数据源;
其中,步骤S2中的所述指定数据源包括基本文件系统、Apache Kafka流消息平台、Amazon Kinesis流数据平台、数据库及WebSocket。
进一步的,上述的Apache Kafka是一个流消息平台,用于处理实时数据流,系统通过flink提供的Kafka连接器,可以直接从Kafka主题中读取数据,并将数据流转换为Flink数据流进行处理。
而Amazon Kinesis是一个托管的流数据平台,用于处理处理实时数据流,系统通过专门的Amazon Kinesis连接器,可以直接从Kinesis数据流中读取数据,并将数据流转换为Flink数据流进行处理。
另外Flink还支持从WebSocket数据源读取数据,可以使用WebSocket连接器连接到WebSocket服务器,并从中读取数据流。
其中,所述基本文件系统包括本地文件系统、HDFS、Amazon S3及Ceph。
进一步的,Flink支持各种文件系统,包括本地文件系统、Hadoop分布式文件系统(HDFS)、Amazon S3、Ceph等,可以通过指定文件路径或URL来访问这些文件系统,并以数据流的形式读取和处理文件中的数据。
其中,所述数据库包括MySQL、PostgreSQL、Elasticsearch、Cassandra及Redis。
进一步的,系统支持多种数据库,包括MySQL、PostgreSQL、Elasticsearch、Cassandra、Redis等,可以使用对应的连接器和驱动程序连接到这些数据库,并读取和写入其中的数据。
其中,步骤S2中的所述指定数据源还包括非结构化数据及自定义协议,当所述指定数据源为非结构化数据或自定义协议时,通过通用连接器进行连接。
进一步的,除上述连接器及可支持的数据源之外,系统还提供了一些通用的连接器,如HTTP、TCP、UDP等,可以处理非结构化数据和自定义协议。
S3:由所述数据源解析建表SQL,根据所述建表SQL导入流式数据表结构及批式数据表结构至目标数据库;
其中,步骤S3中,所述流式数据表结构中包括时间戳字段及版本号字段,所述时间戳字段表示每条流式数据的生成时间,所述版本号字段表示每条流式数据的版本信息。
其中,所述流式数据表结构中还添加有元数据信息,所述元数据信息包括数据来源及数据处理节点。
进一步的,在流式处理中,由于数据是实时产生的,需要使用时间戳(Timestamp)作为数据的唯一标识符,并且需要考虑到数据的版本控制,因此,在流式数据的表结构设计中,通常需要添加一个时间戳字段和一个版本号字段,以便记录每条数据的生成时间和版本信息。
同时,流式数据在处理过程中通常需要加入额外的元数据信息,例如数据来源、数据处理节点等,这些元数据信息都可以通过解析配置项自动完成相应表结构的定义和存储。
其中,步骤S3中,对批式数据表结构的批处理包括水平切片及分片存储至目标数据库。
而在批式处理中,批处理的表结构通常更偏向于扁平化,即将所有相关的信息都放在同一个表中进行存储,另外,在批处理中还需要考虑到数据的分片(Sharding),以便提高查询性能和并行处理能力,系统通过解析配置项,自动完成批处理的表结构的水平切分和分片存储,以便在高并发的情况下保证查询和写入的性能。
S4:监控所述目标数据库中的变更操作,并将所述变更操作转换为数据流进行处理,以完成数据同步。
进一步的,本阶段中系统通过Flink CDC可以监控关系型数据库,如MySQL、PostgreSQL等中表的增删改操作,并将这些操作转化为数据流,方便进行实时计算和分析。
其中,步骤S4具体包括:
将对所述目标数据库中表的变更操作,转换为Flink数据流;
由所述目标数据库的变更日志中解析获得变更前行数据及变更后行数据;
对变更数据进行按键分区;
基于CDC数据源与Flink检查点机制,对变更数据进行保存。
进一步的,系统可以监控特定表的插入、更新和删除操作,并将变更数据转换为Flink的数据流;系统可以从数据库的变更日志中解析出新的行数据和旧行数据,以及对数据的操作类型;系统可以使用Flink的KeyedStream API对变更数据进行按键分区;系统将CDC数据源与Flink的检查点机制相结合,以保证数据在出现故障或重启时不会丢失。
进一步的,Flink将之前某个时间点的状态保存下来,这份存档就是所谓的检查点,检查点是Flink容错机制的核心,检查是针对故障恢复的结果而言的,故障恢复之后继续处理的结果,应该与发生故障前完全一致。
而在一些实施例中,检查点作为应用状态的一份存档,其实就是所有任务状态在同一时间点的一个快照,它的触发是周期性的,每隔一段时间检查点保存操作被触发时,就把每个任务当前的状态复制一份,按照一定的逻辑结构放在一起持久化保存起来,就构成了检查点。
当发生故障时,首先需要找到最近一次成功保存的检查点来恢复状态,遇到故障之后,首先重启,然后读取检查点,进行状态的重置,随后重放数据并继续处理数据,以此保证数据在出现故障或重启时不会丢失。
本发明提供的一种基于Flink CDC的多源异构数据同步方法,首先简化数据同步的过程:用户只需要配置几个SQL,进行对应的表属性的设置,即可获得实时、高效的数据同步;其次解决了数据同步性能的瓶颈:单机的数据同步工具的吞吐量在需要对数据进行处理的时候,会遇到处理不过来的情况,本发明依靠分布式集群,有极高的吞吐量和执行效率;再次支持复杂多源数据场景:本发明支持在数据同步需要使用多种数据源对同步的数据进行转换,或者是多个输入源和多个目标端的情境;最后数据丢失或者重复问题:本发明基于Flink CDC,保证了数据不会丢失,同时支持“确定一次”语义,保证数据不会重复输出到目标端。
本发明提供的一种基于Flink CDC的多源异构数据同步方法,第一实时性高,通过解析数据库日志的形式执行数据同步任务;第二性能和吞吐量高,基于分布式执行数据同步任务,吞吐量和性能高;第三支持的数据源多,支持多种数据库的数据变动的解析,也支持导入其他数据作为中间处理的数据;第四数据准确性高,保证不会丢失或者是数据重复。
最后应说明的是,以上实施例仅用以说明本发明实施例的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种基于Flink CDC的多源异构数据同步方法,其特征在于,包括:
S1:读取并解析配置文件;
S2:根据所述配置文件连接至指定数据源;
S3:由所述数据源解析建表SQL,根据所述建表SQL导入流式数据表结构及批式数据表结构至目标数据库;
S4:监控所述目标数据库中的变更操作,并将所述变更操作转换为数据流进行处理,以完成数据同步。
2.根据权利要求1所述的一种基于Flink CDC的多源异构数据同步方法,其特征在于,步骤S1中,所述配置文件的格式为INI、JSON、YAML或properties格式。
3.根据权利要求1所述的一种基于Flink CDC的多源异构数据同步方法,其特征在于,步骤S2中的所述指定数据源包括基本文件系统、Apache Kafka流消息平台、AmazonKinesis流数据平台、数据库及WebSocket。
4.根据权利要求3所述的一种基于Flink CDC的多源异构数据同步方法,其特征在于,所述基本文件系统包括本地文件系统、HDFS、Amazon S3及Ceph。
5.根据权利要求3所述的一种基于Flink CDC的多源异构数据同步方法,其特征在于,所述数据库包括MySQL、PostgreSQL、Elasticsearch、Cassandra及Redis。
6.根据权利要求3所述的一种基于Flink CDC的多源异构数据同步方法,其特征在于,步骤S2中的所述指定数据源还包括非结构化数据及自定义协议,当所述指定数据源为非结构化数据或自定义协议时,通过通用连接器进行连接。
7.根据权利要求1所述的一种基于Flink CDC的多源异构数据同步方法,其特征在于,步骤S3中,所述流式数据表结构中包括时间戳字段及版本号字段,所述时间戳字段表示每条流式数据的生成时间,所述版本号字段表示每条流式数据的版本信息。
8.根据权利要求7所述的一种基于Flink CDC的多源异构数据同步方法,其特征在于,所述流式数据表结构中还添加有元数据信息,所述元数据信息包括数据来源及数据处理节点。
9.根据权利要求1所述的一种基于Flink CDC的多源异构数据同步方法,其特征在于,步骤S3中,对批式数据表结构的批处理包括水平切片及分片存储至目标数据库。
10.根据权利要求1所述的一种基于Flink CDC的多源异构数据同步方法,其特征在于,步骤S4具体包括:
将对所述目标数据库中表的变更操作,转换为Flink数据流;
由所述目标数据库的变更日志中解析获得变更前行数据及变更后行数据;
对变更数据进行按键分区;
基于CDC数据源与Flink检查点机制,对变更数据进行保存。
CN202311811320.0A 2023-12-27 2023-12-27 一种基于Flink CDC的多源异构数据同步方法 Pending CN117708243A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311811320.0A CN117708243A (zh) 2023-12-27 2023-12-27 一种基于Flink CDC的多源异构数据同步方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311811320.0A CN117708243A (zh) 2023-12-27 2023-12-27 一种基于Flink CDC的多源异构数据同步方法

Publications (1)

Publication Number Publication Date
CN117708243A true CN117708243A (zh) 2024-03-15

Family

ID=90153225

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311811320.0A Pending CN117708243A (zh) 2023-12-27 2023-12-27 一种基于Flink CDC的多源异构数据同步方法

Country Status (1)

Country Link
CN (1) CN117708243A (zh)

Similar Documents

Publication Publication Date Title
CN109918349B (zh) 日志处理方法、装置、存储介质和电子装置
CN111723160B (zh) 一种多源异构增量数据同步方法及系统
US11604804B2 (en) Data replication system
CN107038162B (zh) 基于数据库日志的实时数据查询方法和系统
CN110147411B (zh) 数据同步方法、装置、计算机设备及存储介质
WO2020147392A1 (zh) 数据库之间的数据同步方法和系统
CN105183860B (zh) 数据同步方法和系统
CN104679841B (zh) 一种消费端数据流复制方法及系统
CN111125260A (zh) 一种基于SQL Server的数据同步方法及系统
CN109298978B (zh) 一种指定位置的数据库集群的恢复方法及系统
CN107943618B (zh) 仿真系统的数据快速恢复方法及存储介质
CN107423452A (zh) 一种电网异构数据库同步复制迁移方法
CN111177254B (zh) 一种异构关系型数据库之间数据同步的方法和装置
CN108228755A (zh) 基于日志解析技术的MySQL数据库到Hadoop平台的数据同步复制方法
CN112328702A (zh) 数据同步方法及系统
CN117930737A (zh) 一种工业生产设备预警的可视化监测方法及装置
CN112052295A (zh) 一种数据同步方法、装置、电子设备和可读存储介质
CN110309206B (zh) 订单信息采集方法及系统
CN116383308A (zh) 一种具备全链路反压特性的数据同步方法及系统
CN117708243A (zh) 一种基于Flink CDC的多源异构数据同步方法
CN115314300B (zh) 飞行训练模拟机数据分析系统
CN104765748A (zh) 一种将复制表转换为分片表的方法及装置
CN114500289A (zh) 控制平面恢复方法、装置、控制节点及存储介质
Wu et al. SUNVE: Distributed Message Middleware towards Heterogeneous Database Synchronization
Soloviev et al. New persistent back-end for the ATLAS online information service

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