MySQL 存储的数据量大了之后往往会出现查询性能下降的问题,这时候通过 Flink SQL 里的 MySQL CDC Connector 将数据同步到其他数据存储是常见的一种处理方式。 例如CDC 到 ES 实现数据检索,CDC 到 ClikHouse 进行OLAP分析,CDC 到Kafka实现数据同步等,然而目前官方 MySQL CDC Connector 还无法实现动态同步表结构,如果...
既然作为一个sql的connector,那么就首先会有一个对应的TableFactory,然后在工厂类里面构造相应的source,最后将消费下来的数据转成flink认识的RowData格式,发送到下游。 我们按照这个思路来看看flink cdc源码的实现。 在flink-connector-mysql-cdc module中,找到其对应的工厂类:MySQLTableSourceFactory。然后来看一下它的 U...
有关MySQL CDC Connector WITH 选项的详细信息,请参见Connector Options。 创建OceanBase CDC 表 在Flink SQL CLI 中创建 OceanBase 数据库对应的表。创建mysql_tbl1_and_tbl2表,用来将关联后的数据写入 OceanBase 数据库中。 Flink SQL> CREATE TABLE mysql_tbl1_and_tbl2( col1 INT PRIMARY KEY, col2 INT...
在 Flink SQL CDC + JDBC Connector 方案中,上游是数据库系统的日志,是可以 replay 的,满足条件1“上游可 replay”,接下来我们分别分析 Flink SQL CDC 如何实现条件 2 和 3,JDBCConnector 如何实现条件 4,最终实现端到端的一致性。以 MySQL->MySQL 为例,架构图如下(目前 Flink SQL 是不支持 Source/Si...
Flink CDC (Change Data Capture) SQL 用于实现数据库的数据变更捕获,并通过 SQL 接口进行处理。以下是一个基本的示例,全量+增量数据mysql同步到clickhouse,展示如何使用 Flink CDC SQL 进行数据同步。 首先,确保你有 Flink 和 Flink CDC 的环境配置好。
'connector' = 'mysql-cdc', 'hostname' = '192.168.10.100', 'port' = '3700', 'username' = 'test', 'password' = 'test123456', 'database-name' = 'test', 'table-name' = 'orgcode_info' ); -- 定义sink表 drop table IF EXISTS orgcode_info; CREATE TABLE IF NOT EXISTS orgcode_in...
以MySQL 作为数据源 通过使用 Ververica 官方提供的flink-connector-mysql-cdc,Flink 可以既作为采集层采集 MySQL 的 binlog 生成动态表,也作为流计算层实现流式计算,如流式 Join、预聚合等。最后,Flink 通过 JDBC 连接器将计算完成的数据写入 TiDB 中。
首先mysql-cdc 作为 Flink SQL 的一个 connector,那就肯定会对应一个 TableFactory 类,我们就从这个工厂类入手分析一下源码的实现过程,先找到源码里面的 MySQLTableSourceFactory 这个类,然后来看一下它的 UML 类图. 从上图中可以看到 MySQLTableSourceFactory 只实现了 DynamicTableSourceFactory 这个接口,并没有实现...
新架构下实现的 source connector 可以做到批流一体,唯一的区别是对批处理SplitEnumerator会产出固定数量的 split 集合并且每个 split 都是有限数据集;对于流处理SplitEnumerator要么产出无限多的 split 要么 split 自身是无限数据集。 SplitEnumerator和SourceReader需要由用户提供具体的实现类,FLIP-27 在这两个组件之间引...