历史版本9 :配置管道任務-選擇資料去向 返回文檔
編輯時間: 內容長度:图片数:目录数: 修改原因:

目錄:

1. 概述编辑

1.1 版本

FineDataLink 版本
功能变动
4.0.5-
4.1.1Oracle、GP、SQLServer 数据源作为源表,支持无主键同步,详情参见本文 3.4 节
4.1.3StarRocks 数据源作为写入端支持批量删除数据,大大提升同步效率

选择管道任务数据来源后,需要选定需要同步至的目标数据库的具体位置。

2. 注意事项编辑

数据管道使用 GreenPlum 或者 Greenplum(并行装载)作为目标表时,都是用的 COPY 装载模式,需要在目标数据库先创建 fdl_temp 模式用来存放临时表,因此需要给该数据连接账号赋予在对应数据库创建模式的权限。

3. 操作步骤编辑

3.1 选择目标数据库

点击下一步进入「选择去向」界面,选定目标数据库,如下图所示:

  • 目标数据表数据结构(表名和字段名)和来源表一致:首次数据同步会清空目标数据表数据,然后全量同步数据,此后增量同步。

  • 目标数据库没有和来源表一样的数据表,则直接在目标数据库新建数据表。

注::GreenPlum 和 Greenplum(并行装载)作为目标端时,需要数据库用户具有CREATE SCHEMA和CREATE TABLE权限。数据装载时,将新建名为fdl_temp的模式用于存放临时表。

3.2 设置时间戳和逻辑删除标识字段

注:开启逻辑删除时,4.0.23 版本进行数据初始化全表更新,对目标端清表重写,大大提升了数据同步效率。

接下来设置「源端删除数据」为「目标端执行逻辑删除」,如下图所示:

  • 如果选择「目标端执行物理删除」,则来源表删除的数据同步至目标表中会直接删除;

  • 如果选择「目标端执行逻辑删除」,则所有同步目标表将新增一个名称为_fdl_marked_deleted 的布尔型字段(字段默认为false),用于记录数据删除状态。来源数据表删除了一条数据,此时同步至目标表,目标表不进行物理删除,而是将_fdl_marked_deleted 字段更新为 true 

注:如果后续有和目标表表中已存在主键相同的数据重新写入,不插入新数据,而是更新该数据,并将之前已经标记为删除的数据标记为未删除。

注1:GaussDB数据库及PostgreSQL9.4以下(含9.4)版本数据库,不支持「目标端执行逻辑删除」。

注2:勾选「目标端执行逻辑删除」和「同步时标记时间戳」后默认作用在该管道任务的所有数据表,不支持仅设置管道任务中的一张表。

注3:时间戳同步在数据完全同步后执行。若数据量较大,数据同步过程中时间戳可能暂时为空。

勾选「同步时标记时间戳」,所有目标表将新增一个名称为_fdl_update_timestamp 的长整型字段,以毫秒级时间戳的形式记录数据在数据库中实际新增和更新的时间(数据库所在时间)。

点击下一步进入表字段映射阶段,如下图所示:

勾选了「同步时标记时间戳」,来源表中的数据进行了新增和更新,则该字段会写入「数据入库时间戳」和「数据更新时间戳」。

例如来源数据库数据表「S订单」中删除了一条订单ID 为10257的数据,如下图所示:

在目标数据表中,订单ID 为10257的数据不会被删除,而是将对应「_fdl_marked_deleted」字段修改为 true,同时「_fdl_update_timestamp」字段时间戳修改为删除字段的时间戳,如下图所示:

注:「目标端执行逻辑删除」、「同步时标记时间戳」功能仅在管道任务新建和暂存状态时可进行配置,运行中、暂停状态的任务不允许调整配置。

3.3 设置同步源表结构变化

在使用管道任务进行数据实时同步过程中,源端表结构可能因业务调整等原因发生变动,如增删表、增删字段、修改字段名称、修改字段类型等,此时希望在目标侧的表可以自动同步这些源端的调整。

详情参见:同步源表结构变化

若未开启「同步源表结构变化」,则若来源数据结构发生了变化,管道任务执行方式如下所示:

操作
「关闭」同步源表结构变化字段映射配置变化目标表结构变化目标表数据变化
删除表继续同步其他表。无变化。

无变化,修改全部忽略。

被删除表在后续同步中将没有新数据写入。
重命名表原名称对应的表删除,继续同步其他表。原名称表在后续同步中将没有新数据写入。
删除字段继续同步其他字段。被删除字段在后续同步中传NULL值。
新增字段忽略新增字段,继续同步其他字段。

无变化,仍然按照原来的字段配置情况进行同步。

修改字段名称识别为原名称表字段删除,同删除字段逻辑。被重命名字段在后续同步中传NULL值。
修改字段类型忽略类型同步,如果类型不匹配,作为脏数据处理。无变化,仍然按照原来的字段配置情况进行同步。

3.4 设置无主键同步

若某些数据源的业务表没有主键,用户也不知道这些表作为源表该标记什么字段作为逻辑主键。此时对无主键的表,无需标记逻辑主键,也可以实现数据的实时同步。

勾选「无主键同步」,如下图所示:

需要注意的是,勾选了无主键同步后,在管道进行数据同步时,会自动使用目标表所有可用字段作为逻辑主键并配置到任务中,并使用逻辑主键作为更新和删除时的比对字段。

即将目标表所有能进行比对的字段都用来比对,但是不区分源端对完全相同数据中部分数据的操作。

源端在完全相同的多条数据中改一条,目标端相同数据全改。

对于目标端的主键设置和同步逻辑请参见:目标端主键设置逻辑

若该步骤设置了同步源表结构变化,则:

  • 字段新增:与其他 DDL 相同,目标字段新增,新增的这个字段不标记物理主键或逻辑主键。

  • 字段删除:如果删除字段在目标侧对应是逻辑主键,任务将报错终止。

                          如果删除字段在目标侧对应是物理主键,由于此时数据同步将一直违反主键非空的规则,故将任务报错中止

4. 后续操作编辑