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 支持 支持 支持 支持
Oracle OGG 11,12,19 支持 不支持 支持 不支持
Kafka 1.11+ 支持 支持 - -
DB2 - 支持 不支持 支持 支持

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

同步任务配置


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

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

    • 查找库表
      查询表提供了2种方式,库表选择和正则匹配,可以同时支持选择一至多张表
    • 订阅类型
      目前支持摄取“插入”、“更新”以及“删除“操作的数据
    • 增量读取方式 默认选择从各类日志方式进行增量读取,选择“间隔轮询”方式读取时,支持用户对间隔轮询周期、数据量进行设置从而控制采集速度; CDC 任务开发指南 - 图3

      说明:在选择间隔轮询增量读取方式并配置完目标端后,需要配置轮询字段和间隔轮询起始位点。当源端配置中的传输起始位点选择最新或全量初始化时,间隔轮询起始位点无需手动配置。当源端配置为指定值时,需对每张源端表配置起始指定值。 CDC 任务开发指南 - 图4
    • 传输起始位置
      默认从作业启动的位置进行变更捕获,支持指定时间戳或者起始日志文件进行变更捕获。
      支持全量初始化,全量初始化会先全量读取表数据,读取完成后从自动切换任务,开始从任务启动时间记录的点位进行变更数据捕获

    • 流量限制
      默认不限制,如果源端库存在业务压力,可以配置适当限制,缓解源库压力
    • 读取并行度
      除mysql 及kafka 数据源外,其余数据源目前均为单并行度读取数据(包括全量初始化过程) CDC 任务开发指南 - 图5
  3. 配置sink
    点击sink页面右上角下拉框选择相应的数据源,以mysql 为例。 在此之前必须提前在数据源管理处引入数据源,kafka数据源引入后,可以在数据库创建数仓表,引入时直接选择topic 对应的数仓表即可。详情请参考数仓管理

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

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

  6. 保存并启动


OGG配置

若企业已有OGG(Oracle GoldenGate)产品,平台支持基于OGG实现对应实时采集链路。此方案要求业务方主动将OGG采集任务启动并写入到目标Kafka Topic,Flink CDC 将会从 Kafka中以OGG标准格式对数据内容进行解析,并转写至目标端。

在CDC任务中,选择Source端为Oracle时,用户选择增量读取方式为OGG

此时需要选择一个已经注册在项目中的消息中间件(目前仅支持Kafka)作为数据来源。手动输入Topic名称时,当输入已存在的Topic名称时任务可正常执行;若输入的Topic不存在,系统将自动创建Topic并执行任务。Topic输入名称对大小写敏感。 CDC 任务开发指南 - 图8