反馈已提交

网络繁忙

配置管道任务-选择数据去向

  • 文档创建者:Roxy
  • 历史版本:16
  • 最近更新:Wendy123456 于 2024-04-17
  • 1. 概述

    1.1 版本

    FineDataLink 版本
    功能变动
    4.0.5-
    4.1.1Oracle、GP、SQLServer 数据源作为源表,支持无主键同步,详情参见本文 3.5 节
    4.1.3StarRocks 数据源作为写入端支持批量删除数据,大大提升同步效率
    4.1.7.2目标表选择已存在表且已存在表包含「_fdl_marked_deleted」字段时,支持使用源端逻辑删除功能
    目标表为已存在表&已存在表包含_fdl_update_timestamp字段,支持「同步时标记时间戳」功能


    点击展开更多
    FineDataLink 版本功能变动
    4.0.6支持 Mysql 作为写入数据源
    4.0.7支持 SQL Server 作为写入数据源
    4.0.8支持 GaussDB 200 作为写入数据源
    4.0.9支持 Oracle 、PostgreSQL 作为写入数据源
    4.0.14支持逻辑删除和显示数据存储入库时间戳
    4.0.15支持Greenplum、Greenplum(并行装载)作为写入数据源
    4.0.17

    支持Mysql 作为读取和写入数据源,设置同步源表结构变化

    4.0.24支持 StarRocks 作为写入数据源
    4.0.28

    管道任务支持写入至 TiDB 数据库

    管道任务支持写入至 ClickHouse

    管道任务支持写入至Amazon Redshift

    4.0.29

    Greenplum、Greenplum(并行装载)作为目标端同步优化:当数据通过COPY装载失败时,重新使用JDBC装载,重新装载再失败时,识别为脏数据,并正常记录,以保证数据正常

    1.2 功能简介

    「选择去向」步骤中,需要设置实时同步数据要存放的位置、目标表是否追加时间戳字段(数据变化时间)、来源端表结构变化,目标端是否跟随变化等。如下图所示:

    1705569830538919.png

    2. 注意事项

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

    4.0.29 及之后版本,Greenplum、Greenplum(并行装载)作为目标端同步优化:当数据通过COPY装载失败时,重新使用JDBC装载,重新装载再失败时,识别为脏数据,并正常记录,以保证数据正常。

    3. 操作步骤

    24.png

    3.1 数据源&库

    设置实时同步数据要存放的位置。管道任务支持的目标端请参见:数据管道支持的数据源类型

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

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

    3.2 源端删除数据

    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)版本数据库,不支持「目标端执行逻辑删除」。

    3.3 同步时标记时间戳

    勾选「同步时标记时间戳」按钮,所有目标表将新增一个名称为_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 的数据,如下图所示:

    1705633234931129.png

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

    3.png

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

    3.4 同步源表结构变化

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

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

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

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

    无变化,修改全部忽略。

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

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

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

    3.5 设置无主键同步

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

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

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

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

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

    4.1.1 及之后版本,Oracle、GP、SQLServer 数据源作为源表,支持无主键同步勾选「无主键同步」,如下图所示:

    4.png

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

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

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

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

    4. 后续步骤

    附件列表


    主题: 数据管道
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持