历史版本46 :配置管道任务 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:
[helpvideo]5463[/helpvideo]

目录:

1.概述编辑

1.1 版本说明

FineDataLink 版本功能变动
4.0.5-
4.0.7
管道任务列表交界面优化
4.0.14支持逻辑删除和显示数据存储入库时间戳
4.0.16
  • 对于管道任务目标表,支持自动建表和选择「已存在表」两种方式

  • 字段支持设置映射方式

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

4.0.18
  • 支持 Oracle18c、19c 、Oracle RAC集群作为读取数据

  • 支持批量编辑目标数据库表名前后缀

  • 表名、字段名支持大小写转换,同时自动建表时表名、字段名支持大小写自动纠正

4.0.23对于无法设置物理主键的数据表,数据管道支持设置逻辑主键
4.0.26「管道控制」步骤中,新增「失败重试」设置,详情请参见 3.5 节说明

完成数据源、数据库环境、管道任务环境准备配置后,可创建管道任务,将多种类型的数据源输入输出链路进行组合,进行单表或整库数据的实时同步。

本文介绍如何创建数据实时同步任务,并在创建完成后查看任务运行情况。

2. 前提条件编辑

  • 数据源环境已准备完成:基于需要设置数据管道任务的数据源,授予数据源配置的账号在数据库进行相应操作的权限。详情请参见:数据源环境准备

  • 已完成数据源配置。需要在使用数据管道进行实时同步任务配置前,配置好需要同步的源端和目标端数据库,以便在同步任务配置过程中,通过选择数据源名称来控制同步任务,详情参见:配置数据连接

注:配置数据源时,某些数据库需要选择数据库模式,此时选择的数据库模式与数据管道任务中使用的数据库模式一致,在创建管道任务前请进行确认。

3. 操作步骤编辑

示例以 MySQL 数据同步至 oracle 数据库为例。

将 demo 数据库中的「S订单」、「hd_xiaoshou」、「hn_xiaoshou」、「hb_xiaoshou」数据表实时同步至 system 数据库中。

3.1 配置传输队列

配置传输队列,其实就是配置暂存来源库数据,方便目标库写入数据的「数据管道」,目前是通过 Kafka 实现的。

详情参见:配置传输队列

3.2 选择数据来源

首先选择需要数据同步的来源数据。

点击「数据管道>新建任务」,进入任务设置界面,选择来源数据库以及需要进行数据同步的数据表,当然也可以选择多个数据库下的数据表,默认读取方式为 Binlog,默认先对所有存量数据同步,然后持续同步新增变化,如下图所示:

将已经存在的「S订单」、「hd_xiaoshou」、「hn_xiaoshou」、「hb_xiaoshou」数据表选到「要同步的表」中,如下图所示:

3.3 选择数据去向

然后选定需要同步至的目标数据库位置。

3.3.1 选择目标数据库

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

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

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

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

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

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

接下来设置「源端删除数据」为「目标端执行逻辑删除」,然后勾选「同步时标记时间戳」,如下图所示:

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

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

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

如果选择「目标端执行逻辑删除」,则所有同步目标表将新增一个名称为_fdl_marked_deleted 的布尔型字段(字段默认为false),用于记录数据删除状态。

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

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

如下图所示:

  • 如果选择「目标端执行逻辑删除」,来源数据表删除了一条数据,此时同步至目标表,目标表不进行物理删除,而是将_fdl_marked_deleted 字段更新为 true 

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

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

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

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

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

3.3.3 设置同步源表结构变化

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

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

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

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

无变化,修改全部忽略。

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

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

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

3.4 设置表字段映射

点击下一步进入字段映射设置界面。可以设置目标表名称;对来源表同步至目标表的字段映射进行设置。

4.0.23 之前的版本目标数据库数据表物理主键需要不为空,以此保证写入数据的唯一性,同时这样能使目标端拥有索引、提升性能;

但是对于部分列存储的数据库,对设置物理主键有限制,导致无法设置物理主键,比如:当GP使用列存储时、GaussDB(基于GP)使用列存储等,对于无法新建物理主键的这些数据库,在4.0.23 版本支持使用逻辑主键替代来实现数据实时同步。

