CDC 任务开发指南
更新时间: 2022-02-22 16:32:56
阅读 1432
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+ | 支持 | 支持 | - | - |
支持的Flink 引擎版本
目前CDC任务仅支持选择Flink 1.13引擎
同步任务配置
创建作业
登入Easystream 平台,点击首页“新建任务” 任务类型选择CDC,引擎版本选择Flink1.13
如下图,创建一个CDC 任务
配置source
点击source页面下拉框选择相应的数据源,以mysql 为例。 在此之前必须提前在数据源管理处引入数据源,kafka数据源引入后,可以在数据库创建数仓表,引入时直接选择topic 对应的数仓表即可。详情请参考数仓管理
- 查找库表
查询表提供了2种方式,库表选择和正则匹配,可以同时支持选择一至多张表 - 订阅类型
目前支持摄取“插入”、“更新”以及“删除“操作的数据 - 传输起始位置
默认从作业启动的位置进行变更捕获,支持指定时间戳或者起始日志文件进行变更捕获
支持全量初始化,全量初始化会先全量读取表数据,读取完成后从自动切换任务,开始从任务启动时间记录的点位进行变更数据捕获 - 流量限制
默认不限制,如果源端库存在业务压力,可以配置适当限制,缓解源库压力 - 读取并行度
除mysql 及kafka 数据源外,其余数据源目前均为单并行度读取数据(包括全量初始化过程)
- 查找库表
配置sink
点击sink页面右上角下拉框选择相应的数据源,以mysql 为例。 在此之前必须提前在数据源管理处引入数据源,kafka数据源引入后,可以在数据库创建数仓表,引入时直接选择topic 对应的数仓表即可。详情请参考数仓管理- 目标数据源
选择需要导入的sql server 数据源名称 - 导入方式
支持单表和多表导入,选择单表导入只需要选择相应的库表即可,多表导入,需要为源端的每一张表选择对应的目标端库表,或者通过“批量设置”进行配置,目前批量设置只支持导入到同一个库表中,如果是分库分表,在批量应用后,还需要手动修改对应库表。 - 写入方式
支持“insert”和“upsert”更新写入,注意更新写入必须配置主键,否则相当于“insert” - 异常处理
为了防止脏数据导致任务失败,提供了忽略错误记录的选项,可以根据实际需求进行配置 - 批量写入
对数据进行分批插入,建议开启,同时配置批量的写入规则 - 写入并行度
当前所有sink 端数据源默认均支持多并行度写入,可以按需求调整作业运行配置的并行数量
- 目标数据源
字段映射
CDC 作业会根据sink 和souce 的配置生成对应的字段映射关系。默认按照字段名称映射,如果源端与目标表字段名称不一致,源端字段默认为不导入。如果不符合按照字段名称映射的需求,需要手动调整字段映射关系,否则可能出现字段未同步情况。 如果有需求对输出字段进行调整,可以在源端表字段进行手动指定。新增了不导入字段以及自定义表达式,支持在同步过程中对数据进行转换。- 不导入
选择不导入,该字段内容不会写入结果表,结果表字段输出为字段默认值或null - 自定义表达式
CDC 作业增加了自定义表达式功能,可以对字段使用函数进行数据转换。目前支持Flink 的标量(一进一出)内置函数,暂时不支持自定义函数。配置方式选择自定义表达式,书写函数即可
如图:
- 不导入
运行配置检查
CDC 作业实际运行的是Flink 作业,可以按需对任务资源进行调整配置,以达到期望的性能要求。 作业资源配置可参考Flink 作业推荐配置保存并启动
文档反馈
以上内容对您是否有帮助?