1. 概述
1.1 版本
| FineDataLink 版本 | 功能变动 |
|---|---|
| 4.0.5 | - |
| 4.2.7.3 | 支持 GaussDB 100/GaussDB T 数据作为写入端 |
| 4.2.11.3 | 实时管道任务配置界面更新,本文介绍「高级设置」设置项 |
| 点击展开更多 | |||||||||||||||||||||||||||||||||||||||
|
1.2 功能简介
「高级设置」设置项中,需要设置实时同步时:
来源端删除数据,目标端也实际删除数据,还是标记删除数据。
是否记录数据在数据库中实际新增和更新的时间。
来源端表结构变化,目标端是否跟随变化。

2. 功能介绍
2.1 源端删除数据
1)两种方式说明如下:
目标端执行物理删除:来源表删除数据,目标表中也会直接删除。
目标端执行逻辑删除:来源表删除数据,目标表将新增一个名称为_fdl_marked_deleted的布尔型字段(字段默认为false),用于记录数据删除状态。来源数据表删除了一条数据,此时同步至目标表,目标表不进行物理删除,而是将_fdl_marked_deleted字段更新为 true 。
4.1.7.2 及之后版本,目标表选择已存在表且已存在表包含「_fdl_marked_deleted」字段时,支持使用源端逻辑删除功能;4.1.7.2 及之后版本,若未开启逻辑删除&目标表为已存在表&目标表包含「_fdl_marked_deleted」字段时,该字段后续将传空值。
若目标端执行「逻辑删除」,说明如下:
| 目标表 | 逻辑删除功能说明 |
|---|---|
| 自动建表 | 目标表映射增加「_fdl_marked_deleted」字段,同步时标记逻辑删除 |
| 已存在表:目标表不包含_fdl_marked_deleted字段 | 同步类型选择存量+增量:目标表映射增加「_fdl_marked_deleted」字段,同步时标记逻辑删除 同步类型选择仅增量同步:目标表映射增加「_fdl_marked_deleted」字段,同步时将历史数据「_fdl_marked_deleted」字段值改为 false,并为新数据标记逻辑删除 |
| 已存在表:目标表包含_fdl_marked_deleted字段 | 同步类型选择存量+增量:直接使用「_fdl_marked_deleted」字段,同步时标记逻辑删除 同步类型选择仅增量同步:直接使用「_fdl_marked_deleted」字段,同步时不处理历史数据逻辑删除字段,为新数据标记逻辑删除 |
2)需注意:
开启逻辑删除时,4.0.23 版本进行数据初始化全表更新,对目标端清表重写,大大提升了数据同步效率。
如果后续有和目标表表中已存在主键相同的数据重新写入,不插入新数据,而是更新该数据,并将之前已经标记为删除的数据标记为未删除。
GaussDB 数据库及 PostgreSQL9.4 以下(含9.4)版本数据库,不支持「目标端执行逻辑删除」。
2.2 同步时标记时间戳
勾选「同步时标记时间戳」按钮,所有目标表将新增一个名称为_fdl_update_timestamp的长整型字段,以毫秒级时间戳的形式记录数据在数据库中实际新增和更新的时间(数据库所在时间)。
需注意:
勾选「目标端执行逻辑删除」和「同步时标记时间戳」后默认作用在该管道任务的所有数据表,不支持仅设置管道任务中的一张表。
时间戳同步在数据完全同步后执行。若数据量较大,数据同步过程中时间戳可能暂时为空。
若开启「同步时标记时间戳」,说明如下:
| 目标表 | 说明 | |
|---|---|---|
| 自动建表 | 目标表映射增加「_fdl_update_timestamp」字段,同步时传入时间戳 | |
| 已存在表 - 目标表没有「_fdl_update_timestamp」字段 | 同步类型选择存量+增量:目标表映射增加「_fdl_update_timestamp」字段,同步时传入时间戳 同步类型选择仅增量同步:目标表映射增加「_fdl_update_timestamp」字段,同步时补齐历史数据时间戳,并为新数据传入时间戳 | |
已存在表 - 目标表包含「_fdl_update_timestamp」字段 4.1.7.2 及之后版本支持 | 同步类型选择存量+增量:直接使用「_fdl_update_timestamp」字段,同步时传入时间戳 同步类型选择仅增量同步:直接使用「_fdl_update_timestamp」字段,同步时不处理历史数据时间戳,为新数据传入时间戳 | |
若未开启「同步时标记时间戳」&目标表包含「_fdl_update_timestamp」字段,该字段后续将传空值。
示例:
管道任务中勾选了「同步时标记时间戳」、选择目标端执行逻辑删除,如果来源数据库数据表「S订单」中删除了一条订单 ID 为 10257 的数据,如下图所示:

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

注:「目标端执行逻辑删除」、「同步时标记时间戳」功能仅在管道任务新建和暂存状态时可进行配置,运行中、暂停状态的任务不允许调整配置。
2.3 同步源表结构变化
在使用管道任务进行数据实时同步过程中,源端表结构可能因业务调整等原因发生变动,如增删表、增删字段、修改字段名称、修改字段类型等,此时希望在目标侧的表可以自动同步这些源端的调整。
详情参见:同步源表结构变化
注:选择数据来源 步骤中配置的分组表,不支持「同步源表结构变化」功能。
若未开启「同步源表结构变化」,则若来源数据结构发生了变化,管道任务执行方式如下所示:
| 操作 | 「关闭」同步源表结构变化 | 字段映射配置变化 | 目标表结构变化 | 目标表数据变化 |
|---|---|---|---|---|
| 删除表 | 继续同步其他表。 | 无变化。 | 无变化,修改全部忽略。 | 被删除表在后续同步中将没有新数据写入。 |
| 重命名表 | 原名称对应的表删除,继续同步其他表。 | 原名称表在后续同步中将没有新数据写入。 | ||
| 删除字段 | 继续同步其他字段。 | 被删除字段在后续同步中传NULL值。 | ||
| 新增字段 | 忽略新增字段,继续同步其他字段。 | 无变化,仍然按照原来的字段配置情况进行同步。 | ||
| 修改字段名称 | 识别为原名称表字段删除,同删除字段逻辑。 | 被重命名字段在后续同步中传NULL值。 | ||
| 修改字段类型 | 忽略类型同步,如果类型不匹配,作为脏数据处理。 | 无变化,仍然按照原来的字段配置情况进行同步。 |
