SeaTunnel MySQL users表到Doris同步操作指南
概述
本指南专门针对 MySQL → Canal → Kafka → SeaTunnel → Doris 的完整数据同步链路,提供从Kafka消费数据并写入Doris的配置和操作步骤。
数据流转路径:
- MySQL
big_data.users表产生数据变更 - Canal捕获binlog变更并发送到Kafka
big_data_topic - SeaTunnel从Kafka消费数据并处理
- SeaTunnel将处理后的数据写入Doris
ods_db.users表
重点聚焦于SeaTunnel从Kafka消费到Doris写入的配置文件编写和实际操作。
环境信息
数据库环境
- 数据源:MySQL
big_data.users表(通过Canal捕获变更) - 中间层:Kafka
big_data_topic(Canal同步主题) - 目标库:Doris
ods_db.users表 - 同步工具:SeaTunnel 2.3.8
表结构映射
MySQL源表结构 (big_data.users)
CREATE TABLE `big_data`.`users` (
`id` int NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`email` varchar(100) DEFAULT NULL,
`age` int DEFAULT NULL,
`gender` enum('M','F','OTHER') DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`status` tinyint DEFAULT '1' COMMENT '1: active, 0: inactive',
`salary` decimal(10,2) DEFAULT NULL,
`city` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Doris目标表结构 (ods_db.users)
CREATE TABLE `ods_db`.`users` (
`id` int NOT NULL,
`username` varchar(200) NOT NULL,
`email` varchar(400) NULL,
`age` int NULL,
`gender` char(20) NULL,
`created_at` datetime NULL,
`updated_at` datetime NULL,
`status` tinyint NULL COMMENT "1: active, 0: inactive",
`salary` decimal(10,2) NULL,
`city` varchar(200) NULL
) ENGINE=OLAP
UNIQUE KEY(`id`)
DISTRIBUTED BY HASH(`id`) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"enable_unique_key_merge_on_write" = "true",
"light_schema_change" = "true"
);
基础环境
- Kafka集群:192.168.192.211:9092
- Doris集群:FE节点 192.168.192.141:9030
- SeaTunnel:2.3.8版本(已部署)
- 数据主题:big_data_topic(参考mysql-ha-canal-kafka-integration-guide.md)
端口规划
| 组件 | 端口 | 用途 |
|---|---|---|
| Kafka | 9092 | 消息服务端口 |
| Doris FE | 9030 | MySQL客户端连接端口 |
| Doris FE | 8030 | Web监控页面 |
| Doris BE | 8040 | BE监控页面 |