注1:逻辑主键需要设置为not null,以保证数据唯一性;

注2:在同步时,优先使用目标端已存在的物理主键,当目标表不存在物理主键时、再使用配置表内的逻辑主键;

当配置任务时,任务中配置了逻辑主键,而用户在某个时间点将目标端新增了物理主键,则在用户查看映射配置时展示目标端的物理主键、而非先前配置的逻辑主键。

目标端表类型判断目标表主键状态来源端表目标端表

自动建表

系统判断目标端数据库支持设置物理主键

不允许目标表物理主键为空

来源端物理主键不为空来源端物理主键填充至目标端物理主键
来源端物理主键为空用户可自行设置物理主键

系统判断目标端数据库不支持设置物理主键,仅能设置逻辑主键

不允许目标表逻辑主键为空

来源端物理主键不为空来源端物理主键自动填充至目标端逻辑主键
来源端物理主键为空用户可自行设置逻辑主键
已存在表

系统判断目标端数据库已经存在物理主键

不允许调整物理主键配置

-
默认使用已存在物理主键,不能修改

系统判断目标端数据库不存在物理主键

不允许目标端逻辑主键为空

来源端物理主键不为空来源端物理主键自动填充至目标端逻辑主键
来源端物理主键为空用户可自行设置逻辑主键

3.4.1 自动建表

  • 使用「自动建表」,在目标数据库新建管道任务目标表注:新建表不支持和数据库已存在表重命,同时不支持包含中文、特殊字符。

注:若用户想要使用语句在目标数据库中新建表,可以复制「建表语句」并在数据库执行。

同时可以调整字段映射方式以及目标数据库数据表的字段类型和字段顺序,如下图所示:

3.4.2 选择已存在表

  • 选择「已存在表」,可将管道任务数据实时同步至已有数据表,例如目标数据库中已存在s_order数据表,则可以直接选择该数据表,如下图所示:

注:若选择开启「目标端执行逻辑删除」和「同步时标记时间戳」,若目标表不存在新增字段_fdl_update_timestamp、_fdl_marked_deleted,系统将自动在运行任务时帮用户新建该字段。

同时可以调整字段映射方式,重新匹配目标数据库数据表的字段并修改字段顺序,如下图所示:

3.4.3 批量修改表名

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

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

3.5 设置管道控制

点击下一步进行数据管道的任务设置。

数据同步允许一定的容错,比如字段类型、长度不匹配、主键冲突等等问题,可以设置产生的 脏数据上限,达到上限则自动终止管道任务。

注1:限制最多10w行,且重启任务后,会重置阈值统计。

注2:若需要对产生的脏数据进行重新同步,详情参见:脏数据重跑

若管道任务由于当时的网络波动或者其他原因,运行中断,过段时间网络即可恢复正常,希望管道任务可自动重新运行。可在「失败重试」中设置重跑次数和间隔时间。

设置项
说明
重跑次数默认值为 3 次,最大值为 9 次
间隔时间默认值为 2 分钟,最大值为 59 分钟

「失败重试」逻辑说明

  • 若全量同步未完成,会从头全量同步;若全量同步已完成,会从断点开始;即全量阶段没有断点,只有增量阶段有断点同步。

  • 管道任务只要重新运行了,都是按第一次开始重新计算。

同时设置当任务异常时的通知,如下图所示:

23.png

3.6 保存任务

点击「保存」,即可保存任务,如下图所示:

只有在任务编辑的最后一步才可「保存」,此时在「任务列表」中即可看到设置完成的管道任务,如下图所示:

每一步都可「暂存」,暂存后在暂存列表即可显示暂存的任务,如下图所示:

3.7 执行任务

在任务列表界面,可以启动管道任务或者进入编辑界面进行任务修改设置,如下图所示:

此时启动任务,进入管道任务中,即可看到任务执行情况,如下图所示:

3.8 效果查看

此时即可在目标数据库 已经实现了数据表的实时同步,如下图所示:

4. 后续步骤编辑

任务配置完成后,可以在「任务运维>管道任务」中管理该任务,详情请参见:管道任务运维