1. 概述
1.1 版本
| FineDataLink 版本 | 功能变动 |
|---|---|
| 4.0.5 | - |
| 4.1.11.5 | 自动建表时从源表获取到表描述后自动填充到目标端,详情参见本文 2.7 节 |
| 4.2.11.3 | 实时管道任务配置界面更新,本文介绍「同步配置」设置项 |
| 4.2.11.4 | 来源端选择 Oracle、读取方式选择 LogMiner、且同步方式为仅增量同步时,增量同步起点支持选择「自定义时间」 |
| 查看历史版本更新 | ||||||||||||||||||||||||||||
|
1.2 功能简介
「同步配置」步骤中,需要选择要同步的来源表、设置同步方式(仅增量同步、存量+增量同步)、同时建立「来源端-目标端」的字段对应关系。如下图所示:

2. 设置同步对象、同步方式
2.1 选择同步对象
可选择要实时同步的数据表、数据库。
2.1.1 普通表
场景:用户希望一张源表的数据实时同步到另外一张目标表中。
点击「添加表」按钮,选择待同步的表即可。如下图所示:

2.1.2 快速选表
「快速选表」按钮可批量选择多表,帮助用户更快选择来源表。如下图所示:

输入表名时,需注意:
每行一个表名。
可直接复制excel中的列数据粘贴匹配。
若所选表已经添加了,快速选表无法匹配。
2.1.3 分组表
场景:设备数据采集场景中,源端有相同格式的多个库的数据,需要实时同步到数仓的一张表中使用。
1)用户可将多张结构相同的源表数据同步到一张目标表中,取所有源表字段的交集作为分组表的字段。如下图所示:
注1:支持生成多个分组表。
注2:取交集时,只需要字段名一致,如果多张来源表的字段类型不一样,向上取能兼容所有来源字段的类型作为分组表中该字段的类型。

情况一:此时会校验源表字段交集的情况,若子表字段完全交集,生成分组表后,分组表名称为用户勾选的第一个子表的名称。
情况二:若没有交集字段,则提示:所选子表无字段交集,无法生成分组表,建议取消操作并排查子表结构。如下图所示:
该情况下无法生成分组表。

情况三:若存在部分交集字段,则提示:存在交集外的子表字段,这些字段后续无法同步,建议取消操作并排查子表结构。生成分组表后,分组表名称为用户勾选的第一个子表的名称。如下图所示:
该情况下,生成的分组表中只包含交集字段,可正常实时同步。

2)生成分组表后,如下图所示:

点击「删除」按钮,可删除分组表。
点击「编辑」按钮,可重命名分组表(多个分组表间不能重名);可新增、删除子表。如下图所示:

2.2 同步类型
注:对于历史数据量很大的情况,历史数据往往要通过特定的高速装载方式或者分多次多批导入。管道任务仅使用在在全量同步完成后,接续开始增量同步,此时用户可以使用仅增量同步类型。

2.2.1 存量+增量同步
先对所有存量数据同步,然后持续同步新增变化。
任务初次运行时,将完整运行全量同步+增量同步;任务中断或暂停后,再次运行时,如果所有表的全量同步都已完成,则将从增量的断点开始,直接运行增量同步。
2.2.2 仅增量同步
| 增量同步起点 | 说明 |
|---|---|
| 选择「任务启动时间」作为起点时,将以任务启动时间作为解析开始时间 对于使用目标数据源推荐方式导入历史数据时,没有筛选条件的历史全量数据导入,可以设置增量同步起点为任务执行开始时间 | 1)任务仅包含增量阶段,任务初次运行时,将按照配置的起始时间开始进行增量同步。 2)支持数据源:MySQL、Oracle、SQLServer、PostgreSQL 3)配置后生效时间点精度为:yyyy-MM-dd HH:mm:ss.000,精确到毫秒,时区以数据库的时区为准。 注1:对于PostgreSQL 数据源,仅支持任务启动时间作为起点 注2:SAP HANA 仅支持任务启动时间作为起点 |
选择「自定义时间」作为起点时,可指定增量起始时间,默认为空,必填,允许指定到秒。 可选时间的起点是检测用户数据库日志最早的时间。 对于使用目标数据源推荐方式导入历史数据时,基于时间筛选的历史数据导入,可以设置增量同步起点为最早的筛选时间 |
3. 字段映射
3.1 目标表建立方式
目标表名称中不能包含中文、特殊字符。用户可新建表/选择已存在表作为目标表。
3.1.1 自动建表
1)使用「自动建表」,在目标数据库新建实时管道任务目标表。
注:新建表不支持和数据库已存在表重名;其中 4.1.6.1 之前版本表名支持包含英文、数字、下划线,4.1.6.1 及之后版本,表名支持包含英文、中文、数字、下划线

