Flink-CDC MySQL 全库同步到 Doris

目录

前言

  • 之前在Flink CDC MySQL同步到Elasticsearch提到过Flink CDC同步有三种方式:

    • 方式一、编写代码引入驱动包(Flink DataStream/Table API),灵活定制,适用于复杂业务。
    • 方式二、使用Flink SQL,极简搭建,适用于简单业务。
    • 方式三、使用flink-cdc,目前仅适用于单表(不能组宽表)。
  • 使用Flink SQL同步少量单表或组宽表效果很不错,如果要同步全库的表用Flink SQL写起来挺麻烦。就需要用Flink DataStream/Table APIflink-cdc。如果用Flink DataStream/Table API就要自己写代码,对于简单业务 flink-cdc 更方便。

前置准备

Java 环境

  • JDK 17(Flink和Doris都需要用JDK), 建议使用 sdkman 管理

数据库

  • MySQL 8+ , 很常用的软件,就不赘述了。

  • Doris 4+ ,安装文档

    • Doris要修改最大文件句柄数,修改虚拟内存区域。禁止虚拟内存,先启动FE再启动BE,启动命令如下
    shell 复制代码
    sudo sysctl -w vm.max_map_count=2000000
    sudo swapoff -a
    fe/bin/start_fe.sh --daemon
    be/bin/start_be.sh --daemon
    • 启动完成8030是 Web UI 界面,帐号root 无密码,登陆进来大概是这样的。

任务配置 yaml 文件

  • 我要同步test库到Doris
yml 复制代码
source:
  type: mysql
  hostname: 192.168.81.166
  port: 3306
  username: root
  password: root
  tables: test.\.*
  server-id: 5400-5404
  server-time-zone: Asia/Shanghai
  # 要同步表的中文描述
  include-comments.enabled: true
  # tinyint 不要转布尔值
  treat-tinyint1-as-boolean.enabled: false

sink:
  type: doris
  fenodes: 127.0.0.1:8030
  username: root
  password: ""
  table.create.properties.light_schema_change: true
  table.create.properties.replication_num: 1

pipeline:
  name: Sync MySQL Database to Doris
  parallelism: 1

提交任务

  • 执行以下命令提交任务
shell 复制代码
bash bin/flink-cdc.sh mysql-to-doris.yaml
  • Flink Web UI也会出现Job。

验证

  • 来到 Doris Web UI,可以看到数据已同步。

参考