flinkCDC同步doris

概述

flinkCDC充分发挥了Debezium提供的能力

支持连接

flinkCDC与flink版本对照

特点:

  1. 支持读取数据库快照,即使发生故障也可只读取一次binlog。
  2. DataStream API:用户可以在一个作业中使用多个数据库和表上的更改,而无需部署Debezium和Kafka。
  3. Table/SQL API:用户可以使用SQL DDL创建CDC源来监视单个表上的更改

一、安装doris

安装doris

二、安装Flink

选择以下两种安装方式的一种
Flink Standalone-HA高可用集群模式
Dlink

三、Flink-doris

1、下载

下载 - Apache Doris


从阿里maven仓库中下载jar
仓库服务
搜索flink-doris

四、flinkCDC

1、下载

Central Repository: com/ververica/flink-sql-connector-mysql-cdc


将两个jar包放入172、166、168三台服务器的flink/lib下

重启flink集群
bash /opt/software/flink/flink-1.17.0/bin/stop-cluster.sh
bash /opt/software/flink/flink-1.17.0/bin/start-cluster.sh

五、数据

1、Mysql数据准备

CREATE DATABASE emp_1;
 USE emp_1;
CREATE TABLE employees_1 (
  emp_no      INT             NOT NULL,
  birth_date  DATE            NOT NULL,
  first_name  VARCHAR(14)     NOT NULL,
  last_name   VARCHAR(16)     NOT NULL,
  gender      ENUM ('M','F')  NOT NULL,    
  hire_date   DATE            NOT NULL,
  PRIMARY KEY (emp_no)
);

INSERT INTO `employees_1` VALUES (10001,'1953-09-02','Georgi','Facello','M','1986-06-26'),
(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21'),
(10003,'1959-12-03','Parto','Bamford','M','1986-08-28'),
(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01'),
(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12'),
(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02'),
(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10'),
(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15'),
(10009,'1952-04-19','Sumant','Peac','F','1985-02-18'),
(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24'),
(10011,'1953-11-07','Mary','Sluis','F','1990-01-22'),
(10012,'1960-10-04','Patricio','Bridgland','M','1992-12-18'),
(10013,'1963-06-07','Eberhardt','Terkki','M','1985-10-20'),
(10014,'1956-02-12','Berni','Genin','M','1987-03-11'),
(10015,'1959-
<think>嗯,用户这次的需求很明确,就是要了解如何使用Flink CDC将MySQL数据同步Doris。从用户引用的资料来看,ta已经做过一些功课,引用了三篇相关技术文档,说明ta可能是个开发者或者数据工程师,正在做实时数据同步的方案实施。 用户引用的材料中提到了几个关键点:Flink CDC配置文件、连接器依赖、任务提交验证流程。特别是引用[3]明确指出需要两个关键jar包(MySQL和Doris的连接器),这个细节很重要,因为实际部署时很多人会卡在依赖问题上。 考虑分步骤给用户说明完整的实现路径。首先要准备环境,包括Flink集群和连接器依赖。用户引用的版本是flink-cdc-3.1.0,所以需要保持版本一致。然后配置文件部分要考虑几个核心参数:源数据库信息、目标库信息、表映射关系。引用[1]提到的配置生成工具类可能是加分项,准备提醒用户关注。 关于执行步骤,准备特别强调几个易错点:1)连接器jar必须放在lib目录下;2)MySQL的binlog配置容易被忽略;3)Doris的建表语句要和MySQL保持兼容。用户看起来是实操型,所以考虑给出示例配置片段会更实用。 最后考虑补充监控验证环节,因为引用[3]专门提到任务验证。准备提醒用户通过Flink UI观察同步状态,以及如何在Doris端做数据比对。如果用户是首次实施,可能还需要提醒ta注意网络端口开通等基础事项。 </think>以下是基于 Flink CDC 实现 MySQL 到 Doris 实时同步的完整方法,结合引用内容和最佳实践整理: --- ### **一、核心步骤** 1. **环境准备** - Flink 集群(≥1.13,推荐 Flink 1.14+) - Doris 集群(≥1.0) - 下载依赖连接器(版本需匹配): ```bash flink-cdc-pipeline-connector-mysql-3.1.0.jar # MySQL 连接器 [^3] flink-cdc-pipeline-connector-doris-3.1.0.jar # Doris 连接器 [^3] ``` 将 JAR 包放入 Flink 的 `lib/` 目录 2. **配置同步任务** 创建配置文件 `mysql-to-doris.yaml`(示例): ```yaml source: type: mysql host: 127.0.0.1 port: 3306 username: root password: 123456 database: test_db table: orders server-id: 5400-5500 # MySQL CDC 必需 [^2] sink: type: doris fenodes: 127.0.0.1:8030 username: doris_root password: doris_pass database: test_doris table: orders_sink sink.batch.size: 1000 # 批次写入优化 ``` 3. **提交任务** 通过 Flink CLI 提交任务: ```bash ./bin/flink run \ -c com.ververica.cdc.connectors.pipeline.PipelineLauncher \ lib/flink-cdc-pipeline-3.1.0.jar \ --config /path/to/mysql-to-doris.yaml ``` --- ### **二、关键技术点** 1. **MySQL 配置要求** - 开启 Binlog(`my.cnf` 中配置): ```ini [mysqld] log_bin = mysql-bin server_id = 1 binlog_format = ROW ``` - 用户需有 `REPLICATION SLAVE, REPLICATION CLIENT` 权限 [^2] 2. **Doris 表结构** 需提前创建与 MySQL 结构兼容的表(支持自动映射,但类型需兼容): ```sql CREATE TABLE test_doris.orders_sink ( id BIGINT, amount DECIMAL(10,2), order_time DATETIME ) ENGINE=OLAP DUPLICATE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 8; ``` 3. **容错机制** - 启用 Flink Checkpoint(配置文件追加): ```yaml execution: checkpointing: interval: 10s timeout: 5m ``` - 支持断点续传和 Exactly-Once 语义 [^2] --- ### **三、验证与监控** 1. **任务状态检查** - 访问 Flink Web UI(默认 `http://<jobmanager>:8081`) - 查看 `Checkpoints` 是否持续生成 2. **数据验证** ```sql -- Doris 端查询数据 SELECT COUNT(*) FROM test_doris.orders_sink; -- 对比 MySQL 源表数据量 ``` 3. **日志排查** - 定位 `taskmanager.log` 中的 `DorisSink` 写入日志 - 监控 `Doris FE/BE` 的导入日志(`fe.log` / `be.INFO`) --- ### **四、常见问题处理** | 问题现象 | 解决方案 | |---------------------------|-----------------------------------| | 连接器加载失败 | 检查 JAR 版本与 Flink 版本兼容性 [^3] | | Doris 写入超时 | 调整 `sink.batch.size` 减少批次量 | | MySQL Binlog 读取中断 | 确认 `server-id` 范围未冲突 [^2] | | 字段类型映射错误 | Doris 表需显式定义数据类型 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值