Dinky 上使用 FlinkCDC3.1 PIPELINE 同步MySQL到StarRocks

使用 Dinky 和 FlinkCDC 3.1 实现 MySQL 到 StarRocks 的同步

  • 本文介绍如何使用 Dinky 上的 FlinkCDC 3.1 PIPELINE 同步 MySQL 到 StarRocks,实现数据的新增、修改、删除,字段的自动新增和删除同步

注意

  • 想用 Flinkcdc Pipeline 到 StarRocks 必须使用 FlinkCDC 3.1,FlinkCDC 3.0的版本会报错显示 Caused by: java.lang.RuntimeException: Cannot find factory with identifier "starrocks" in the classpath.

环境信息

组件版本

yaml 复制代码
Flink 1.17
FlinkCDC 3.1
Dinky 1.1
StarRocks 3.1
Mysql 8.0

Dinky 上使用 FlinkCDC 3.1 Pipeline 同步MySQL到StarRocks需要的依赖

yaml 复制代码
Flink/lib 和 dinky/extends 目录下放置
StarRocks的 Flink connector jar和 MySQL CDC 的 Flink connector jar 以及CDC的jar
mysql-connector-java-8.0.27.jar
flink-sql-connector-mysql-cdc-3.1.0.jar
flink-connector-starrocks-1.2.9_flink-1.17.jar
flink-cdc-pipeline-connector-starrocks-3.1.0.jar
flink-cdc-pipeline-connector-mysql-3.1.0.jar
flink-cdc-dist-3.1.0.jar

注意:

整库同步配置

FlinkCDC 3.1 Pipeline starrocks会自动建表 默认是主键模型 支持数据删除 修改 字段新增删除

YAML 配置示例

以下是整库同步的配置:

yaml 复制代码
SET 'execution.checkpointing.interval' = '10s';
EXECUTE PIPELINE WITHYAML (
source:
  type: mysql
  hostname: 152.136.53.49
  port: 3306
  username: root
  password: 'xx_12345678'
  --  tables: test.\.*   整库同步到starrocks的test 库下 除了下游route中的teachers 他会同步到ods.teachers中
  tables: test.\.*
  server-id: 5400-5404
 
sink:
  type: starrocks
  name: Starrocks Sink
  jdbc-url: jdbc:mysql://127.0.0.1:9030
  load-url: 127.0.0.1:8030
  username: root
  password: 0123456789
  table.create.properties.replication_num: 1
  --  table.create.properties.fast_schema_evolution: true starrocks3.2以上支持

route:
  - source-table: test.teachers
    sink-table: ods.teachers   
    description: route all tables in source_db to sink_db

pipeline:
  name: Sync MySQL Database to starrocks Route
  parallelism: 1
)

说明:

  • tables: test.\.* 表示将 MySQL 数据库 test 中的所有表同步到 StarRocks 的 ods 数据库中。

指定库表同步

  • 你也可以选择性地同步特定的表到 StarRocks,并通过 route 配置映射表到指定的目标表
yaml 复制代码
SET 'execution.checkpointing.interval' = '10s';
EXECUTE PIPELINE WITHYAML (
source:
  type: mysql
  hostname: 152.136.53.49
  port: 3306
  username: root
  password: 'xx-12345'
  tables: test.teachers,test.teacher -- 指定表同步到StarRocks 配合route sink到指定的库表
  server-id: 5400-5404
 
sink:
  type: starrocks
  name: Starrocks Sink
  jdbc-url: jdbc:mysql://127.0.0.1:9030
  load-url: 127.0.0.1:8030
  username: root
  password: 123456
  table.create.properties.replication_num: 1
  --  table.create.properties.fast_schema_evolution: true   starrocks3.2以上支持

route:
  - source-table: test.teachers
    sink-table: ods.teachers
  - source-table: test.teacher
    sink-table: ods.teacher
    description: route all tables in source_db to sink_db

pipeline:
  name: Sync MySQL Database to starrocks Route
  parallelism: 1
)

说明:

  • 该配置将 MySQL 中的 test.teachers 和 test.teacher 表分别同步到 StarRocks 中的 ods.teachers 和 ods.teacher 表。
  • 同样支持数据的新增、修改、删除,以及表结构的演化(字段的新增和删除)。

总结

  • 通过 FlinkCDC 3.1,可以轻松实现 MySQL 到 StarRocks 的数据同步,尤其是对于整库或指定表的同步。本文介绍了在 Dinky 上使用 FlinkCDC 3.1 Pipeline 的完整配置,包括自动建表、字段演化、数据的增删改查等操作
相关推荐
IT成长日记8 分钟前
【Hive入门】Hive基础操作与SQL语法:DDL操作全面指南
hive·hadoop·sql·ddl操作
欧先生^_^10 分钟前
Spark 的一些典型应用场景及具体示例
大数据·分布式·spark
IT成长日记12 分钟前
【Hive入门】Hive分桶表深度解析:从哈希分桶到Join优化的完整指南
hive·hadoop·哈希算法·哈希分桶·join优化
八股文领域大手子1 小时前
如何给GitHub项目提PR(踩坑记录
大数据·elasticsearch·github
爱吃龙利鱼1 小时前
elk中kibana一直处于可用和降级之间且es群集状态并没有问题的解决方法
大数据·elk·elasticsearch
腾讯云大数据1 小时前
腾讯云ES一站式RAG方案获信通院“开源大模型+软件创新应用”精选案例奖
大数据·elasticsearch·开源·云计算·腾讯云
苍煜1 小时前
Elasticsearch(ES)中的脚本(Script)
大数据·elasticsearch·搜索引擎
Hello kele2 小时前
解构与重构:“整体部分”视角下的软件开发思维范式
大数据·经验分享·程序员·重构·项目管理·人月神话·沟通困局
Elastic 中国社区官方博客2 小时前
使用 LangGraph 和 Elasticsearch 构建强大的 RAG 工作流
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
别这么骄傲2 小时前
Flink概念-状态一致性的三种级别
大数据·flink