完成数据源、网络、资源的准备配置后,您可创建实时同步节点,同步数据至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。请根据您的资源组大小和目标端实际规模合理设置。 - 单击完成配置。
- 在运行资源设置页面,配置各项参数。
提交并发布实时同步任务
提交并发布节点任务。
单击工具栏中的图标,保存节点。
单击工具栏中的图标,提交节点任务。
在提交新版本对话框中,输入变更描述。
单击确定。
如果您使用的是标准模式的工作空间,任务提交成功后,需要将任务发布至生产环境进行发布。请单击顶部菜单栏左侧的任务发布。具体操作请参见发布任务。