通过 Debezium 捕获 Oracle 的 CDC(Change Data Capture)日志,经 Kafka 缓冲,再通过 Flink 或直接调用 Doris 的 Stream Load 接口写入 Doris。
1、Oracle CDC 捕获:
Debezium(基于 LogMiner 或 XStream)解析 Oracle 的 Redo Log/Archive Log,实时捕获 INSERT/UPDATE/DELETE 变更,生成包含前后镜像的 JSON 数据(如op: u表示更新,before/after字段记录变更内容)。
2、消息缓冲:
将 Debezium 输出的变更数据发送到 Kafka 主题(按表分主题,便于后续消费),解决生产端和消费端的速度不匹配问题。
3、数据写入 Doris:
Flink 消费:Flink 读取 Kafka 数据,做简单转换(如过滤、字段映射)后,通过 Doris 的 Flink Connector(flink-connector-doris)写入,支持批量提交(默认 1000 条 / 批)和 Exactly-Once 语义。
直接 Stream Load:若无需复杂转换,可通过 Kafka Connect 的 Doris Sink 直接调用 Doris 的 Stream Load 接口(HTTP 协议),适合简单场景。
优势
1、实时性强:端到端延迟可控制在秒级(取决于 Kafka 和 Flink 的配置)。
2、高可靠:Kafka 持久化数据,Flink 支持故障恢复,确保数据不丢失。
3、适配复杂场景:支持数据清洗、多表关联、字段转换等 ETL 操作。
注意事项
1、Oracle 需开启归档日志(ARCHIVELOG),并配置 Debezium 的捕获权限(如LOGMINING权限)。
2、大表初始化可先通过 DataX 全量同步,再通过 CDC 同步增量,避免 Debezium 全量扫描耗时过长。
https://www.bilibili.com/video/BV1WZ4y1m7QM/?spm_id_from=333.337.search-card.all.click&vd_source=04d80f475277388fb106b530402116b6
https://www.bilibili.com/cheese/play/ss6294?query_from=0&search_id=16748265835398194874&search_query=Debezium&csource=common_hpsearch_null_null&spm_id_from=333.337.search-card.all.click