项目背景
当前需要搭建数据仓储,横向对比了多个数据库最终选定doris,正常的单表,多表数据同步已经完成开发。但是单全量表结构同步还是没有完成,发现flink有这个功能,现在进行使用
开始使用
废话不多说,直接上脚本
flink run \
-Dexecution.checkpointing.interval=10s \
-Dparallelism.default=1 \
-c org.apache.doris.flink.tools.cdc.CdcTools \
./lib/flink-doris-connector-1.17-1.4.0.jar \
mysql-sync-database \
--database yyt_cloud \
--mysql-conf hostname=192.168.157.192 \
--mysql-conf port=3306 \
--mysql-conf username=root \
--mysql-conf password=123456 \
--mysql-conf database-name=yyt-cloud \
--sink-conf fenodes=192.168.157.200:8030 \
--sink-conf username=root \
--sink-conf password=123456 \
--sink-conf jdbc-url=jdbc:mysql://192.168.157.200:9030 \
--sink-conf sink.label-prefix=test \
--table-conf replication_num=1
注意这个脚本需要有flink的环境支持。
其他想要查看的参数详情请查看文档:https://doris.apache.org/zh-CN/docs/dev/ecosystem/flink-doris-connector
踩坑记录
- 注意,flink与doris如果使用docker启动,需要注意docker的网络需要设置为同一块网卡,不然无法通讯
- 注意doris的版本,flink-cdc中,同步表结构使用了doris的自动分配桶大小功能,此功能需要1.2.2版本后的doris才能使用(https://doris.apache.org/zh-CN/docs/dev/advanced/autobucket)
- 注意flink版本,目前cdc支持的版本最高到1.18,现在flink的最新版本为1.19还未支持
- 请注意容器时区问题,请在创建容器的时候调整到同一时区,否则flink任务节点在执行时,会出现时区问题
- 请注意doris设置root密码问题,如果你设置的密码,但是输入密码错误,它会返回你当前连接的ip相关错误,这与mysql的表现不一致,请格外注意
- 请注意,当你使用flink-cdc执行mysql相关同步命令时,需要将你对应使用的jar包放置在flink/lib下,如果没有放置,将会返回找不到class相关错误,如执行flink-cdc-doris与flink-cdc-mysql,请注意需要放置的jar名称!