作为一个数据民工,最常做的一件事就是数据ETL,最关键的一件事就是从某个地方同步数据到某个地方,现在方案很多,有Datax,Seatunnel,Flink CDC,在这些优秀的开源项目中,Flink CDC是最受欢迎的一种实时数据同步方案,并且完全依赖于binlog日志来实现,降低了对库查询抽取的那种压力,对业务的影响做到了无感知,这个方案也是近年来很多中大型互联网公司最青睐的。
随着Flink CDC的发展,现在开始出现了可以通过编写yaml提示文本来提交任务实现数据的同步,这无疑是让不懂Flink,不会写代码的同学的福音,但是因为Flink CDC社区目前提供的方案还是需要在命令行去提交相关的脚本才能实现,我们如果说公司有一个应用可以直接让不懂代码的同学通过简单的编写yaml文件来实现提交任务,那就真的太棒了!
下面就让我浅浅的全方面的教大家一下全网最干的干货,最干的最全的教程!欢迎大家访问扫描如下内容点赞收藏加关注哦~
1、环境准备
工具名 | 版本 |
jdk | 17 |
flink | 1.19.2 |
docker | v28.0.1 |
flink-cdc | 3.3.0 |
1.1、安装带有开启binlog日志的mysql
本地找一个目录,新建docker目录,在新建docker-compose.yml文件
docker-compose.yml的内容如下:
services:
mysql:
image: debezium/example-mysql:2.7.2.Final
platform: linux/arm64
container_name: mysql_binlog
ports:
- "3306:3306"
environment:
MYSQL_USER: "mysql"
MYSQL_PASSWORD: "password"
MYSQL_ROOT_PASSWORD: "123456"
character-set-server: "utf8"
collation-server: "utf8_general_ci"
TZ: "Asia/Shanghai"
privileged: true
在当前目录执行安装命令
docker-compose up -d
安装完可以在docker的containers菜单点开后看到如下的内容
可以登陆进去确认下kafka的binlog日志是否有开启,执行 selec * from user;
查看 log_bin 是否是ON,