CDC 任务介绍


CDC 任务是Easystream用于从不同的数据源库摄取数据变更作业的任务类型。目前支持页面向导模式配置,底层整合NDC订阅能力基于Flink CDC 2.0版本研发,支持多种异构数据源的变更数据捕获,同时也支持历史数据的全量导入。

支持的数据源


Database Version read write 多表同步 全量初始化
MySQL 5.7, 8.0.x 支持 支持 支持 支持
PostgreSQL 9.6, 10, 11, 12 支持 不支持 支持 支持
SQL Server 2012+ 支持 支持 支持 支持
Oracle 11, 12, 19 支持 支持 支持 支持
Kafka 1.11+ 支持 支持 - -

目前CDC任务仅支持选择Flink 1.13引擎。

同步任务配置


  1. 创建作业
    登入Easystream 平台,点击首页“新建任务” 任务类型选择CDC,引擎版本选择Flink1.13
    如下图,创建一个CDC 任务
    create_job

  2. 配置source
    点击source页面下拉框选择相应的数据源,以mysql 为例。 在此之前必须提前在数据源管理处引入数据源,kafka数据源引入后,可以在数据库创建数仓表,引入时直接选择topic 对应的数仓表即可。详情请参考数仓管理
    choose_datasource

    • 查找库表
      查询表提供了2种方式,库表选择和正则匹配,可以同时支持选择一至多张表
    • 订阅类型
      目前支持摄取“插入”、“更新”以及“删除“操作的数据
    • 传输起始位置
      默认从作业启动的位置进行变更捕获,支持指定时间戳或者起始日志文件进行变更捕获
      支持全量初始化,全量初始化会先全量读取表数据,读取完成后从自动切换任务,开始从任务启动时间记录的点位进行变更数据捕获
    • 流量限制
      默认不限制,如果源端库存在业务压力,可以配置适当限制,缓解源库压力
    • 读取并行度
      除mysql 及kafka 数据源外,其余数据源目前均为单并行度读取数据(包括全量初始化过程) CDC 任务开发指南 - 图3
  3. 配置sink
    点击sink页面右上角下拉框选择相应的数据源,以mysql 为例。 在此之前必须提前在数据源管理处引入数据源,kafka数据源引入后,可以在数据库创建数仓表,引入时直接选择topic 对应的数仓表即可。详情请参考数仓管理

    • 目标数据源
      选择需要导入的sql server 数据源名称
    • 导入方式
      支持单表和多表导入,选择单表导入只需要选择相应的库表即可,多表导入,需要为源端的每一张表选择对应的目标端库表,或者通过“批量设置”进行配置,目前批量设置只支持导入到同一个库表中,如果是分库分表,在批量应用后,还需要手动修改对应库表。
    • 写入方式
      支持“insert”和“upsert”更新写入,注意更新写入必须配置主键,否则相当于“insert”
    • 异常处理
      为了防止脏数据导致任务失败,提供了忽略错误记录的选项,可以根据实际需求进行配置
    • 批量写入
      对数据进行分批插入,建议开启,同时配置批量的写入规则
    • 写入并行度
      当前所有sink 端数据源默认均支持多并行度写入,可以按需求调整作业运行配置的并行数量 CDC 任务开发指南 - 图4
  4. 字段映射
    CDC 作业会根据sink 和souce 的配置生成对应的字段映射关系。默认按照字段名称映射,如果源端与目标表字段名称不一致,源端字段默认为不导入。如果不符合按照字段名称映射的需求,需要手动调整字段映射关系,否则可能出现字段未同步情况。 如果有需求对输出字段进行调整,可以在源端表字段进行手动指定。新增了不导入字段以及自定义表达式,支持在同步过程中对数据进行转换。

    • 不导入
      选择不导入,该字段内容不会写入结果表,结果表字段输出为字段默认值或null
    • 自定义表达式
      CDC 作业增加了自定义表达式功能,可以对字段使用函数进行数据转换。目前支持Flink 的标量(一进一出)内置函数,暂时不支持自定义函数。配置方式选择自定义表达式,书写函数即可
      如图: 自定义表达式
  5. 运行配置检查
    CDC 作业实际运行的是Flink 作业,可以按需对任务资源进行调整配置,以达到期望的性能要求。 作业资源配置可参考Flink 作业推荐配置

  6. 保存并启动