Flinkcdc 实现 MySQL 写入 Doris

Flinkcdc 实现 MySQL 写入 Doris

Flinkcdc 实现 MySQL 写入 Doris

一、环境配置

Doris:3.0.4 + JDK 17

MySQL (业务数据库):5.7

MySQL(本地数据库):5.7

Flink:flink-1.19.1

flinkcdc:flink-cdc-3.3.0

二、环境搭建

  1. 下载 Flink 1.19.1
bash 复制代码
wget https://archive.apache.org/dist/flink/flink-1.19.1/flink-1.19.1-bin-scala_2.12.tgz

解压后得到 flink-1.19.1 目录,设置 FLINK_HOME 为 flink-1.19.1 所在目录

bash 复制代码
sudo vim /etc/profile.d/my_env.sh

添加 Flink 路径

html 复制代码
export JAVA_HOME=/opt/module/java
export PATH=$PATH:$JAVA_HOME/bin
export FLINK_HOME=/opt/module/flink-1.19.1
export PATH=$PATH:$FLINK_HOME/bin 
  1. 读入数据通过在 conf/flink-conf.yaml 配置文件追加下列参数开启 checkpoint,每隔 3 秒做一次 checkpoint。
c 复制代码
execution.checkpointing.interval: 3000
  1. 使用下面的命令启动 Flink 集群
bash 复制代码
./bin/start-cluster.sh

启动成功的话,可以在 http://localhost:8081/访问到 Flink Web UI,如下所示:

多次执行 start-cluster.sh 可以拉起多个 TaskManager。

部署 Doris 和 MySQL 这部分省略

添加配置文件

Flink lib 目录下:

flinkcdc 3.3.0 lib 目录下

编写任务配置 yaml 文件。 下面给出了一个整库同步的示例文件 mysql-to-doris.yaml:

bash 复制代码
################################################################################
# Description: Sync MySQL all tables to Doris
################################################################################
source:
  type: mysql
  hostname: 172.16.11.154
  port: 3306
  username: root
  password: xxx
  tables: app_db.\.*
  server-id: 5400-5404
  server-time-zone: 'Asia/Shanghai'
sink:
  type: doris
  fenodes: 172.16.10.181:8030
  benodes: 172.16.10.181:8040
  username: root
  password: 123456
  table.create.properties.light_schema_change: true
  table.create.properties.replication_num: 1
  
pipeline:
  name: Sync MySQL Database to Doris
  parallelism: 1

其中: source 中的 tables: app_db..* 通过正则匹配同步 app_db 下的所有表。 sink 添加 table.create.properties.replication_num 参数是由于 Docker 镜像中只有一个 Doris BE 节点。

最后,通过命令行提交任务到 Flink Standalone cluster

bash 复制代码
bash bin/flink-cdc.sh mysql-to-doris.yaml

提交成功后,返回信息如:

bash 复制代码
Pipeline has been submitted to cluster.
Job ID: ae30f4580f1918bebf16752d4963dc54
Job Description: Sync MySQL Database to Doris

在 Flink Web UI,可以看到一个名为 Sync MySQL Database to Doris 的任务正在运行。

后续相关信息,参考官网即可

https://nightlies.apache.org/flink/flink-cdc-docs-release-3.3/zh/docs/get-started/quickstart/mysql-to-doris/

相关推荐
Architect_Lee33 分钟前
mac快速安装mysql
数据库·mysql·macos
渣渣盟1 小时前
当 Redis 写入不再是瓶颈后,Flink 任务的反压可能来自哪里?如何系统性地定位和解决 Flink 反压问题?
数据库·redis·flink
杜子不疼.1 小时前
不会SQL也能改数据库?我用NocoDB把MySQL变成了表格界面
数据库·sql·mysql
渣渣盟2 小时前
当 Redis 集群发生主从切换(Failover)时,Flink 任务会崩溃吗?如何利用 Sentinel 实现高可用?
redis·flink·sentinel
霸道流氓气质2 小时前
Mysql中慢 SQL 优化实战:减少不必要的 JOIN 关联
sql·mysql·mybatis
️学习的小王3 小时前
二级MySQL PHP综合应用题完整考点+历年真题风格练习题
android·mysql·php
渣渣盟3 小时前
当 Checkpoint 稳定运行后,如何进一步优化 Flink 作业的启动和恢复速度,让大状态作业的扩缩容从“小时级”降到“分钟级”?
大数据·flink
Dxy123931021613 小时前
Python 如何使用 MySQL 的事务
python·mysql
ZCBUS实时计算16 小时前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
xiaoye-duck17 小时前
MySQL 表约束全解:从基础约束到外键关联规则
数据库·mysql