Tapdata 技术博客
Tapdata 技术博客

Oracle→Doris 实时数据采集(CDC)手册:初始化到增量切换

2025-09-24 11:23 TapData

适用对象:DBA、数据工程师、架构师

目标:以最小源负载把 Oracle 的增量变化稳定送达 Doris,用于实时明细与近实时聚合。

成功标准(上线前对齐)

  • 端到端延迟与稳定窗口(如“分钟级”)

  • 一致性目标(事务顺序保真、关键表差异率阈值)

  • 回退策略(初始化重复执行/增量回放的可行路径)

1. 前置检查(Oracle & Doris)

Oracle

  • ARCHIVELOG 已开启,日志保留满足回放窗口。

  • 建议启用 Supplemental Logging(至少主键/关键列),便于下游合并。

  • 具备读取 redo/归档日志的必要权限(如 LogMiner/等价能力)。

  • 网络连通性与带宽可达预期。

Doris

  • 规划数据库/表/分区(日期/业务键),选定 Unique Key / Primary Key 或明细模型。

  • 确定写入方式:

    • Stream Load(直写,简洁)

    • Routine Load(经消息中间件)(解耦与扩展性更好)

  • 预置目标表结构及索引/分桶策略,准备数据类型映射。

Oracle(CDC)→(可选 Kafka)→ Doris(Stream/Routine Load)

2. 连接配置(源与目标)

源:Oracle CDC

  • 连接:Host/Port/SID or ServiceName,字符集确认。

  • 采集:选择 日志解析 CDC;限定库/表白名单;设置位点(SCN)策略。

  • 初始:启用 Online Snapshot;速率/并发节流,避开业务高峰。

  • 过滤/映射:忽略无关表、历史大表按条件快照;保留事务顺序与主键。

目标:Doris

  • 方式一(Stream Load):FE 地址、鉴权、批量大小、重试/幂等键。

  • 方式二(Routine Load):Topic/订阅、并发分配、批量/超时、失败重试。

  • 合并语义:建议使用 Unique/Primary Key 表实现 upsert;如为明细模型,需在上游完成去重或携带序列列实现“最后写入生效”。

3. 初始装载(全量)

1. 建表/类型映射(示例):

  • NUMBER(p,s) → DECIMAL(p,s) 或 BIGINT(按实际范围)

  • DATE/TIMESTAMP → DATETIME

  • VARCHAR2/NVARCHAR2 → STRING

  • CLOB → STRING(必要时分流对象存储)

  • BLOB → 外挂存储或编码后入库

2. 一致性快照:以 SCN/时间点为基准提取全量,记录快照 SCN

3. 装载策略:分表/分区并行,限速,失败重试。

4. 快照校验:关键表行数/聚合指标抽样比对。

4. 增量切换(CDC 上线)

1. 增量起点:以快照时记录的 SCN 为起点读取日志,确保“不重不漏”。

2. 顺序与幂等:按主键/分片键维持顺序;下游以主键/版本列实现幂等 upsert。

3. 节流与背压:遇下游压力,按链路/表/域分流限速,优先保障关键表。

4. 灰度:短窗口“双写比对”→达到一致性阈值→收敛旧链路。

5. Schema 变更(演进)

  • 新增列:Doris 先 ALTER TABLE ADD COLUMN,默认值/NULL 兼容,增量携带新列后自动就绪。

  • 重命名/类型变更:建立映射/别名层,过渡双写;必要时做字段级转换并标注失败兜底。

  • 主键调整:采用影子键过渡,回填完成后切换实际主键。

最佳实践:在 CDC 平台内开启“模式公告”,以事件通知 IVM/OLAP/应用方。

6. 对账与监控

  • 指标:窗口延迟、位点落后、错误率、重放次数、批量拒绝数。

  • 对账

    • 快照后首次对账:核心表行数/关键聚合;

    • 滚动抽样:按主键随机抽样比对字段;

    • 切换窗口:双写一致性阈值达标后收敛。

  • 告警:阈值触发(延迟/落后/差异率),联动回放或节流策略。

借助 TapData:快、更稳、可复用

  • 省心的日志解析 CDC:低源负载、保留事务顺序与位点,可追平/回放,避免对线上写入与查询的干扰。

  • 初始化 + 增量自动衔接:快照与 SCN 对齐,自动完成断点续传与多下游独立位点管理。

  • 直连 Doris 的适配:内置 Stream Load / Routine Load 接入与参数控制,支持 Unique/Primary Key upsert 与批量/并发调优。

  • 演进与对账内建:新增/重命名/类型变更的向后兼容策略,暴露窗口延迟、位点落后、差异率等可观测指标。

  • 安全与跨网:最小权限、字段级脱敏与访问审计,支持跨网传输与分区部署策略。

FAQ

Q1:必须开启 Supplemental Logging 吗?

A:强烈建议。缺少关键列会影响下游 upsert 与对账。

Q2:全量与增量如何对齐?

A:以快照 SCN 为界;增量从该 SCN 开始消费,避免重复与缺失。

Q3:Doris 用什么表模型?

A:实时 upsert 场景优先 Unique/Primary Key;需要累加/汇总可用聚合模型或在 IVM/下游实现。

Q4:BLOB/CLOB 如何处理?

A:按业务需求选择外部存储或转码;大对象尽量不走高频增量链路。

Q5:跨网如何传输?

A:按安全策略加密传输,必要时经消息中间件或边缘节点汇聚后入库。

>>> 预约演示

>>> 申请试用

推荐阅读