2)「手动建表」按钮说明:
场景一:若用户想要使用语句在目标数据库中新建表,可以复制「手动建表」中的语句并在数据库执行。
场景二:点击「手动建表」按钮后,用户可修改字段名、字段类型,以及去定义各种表的特性。具体请参见:手动建表
3)不同数据库对功能的支持说明:
若数据去向选择了「Doris」数据源,则设置去向端表时,需要选择表类型,详情参见:Doris 数据源使用说明、StarRocks数据源使用说明
若数据去向选择了「StarRocks」数据源,则设置去向端表时,需要选择表类型,详情参见:Doris 数据源使用说明、StarRocks数据源使用说明
3.1.2 选择已存在表
选择「已存在表」,可将实时管道任务数据实时同步至已有数据表。如下图所示:

需注意:
1)配置管道任务-选择数据去向 步骤中,开启了「目标端执行逻辑删除」和「同步时标记时间戳」,若目标表不存在新增字段_fdl_update_timestamp、_fdl_marked_deleted,系统将自动在运行任务时帮用户新建该字段。
2)4.0.30 -4.1.5.2 版本,当「选择来源」选择「仅增量同步」时,去向表默认选择「已存在表」,会自动执行一次同名匹配,且用户仍可以手动切换为「自动建表」;4.1.5.2 及之后版本,当「选择来源」选择「仅增量同步」时,去向表默认选择「自动建表」。
3.2 设置主键

| 问题 | 解答 |
|---|---|
| 什么场景下支持自定义逻辑主键呢 | 目标端数据源为 Oracle/GP/SQLServer/YMatrix 数据库时,支持不设置物理主键,在「主键映射」处设置逻辑主键 实时同步时,使用逻辑主键作为更新和删除时的比对字段 |
| 为什么要设置逻辑主键 | 某些数据源的业务表没有主键,用户也不知道这些表作为来源表该标记什么字段作为逻辑主键。此时对无主键的表,无需标记逻辑主键,也可以实现数据的实时同步 |
| 主键值为Null时支持更新/删除数据按钮的作用 | 勾选后,逻辑主键值为null,也能正常更新删除 |
| 只设置逻辑主键效果 |
若该步骤设置了同步源表结构变化,则:
如果删除字段在目标侧对应是物理主键,由于此时数据同步将一直违反主键非空的规则,故将任务报错中止 |
注:在同步时,优先使用目标端已存在的物理主键,当目标表不存在物理主键时、再使用配置表内的逻辑主键;
当配置任务时,任务中配置了逻辑主键,而用户在某个时间点将目标端新增了物理主键,则在用户查看映射配置时展示目标端的物理主键、而非先前配置的逻辑主键。
| 目标端表类型 | 判断目标表主键状态 | 来源端表 | 目标端表 | ||
|---|---|---|---|---|---|
自动建表 | 目标端数据库支持设置物理主键 | 来源端有物理主键 | 来源端物理主键自动配置至目标端物理主键
| ||
| 来源端没有物理主键 | 用户可自行设置物理主键 | 用户配置了物理主键 | 1)自动建表时,将用户指定的字段设为目标表物理主键 2)同步时,使用目标表物理主键作为更新和删除时的比对字段 | ||
| 用户没有配置物理主键,配置了逻辑主键 | 1)自动建表时,不会设物理主键 2)数据同步时,使用目标表所有可用字段作为逻辑主键并配置到任务中,使用逻辑主键作为更新和删除时的比对字段 | ||||
目标端数据库不支持设置物理主键,仅能设置逻辑主键 | 来源端有物理主键 | 来源端物理主键自动配置至目标端逻辑主键 | 用户配置了逻辑主键 对于不支持物理主键的数据源,勾选逻辑主键的时候,同时勾选NotNULL,但是用户可以手动取消勾选。 | 自动建表时,不会设物理主键 同步时,使用配置的逻辑主键作为更新和删除时的比对字段 | |
| 来源端没有物理主键 | 用户必须配置逻辑主键 | 自动建表时,不会设物理主键 同步时,使用逻辑主键作为更新和删除时的比对字段 | |||
| 已存在表 | 目标端数据库已经存在物理主键 不允许调整物理主键配置 | - | 默认使用已存在物理主键,不能修改 同步时,使用目标表物理主键作为更新和删除时的比对字段 | ||
目标端数据库不存在物理主键 不允许目标端逻辑主键为空 | 来源端有物理主键 | 来源端物理主键自动配置至目标端逻辑主键 | |||
| 来源端没有物理主键 | 用户必须设置逻辑主键 | 用户配置了基于逻辑主键同步 | 同步时,使用配置的逻辑主键作为更新和删除时的比对字段 | ||
3.3 设置分区键
管道任务自动建表支持指定分区(PostgreSQL、Greenplum、Gauss200、YMatrix)和分布(Greenplum、Gauss200、YMatrix)逻辑,详情参见:读取、创建、写入分区表
3.4 设置字段映射
可以调整字段映射方式、目标数据库数据表的字段类型、字段名称、字段顺序;还可以取消映射、筛选已映射、未映射字段。如下图所示:

