使用Apache Flink CDC实现MySQL到Doris的实时数据同步

使用Apache Flink CDC实现MySQL到Doris的实时数据同步

flink-cdc Flink CDC is a streaming data integration tool flink-cdc 项目地址: https://gitcode.com/gh_mirrors/flin/flink-cdc

概述

本文将详细介绍如何使用Apache Flink CDC(变更数据捕获)工具实现MySQL数据库到Doris的实时数据同步。Flink CDC是一个基于Apache Flink构建的变更数据捕获框架,能够高效捕获数据库变更并实时同步到目标系统。

环境准备

基础环境要求

  1. 操作系统:Linux或MacOS
  2. 已安装Docker环境
  3. 网络通畅,能够下载所需组件

Flink集群部署

  1. 下载并解压Flink 1.18.0版本
  2. 配置Flink检查点间隔为3秒(在flink-conf.yaml中添加):
    execution.checkpointing.interval: 3000
    
  3. 启动Flink集群:
    ./bin/start-cluster.sh
    

Docker容器准备

使用docker-compose.yml文件定义并启动以下服务:

  1. MySQL容器:包含示例数据库app_db
  2. Doris容器:作为数据同步目标

启动命令:

docker-compose up -d

数据初始化

MySQL数据准备

  1. 创建app_db数据库
  2. 创建orders、products、shipments三张表
  3. 插入初始测试数据

示例SQL:

CREATE DATABASE app_db;
USE app_db;

CREATE TABLE `orders` (
  `id` INT NOT NULL,
  `price` DECIMAL(10,2) NOT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `orders` VALUES (1, 4.00), (2, 100.00);

Doris数据库准备

  1. 通过Doris Web UI(http://localhost:8030/)创建app_db数据库
  2. 注意:Doris连接器目前不支持自动创建数据库,需要预先创建

Flink CDC任务配置

组件下载与配置

  1. 下载Flink CDC 3.1.0二进制包并解压
  2. 下载并放置以下连接器到lib目录:
    • MySQL pipeline connector
    • Doris pipeline connector
    • MySQL Connector Java驱动

任务配置文件

创建mysql-to-doris.yaml配置文件,关键配置说明:

source:
  type: mysql
  hostname: localhost
  port: 3306
  username: root
  password: 123456
  tables: app_db.\.*  # 使用正则匹配同步所有表
  server-id: 5400-5404

sink:
  type: doris
  fenodes: 127.0.0.1:8030
  username: root
  table.create.properties.replication_num: 1  # 单节点部署设置为1

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

任务提交与验证

提交任务命令:

bash bin/flink-cdc.sh mysql-to-doris.yaml

验证步骤:

  1. 在Flink Web UI查看任务状态
  2. 在Doris Web UI验证数据同步情况

高级功能演示

实时同步验证

  1. 在MySQL中执行数据变更操作:
    • 插入新记录
    • 添加新列
    • 更新记录
    • 删除记录
  2. 实时观察Doris中对应表的变化

路由功能配置

通过route配置实现表名映射和分库分表合并:

route:
  - source-table: app_db.orders
    sink-table: ods_db.ods_orders
  - source-table: app_db.order\.*
    sink-table: ods_db.ods_orders  # 合并多个分表

注意事项

  1. Doris内存映射配置要求:
    sysctl -w vm.max_map_count=2000000
    
  2. 表结构变更同步需要确保Doris端兼容
  3. 分表合并时需注意主键冲突问题

环境清理

  1. 停止Docker容器:
    docker-compose down
    
  2. 停止Flink集群:
    ./bin/stop-cluster.sh
    

总结

本文详细介绍了使用Apache Flink CDC实现MySQL到Doris实时数据同步的全过程。通过这种方案,企业可以构建高效、实时的数据管道,满足数据分析、报表等场景对实时数据的需求。Flink CDC提供的全量+增量同步、schema变更同步、分表合并等功能,大大简化了传统ETL流程的复杂度。

flink-cdc Flink CDC is a streaming data integration tool flink-cdc 项目地址: https://gitcode.com/gh_mirrors/flin/flink-cdc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邬筱杉Lewis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值