Dinky整库同步方案CDCSOURCE同步数据到mysql

前言

Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。 致力于简化Flink任务开发,提升Flink任务运维能力,降低Flink入门成本,提供一站式的Flink任务开发、运维、监控、报警、调度、数据管理等功能。

今天想给大家说一说,如何通过dinky数据开发平台提供的CDCSOURCE 整库同步方案将Mysql同步到mysql数据库中。

实现步骤

  • 搭建好Flink appliction部署环境
  • 定义dinky全局变量(数据库配置信息)
  • 定义CDCSOURCE整库同步的脚本

参考之前的文章。

步骤2.定义Dinky全局变量

定义Dinky中的全局变量

mysql1_host

mysql1_user

mysql1_password

...

步骤3.定义CDCSOURCE整库同步的脚本

创建作业ods-mysql-to-mysql,选择flink集群为k8s-appliction-test

使用步骤2的全局变量

${mysql1_host}

${mysql1_user}

${mysql1_password}

...

复制代码
-- checkpoint配置
SET 'execution.checkpointing.interval' = '5min';
SET 'execution.checkpointing.timeout' = '30min';

EXECUTE CDCSOURCE cdc_mysql WITH (
 'connector' = 'mysql-cdc',
 'hostname' = '${mysql1_host}',
 'port' = '3306',
 'username' = '${mysql1_user}',
 'password' = '${mysql1_password}',
 'checkpoint' = '3000',
 'scan.startup.mode' = 'initial',
 'parallelism' = '1',
 'table-name' = 'db1\.tb1,db1\.tb2',
 'sink.connector' = 'jdbc',
 'sink.url' = 'jdbc:mysql://${mysql2_host}:3306/db2?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai',
 'sink.username' = '${mysql2_user}',
 'sink.password' = '${mysql2_password}',
 'sink.sink.db' = 'db2',
 'sink.table.prefix' = 'prefix_',
 'sink.table.lower' = 'true',
 'sink.table-name' = '#{tableName}',
 'sink.driver' = 'com.mysql.jdbc.Driver',
 'sink.sink.buffer-flush.interval' = '2s',
 'sink.sink.buffer-flush.max-rows' = '100',
 'sink.sink.max-retries' = '50',
 'sink.auto.create' = 'true'
)

Flink作业运行如下

总结

  1. Dinky 定义了 CDCSOURCE 整库同步的语法,该语法和 CDAS 作用相似,可以直接自动构建一个整库入仓入湖的实时任务,并且对 source 进行了合并,不会产生额外的 Mysql 及网络压力,支持对任意 sink 的同步,如 kafka、doris、hudi、jdbc 等等
  2. Dinky中的作业开启前,如果使用了全局变量,务必启用全局变量配置的开关,否则提交作业会报错。
  3. 解决了单个Flink作业造成的大量的 DDL 和编写大量的 INSERT INTO,更为严重的是会占用大量的数据库连接,对 Mysql 和网络造成压力。
相关推荐
驾数者3 小时前
Flink SQL容错机制:Checkpoint与Savepoint实战解析
大数据·sql·flink
Hello.Reader7 小时前
Flink Avro Format Java / PyFlink 读写、Schema 细节与坑点总结
java·python·flink
Hello.Reader8 小时前
Flink Source/Sink 的 Exactly-Once、At-Least-Once 到底意味着什么?
大数据·flink
magic_kid_201012 小时前
Flink on YARN 依赖/JAR 包问题排查指南
flink·jar·包冲突
俊哥大数据1 天前
【项目10】基于Flink房地产领域大数据实时分析系统
大数据·flink
Hello.Reader1 天前
Flink CEP Pattern API、连续性、跳过策略、超时与迟到数据一篇讲透
大数据·flink
俊哥大数据1 天前
【项目7】 基于Flink新闻资讯大数据推荐系统
大数据·flink
Hello.Reader1 天前
Flink State Processor API 读写/修复 Savepoint,把“状态”当成可查询的数据
大数据·flink
lpfasd1231 天前
鲲鹏生态下的实时计算新选择:OmniStream深度解析与竞品横向对比
大数据·flink