3.5 批量操作
1)若需要给同步的数据表批量增加前缀或者后缀,可以点击右上角的「批量修改」,选中需要修改的表,然后增加前后缀即可,如下图所示:

被修改的表名增加了 ods_ 前缀,如下图所示:

2)可批量修改表建立方式。如下图所示:
注:仅支持对未同步过的表进行批量修改。

3)支持批量删除来源表。如下图所示:

4)支持批量修改同步方式。详情请参见本文 2.2 节内容。
3.6 筛选按钮介绍
1)点击数据库展示侧的筛选标志,即可对设置需要进行同步的来源数据表进行筛选,筛选条件为:目标表配置是否有异常、目标表是否有主键、表建立方式。

2)点击字段映射上方的筛选标志,可筛选出是否已映射的字段、是否有异常的字段。如下图所示:
有异常字段示例:例如目标表字段名称为空、类型为空等。

3.7 表描述、字段注释
可将来源表的表备注、字段备注同步到目标表中;若目标表为自动建表,可自定义表描述、字段注释。
1)来源表的字段映射中支持读取来源表的字段注释、表描述。如下图所示:

2)目标表选择自动建表时,可自定义字段注释、表描述。如下图所示:

自动建表时从源表获取到表描述后自动填充到目标端,如下图所示:

3)目标表选择已存在表时,显示表描述、字段注释。如下图所示:

需注意:
1)不支持表描述的数据库:ClickHouse、Hive、Impala、TRANSWARP INCEPTOR、Informix、MaxCompute、SQLite、StarRocks。
2)不支持字段备注的数据库:Hive、Impala、TRANSWARP INCEPTOR、Informix、MaxCompute、SQLite、StarRocks。
3)表描述、字段注释后续变化:
若未开启DDL:
只在第一次同步时,同步字段的注释,之后源表字段注释的变化不会同步到目标表。
若开启DDL:
源表字段注释的变化(增删改)会同步到目标表中;新增字段的注释也会同步过去。
不论是否开启DDL,只在第一次同步时,同步表描述,后续源表的表描述发生变化,不会同步到目标表。
3.8 分组表和普通表不同
本文的 2.1-2.7 节内容同样适用于分组表,本节介绍分组表和普通表的不同之处。

1)分组表中,如果多张来源表的字段类型不一样,向上取能兼容所有来源字段的类型作为分组表中该字段的类型。
2)分组表的目标表中,将自动新增「_fdl_src_schema_table」字段,标识来源的数据表,采用「schema.table_name」的形式记录源表模式名和表名。
3)分组表的「物理主键」和「Not Null」配置说明:仅在所有分组内的子表都有 NOTNULL 配置或主键配置时,分组表采用相同配置,否则不配置。
4. 写入方式
1)3.2 节设置的物理主键,会自动显示在「主键映射」处。如下图所示:

2)主键映射处支持设置逻辑主键,详细说明请参见本文 3.2 节内容。
