完成数据源、网络、资源的准备配置后,您可创建实时同步节点,同步数据至Kafka。本文为您介绍如何创建数据实时同步任务,并在创建完成后查看任务运行情况。
前提条件
- 已完成数据源配置。您需要在数据集成同步任务配置前,配置好您需要同步的源端和目标端数据库,以便在同步任务配置过程中,可通过选择数据源名称来控制同步任务的读取和写入数据库。实时同步支持的数据源及其配置详情请参见实时同步支持的数据源。
- 已购买合适规格的独享数据集成资源组。详情请参见:新增和使用独享数据集成资源组。
- 独享数据集成资源组与数据源网络已打通。详情请参见:配置资源组与网络连通。
- 数据源环境已准备完成:您可以基于您需要进行的同步配置,在同步任务执行前,授予数据源配置的账号在数据库进行相应操作的权限。详情请参见:数据库环境准备概述。
使用限制
- 实时数据同步任务仅支持使用独享数据集成资源组。
- 实时同步节点目前仅支持同步MySQL、Oracle和PolarDB数据源至Kafka。
注意事项
- 对于源端同步表有主键的场景,同步时会使用主键值作为kafka记录的key,确保同主键的变更有序写入kafka的同一分区。
- 对于源端同步表无主键的场景,如果选择了支持无主键表同步选项,则同步时kafka记录的key为空。如果要确保表的变更有序写入kafka,则选择写入的kafka topic必须是单分区。如果选择了自定义同步主键,则同步时使用其他非主键的一个或几个字段的联合,代替主键作为kafka记录的key。
- 如果在kafka集群发生响应异常的情况下,仍要确保有主键表同主键的变更有序写入kafka的同一分区,则需要在配置kafka数据源时,在扩展参数表单中加入如下配置。
{"max.in.flight.requests.per.connection":1,"buffer.memory": 100554432}
。
重要 添加配置后同步性能会大幅下降,需要在性能和严格保序可靠性之间做好权衡。
- 实时同步写入kafka的消息总体格式、同步任务心跳消息格式及源端更改数据对应的消息格式,详情请参见:附录:消息格式。
创建实时同步任务
- 创建整库实时同步节点。
- 配置资源组。
- 设置同步来源和规则。
- 在数据来源区域,选择类型、数据源及编码格式。
说明 仅支持选择MySQL、Oracle和PolarDB数据源。
- 选择要同步的表。
在
选择同步的源表区域,为您展示所选数据源下所有的表,您可以在
源端库表区域选中需要同步的整库全表或部分表,并单击

图标,将其移动至
已选库表。
- 在择同步的源表区域搜索框下方,勾选使用上述输入文字作为正则表达式自动加表复选框,仅MySQL支持通过正则表达自动加表。
勾选后可以在源端库表的
库过滤搜索框和
表过滤搜索框中填写正则表达式,实时同步运行过程中会自动识别源端数据库binlog中数据库名和表名符合正则表达式的变更,识别到这类变更后按照下面设置的
表名到Topic的映射规则计算源端变更应该写入的
kafka topic名称,如果kafka topic尚未建立,则会自动创建对应topic后将变更写入。

