一、Flink CDC、Flink、CDC各有啥关系
Flink:流式计算框架,不包含 Flink CDC,和 Flink CDC没关系
CDC:是一种思想,理念,不涉及某一门具体的技术。CDC 是变更数据捕获(Change Data Capture)技术的缩写,它可以将源数据库(Source)的增量变动记录,同步到一个或多个数据目的(Sink)。在同步过程中,还可以对数据进行一定的处理,例如过滤、关联、分组、统计等。目前专业做数据库事件接受和解析的中间件是Debezium,如果是捕获Mysql,还有Canal。
Flink CDC:是 CDC 的一种实现而已,不属于 Flink 子版块。这个技术是阿里开发的。目的是为了丰富 Flink 的生态。
1.1 概述
Flink CDC 基于数据库日志的 技术,实现了全量和增量的一体化读取能力,并借助 Flink 优秀的管道能力和丰富的上下游生态,支持捕获多种数据库的变更,并将这些变更实时同步到下游存储。
1.2 和 jdbc Connectors 对比
连接器,确实可以读取外部的 数据库。比如:MySQL、Oracle、SqlServer等。但是,JDBC连数据库,只是瞬时操作,没办法持续监听数据库的数据变化。
,可以实现数据库的变更捕获,能够持续不断地把变更数据同步到下游的系统中。
官网概述:https://ververica.github.io/-cdc-connectors/
github链接:https://github.com/ververica/-cdc-connectors
二、使用
FlinkCDC 同步数据,有两种方式,一种是 FlinkSQL 的方式,一种是Flink DataStream 和 Table API 的方式。
我这里直接用的是 ieda 测试的 DataStream 方式。
代码来自:https://github.com/yclxiao/-cdc-demo/tree/main/src/main/java/com/yclxiao/cdcdemo
CloudAcctProfit2DwsHdjProfitRecordAPI.java
JdbcUtil.java
pom.xml:
2.1 Mysql 打开 bin-log 功能
og_bin 的Value如果为ON代表开启,如果为OFF代表关闭,MySQL8.0默认是开启的:
关闭状态:
- log_bin为ON代表MySQL已经开启binlog日志记录
- log_bin_basename配置了binlog的文件路径及文件前缀名
- log_bin_index配置了binlog索引文件的路径
开启状态:
可参考:MySQL 开启配置binlog以及通过binlog恢复数据
2.2 在 Mysql 中建库建表准备
2.3 遇到的坑
用 JDBC 连接 Mysql 的时候报错:
原因:从错误即可知道是时区的错误。
解决:使用 root 用户登录 ,再执行 命令。
注意:一开始改成了 ,但并不好使。
2.4 测试
Idea 启动程序后,在 oc_settle_profit 表中插入数据后 dws_profit_record_hdj__api 也可以同步插入相应的数据。
参考:
【博学谷学习记录】超强总结,用心分享|之CDC
一次打通FlinkCDC同步Mysql数据
三、番外
用 Flink CDC 可以监控 Mysql,但无法监控 StarRocks,和官方询问过,目前 StarRocks 并没有像 Mysql 这样被外部感知 DDL 操作的 bin-log 功能,所以暂时还无法用 Flink CDC 监控 StarRocks。