Flink CDC(Change Data Capture)是基于 Apache Flink 构建的一种用于实时数据同步和变更捕获的开源解决方案。它允许你在源数据库发生变更时,实时捕获这些变更并以结构化的方式进行处理和同步。
flink-cdc 3.0
Flink CDC 支持多种常见的关系型数据库,如 MySQL、PostgreSQL、Oracle 等。它利用源数据库的日志(如 MySQL 的二进制日志、PostgreSQL 的 WAL)来捕获数据变更,而不会对源数据库的读写性能产生明显的影响。
2、Flink-CDC 工作流程Flink CDC 的工作流程如下:
连接到源数据库:Flink CDC 建立与源数据库的连接,并监控源数据库的日志变更。变更捕获:Flink CDC 通过解析源数据库的日志,捕获数据变更操作,如插入、更新、删除等。变更流转换:捕获到的数据变更将被转换为 Flink 流式数据,以方便后续对数据进行处理和转换操作。数据处理和同步:Flink CDC 可以将捕获到的数据变更同步到其他目标数据存储系统,如数据仓库、搜索引擎、缓存等。同时,你可以使用 Flink 提供的丰富的数据处理能力和算子来进行实时数据分析、转换和计算。
etl by flink-cdc
3、Flink-CDC特点可靠性:Flink CDC 通过基于日志的方式捕获数据变更,可以确保高度可靠的数据同步和一致性保障。
低延迟:Flink CDC 实时捕获源数据库的变更,可以以低延迟的方式将数据同步到目标系统。
可扩展性:Flink CDC 基于 Apache Flink 构建,可以通过水平扩展和动态伸缩来处理大规模的数据变更。
总之,Flink CDC 提供了一种强大而灵活的解决方案,用于实时数据同步和变更捕获。它为数据流处理提供了高效、可靠和扩展性强的基础,适用于各种实时数据应用场景。
4、demo : 实时统计图书馆各图书借阅人数及最近借阅时间set execution.checkpointing.interval = 10min;set execution.checkpointing.tolerable-failed-checkpoints = 100;set restart-strategy = 'fixed-delay';set restart-strategy.fixed-delay.attempts = 2147483647;set table.exec.mini-batch.enabled = true;set table.exec.mini-batch.allow-latency = 1s;set table.exec.mini-batch.size = 5000;CREATE TABLE t_article_visit ( id INT, article_id INT, visitor STRING, visitor_time TIMESTAMP(0), PRIMARY KEY (id) NOT ENFORCED) WITH ( 'connector' = 'postgres-cdc', 'hostname' = '127.0.0.1', 'port' = '5432', 'username' = 'czs_user', 'password' = 'pwd', 'database-name' = 'test', 'schema-name' = 'public', 'table-name' = 't_article_visit', 'decoding.plugin.name' = 'pgoutput', 'debezium.slot.name' = 'flink_t_article_visit');CREATE TABLE t_article_visit_calc ( article_id INT, visitors BIGINT, visitor_latest_time TIMESTAMP(3), PRIMARY KEY (article_id) NOT ENFORCED) WITH ( 'connector' = 'jdbc', 'url' = 'jdbc:postgresql://localhost:5432/test', 'username' = 'czs_user', 'password' = 'pwd', 'table-name' = 't_article_visit_calc');insert into t_article_visit_calcselect article_id,count(1) as visitors,max(visitor_time) as visitor_latest_timefrom t_article_visitgroup by article_id;