库名及表名支持的正则规则如下所示。
正则表达式 | 描述 |
---|
. | 匹配除换行符以外的所有字符 |
x? | 匹配0次或一次x字符串 |
x* | 匹配0次或多次x字符串,但匹配可能的最少次数 |
x+ | 匹配1次或多次x字符串,但匹配可能的最少次数 |
.* | 匹配0次或多次的任何字符 |
.+ | 匹配1次或多次的任何字符 |
{m} | 匹配刚好是m个的指定字符串 |
{m,n} | 匹配在m个以上n个以下的指定字符串 |
{m,} | 匹配m个以上的指定字符串 |
[] | 匹配符合 [] 内的字符 |
[^] | 匹配不符合 [] 内的字符 |
\d | 匹配一个数字的字符,和 [0-9] 语法一样 |
\d+ | 匹配多个数字字符串,和 [0-9]+ 语法一样 |
\D | 非数字,其他同 \d |
\D+ | 非数字,其他同 \d+ |
\w | 英文字母或数字的字符串,和 [a-zA-Z0-9_] 语法一样 |
\w+ | 和 [a-zA-Z0-9_]+ 语法一样 |
\W | 非英文字母或数字的字符串,和 [^a-zA-Z0-9_] 语法一样 |
\W+ | 和 [^a-zA-Z0-9_]+ 语法一样 |
\s | 空格,和 [\n\t\r\f] 语法一样 |
\s+ | 和 [\n\t\r\f]+ 一样 |
\S | 非空格,和 [^\n\t\r\f] 语法一样 |
\S+ | 和 [^\n\t\r\f]+ 语法一样 |
\b | 匹配以英文字母,数字为边界的字符串 |
\B | 匹配不以英文字母,数值为边界的字符串 |
(a|b|c) | 匹配符合a字符或是b字符或是c字符的字符串,注意或表达式必须用括号包围,否则将导致运行时错误 |
\ | 对"$^[].?+|\*{}"具有特殊含义的正则规则字符转义 |
- 在设置表名到Topic的映射规则区域,单击添加规则,选择相应的规则进行添加。
同步时默认将源端数据表写入Kafka同名Topic中,同时,您可以通过添加映射规则定义最终写入目的端的Topic名称。实现将多张表数据写入到同一个Topic中,或统一将源端某固定前缀的表名在写入目标Topic时更新为其他前缀。支持通过正则表达式转换写入的Topic名,还支持使用内置变量拼接目标Topic名。配置逻辑请参见:
设置来源和同步规则。
- 设置目标Topic。
- 设置基本信息。
功能 | 描述 |
---|
支持源表无主键同步 | 定义当源端为无主键表时,是否允许同步至Kafka。当勾选支持源表无主键同步后,源表没有主键,也可以向下游同步,但是同步数据时kafka记录的key将使用空值,只有当写入的kafka topic是单分区,才能确保变更有序写入。 |
发送心跳记录 | 定义是否发送报警信息至Kafka。勾选发送心跳记录后,实时同步任务将每隔5秒往Kafka中写入一条带有当前时间信息的记录。这样即使源端没有读取到新数据,Kafka中最新数据的时间信息也会持续更新,您可以根据Kafka中读取到的最新数据的时间判断实时同步的进度。心跳记录具体格式请参考附录:消息格式。 |
源端update变更对应一条Kafka记录 | 定义当源端进行update操作时,是否同步update源表数据。- 勾选后,源端关系型数据库一条记录的一次update变更,变更前和变更后的数据将保存在一条Kafka记录中。
- 未勾选,源端关系型数据库一条记录的一次update变更,将保存在两条Kafka记录中,分别保存变更前和变更后的数据。
|
- 刷新源表与目标表映射。
单击
刷新源表和Kafka Topic映射将根据您在步骤3配置的
设置表名到Topic的映射规则来生成目标Topic,若步骤3未配置映射规则,将默认写入与源表同名的目标Topic,若目标端不存在该同名Topic,将默认新建。同时,您可以修改Topic建立方式、为目标Topic在源有表字段基础上增加附加字段。
说明 目标表名将跟据您在设置表名到Topic的映射规则阶段配置的表名转换规则自动转换。
功能 | 描述 |
---|
为非主键表选择主键 | - 如果来源库有主键,则同步数据时会使用该主键值作为kafka记录的key,确保同主键的变更有序写入kafka的同一分区。
- 如果来源库没有主键:
- 当勾选了支持源表无主键同步,则无主键的表可以正常同步。此时写入kafka记录的key将使用空值,只有当写入的kafka topic是单分区,才能确保变更有序写入,此外,您还可以选择单击
图标自定义主键,即使用其他非主键的一个或几个字段的联合,代替主键作为kafka记录的key。 - 当在设置目标Topic页面未勾选支持源表无主键同步,则无主键的表同步时会出现异常,您需要在同步任务中删除无主键的表或者选择单击
图标自定义主键才能继续执行同步任务。
|
选择Topic建立方式 | 支持自动建Topic和使用已有Topic: - 当Topic建立方式选择使用已有Topic时,您可以在Kafka Topic列的下拉列表中选择需要使用的Topic名称。
- 当Topic建立方式选择自动建Topic时,显示自动创建的Kafka Topic名称。您可以单击Topic名称,查看和修改建Topic名称和注释。
|
编辑附加字段 | 单击操作列的编辑附加字段,可以为目标表在源端字段的基础上增加字段并为字段赋值。支持手动赋值常量与变量。
说明 仅在Topic建立方式为自动建Topic时,可以使用此功能。 |
- 单击下一步。
如果您前一步中目标数据源使用的Topic建立方式为自动建Topic,则需要在弹出的自动建表对话框,单击开始建表,批量创建目标Kafka Topic。
- 运行资源设置。
- 在运行资源设置页面,配置各项参数。
参数 | 描述 |
---|
来源端读取支持最大连接数 | 读取端的最大连接数,即来源端数据库的JDBC连接数。请根据数据库资源的实际情况合理配置。默认为15。 |
目标端写入并发数 | 数据同步任务内,可以从来源表并行读取或写入数据至目标端的最大线程数。最大并发数为32。请根据您的资源组大小和目标端实际规模合理设置。 |
- 单击完成配置。
提交并发布实时同步任务
提交并发布节点任务。- 单击工具栏中的
图标,保存节点。 - 单击工具栏中的
图标,提交节点任务。 - 在提交新版本对话框中,输入变更描述。
- 单击确定。
如果您使用的是标准模式的工作空间,任务提交成功后,需要将任务发布至生产环境进行发布。请单击顶部菜单栏左侧的
任务发布。具体操作请参见
发布任务。
后续步骤
- 任务配置完成后,您可以在面板启动并管理该任务,详情请参见:实时同步任务运维。
- 同时,执行同步任务会将源端数据库读取的数据,以JSON格式写入到Kafka topic中,您可以通过附录:消息格式获取写入Kafka的消息的状态及变更等信息。