版本说明:
mysql 5.6+
doris doris-1.2.4-1-Unknown
flink 1.17.1
// 尤其注意 flink-doris-connector flink-sql-connector-mysql-cdc 这俩货
ll /flink17/lib/
-rw-r--r-- 1 root root 58284 Sep 5 2023 commons-cli-1.5.0.jar
-rw-r--r-- 1 root root 196491 Sep 5 2023 flink-cep-1.17.1.jar
-rw-r--r-- 1 root root 542620 Sep 5 2023 flink-connector-files-1.17.1.jar
-rw-r--r-- 1 root root 102472 Sep 5 2023 flink-csv-1.17.1.jar
-rw-r--r-- 1 root root 135975541 Sep 5 2023 flink-dist-1.17.1.jar
-rw------- 1 root root 8452171 Sep 5 2023 flink-doris-connector-1.17-1.4.0.jar
-rw-r--r-- 1 root root 180248 Sep 5 2023 flink-json-1.17.1.jar
-rw-r--r-- 1 root root 21043319 Sep 5 2023 flink-scala_2.12-1.17.1.jar
-rw-r--r-- 1 root root 29 Aug 31 2023 flink-shaded-hadoop-3-uber-3.1.1.7.1.1.0-565-9.0.jar
-rw-r--r-- 1 root root 3704559 Aug 31 2023 flink-sql-connector-kafka_2.12-1.14.4.jar
-rw-r--r-- 1 root root 22096298 Sep 5 2023 flink-sql-connector-mysql-cdc-2.2.1.jar
-rw-r--r-- 1 root root 39635530 Aug 31 2023 flink-table_2.12-1.14.4.jar
-rw-r--r-- 1 root root 15407424 Sep 5 2023 flink-table-api-java-uber-1.17.1.jar
-rw-r--r-- 1 root root 38191226 Sep 5 2023 flink-table-planner-loader-1.17.1.jar
-rw-r--r-- 1 root root 3146210 Sep 5 2023 flink-table-runtime-1.17.1.jar
-rw-r--r-- 1 root root 208006 Sep 5 2023 log4j-1.2-api-2.17.1.jar
-rw-r--r-- 1 root root 301872 Sep 5 2023 log4j-api-2.17.1.jar
-rw-r--r-- 1 root root 1790452 Sep 5 2023 log4j-core-2.17.1.jar
-rw-r--r-- 1 root root 24279 Sep 5 2023 log4j-slf4j-impl-2.17.1.jar
-rw------- 1 root root 124774 Sep 5 2023 mysql-connector-java-8.0.33.jar
任务提交
//在flink集群启动以后,直接提交脚本即可,这里是直接运用mysqlbinlog到doris,没有通过kafka。
./bin/flink run \
-Dexecution.checkpointing.interval=10s \
-Dparallelism.default=3 \
-c org.apache.doris.flink.tools.cdc.CdcTools \
/flink17/lib/flink-doris-connector-1.17-1.4.0.jar \
mysql-sync-database \
--database ods \
--job-name flink任务名 \
--mysql-conf hostname=mysql地址 \
--mysql-conf username=mysql用户 \
--mysql-conf password=mysql密码 \
--mysql-conf database-name=mysql库名 \
--including-tables "表1|表2|表3" \
--sink-conf fenodes=fe的ip:8030 \
--sink-conf username=fe用户名 \
--sink-conf password=fe密码 \
--sink-conf jdbc-url=jdbc:mysql:/fe的ip:9030 \
--sink-conf sink.label-prefix=label01 \
--table-conf replication_num=2 \
--table-prefix ods_
任务查看
./bin/flink list
Waiting for response...
------------------ Running/Restarting Jobs -------------------
28.05.2024 10:31:06 : bcf9f6b9a4eaaefaaa697a8e6d0f36d6 : flink任务名 (RUNNING)
28.05.2024 10:31:23 : ff584254ce4cdac9498da496094dc715 : flink任务名 (RUNNING)
注意
这种整库多表同步方式不需要提前在doris建表。只要提交任务以后,会直接在doris建表并灌装数据进去。
当然,提前建好表也是可以的。这里唯一的风险点就是flinkCDC任务是否稳定!
即时查询
CREATE view ads.ads_res_view AS SELECT * from 表1 join 表2 on 表1.id=表2.id;
// 使用:
select * from ads.ads_res_view limit 6;
非常方便有没有?