1. 概述
1.1 版本
FineDataLink 版本 | 功能变动 |
---|---|
4.0.17 | 支持Mysql 设置同步源表结构变化 |
4.1.8.2 | 数据管道支持写入神通数据库,该数据库支持DDL |
4.1.9.3 |
详情参见:通用配置-字段映射规则 |
4.1.10.1 | StarRocks、Doris作为目标端时,支持 DDL |
4.1.11.2 | YMatrix 作为目标端时,支持 DDL |
4.1.11.3 | PolarDB PostgreSQL 作为目标端时,支持 DDL |
查看历史版本更新 | ||||||||||||||||
|
1.2 应用场景
在使用管道任务进行数据实时同步过程中,来源端结构可能因业务调整等原因发生变动,如增删表、增删字段、修改字段名称、修改字段类型等,此时,用户希望目标端可以自动同步这些来源端的调整,不需要人为地进行数据表的调整。
1.3 功能说明
数据管道任务支持同步源库DDL功能,开启相关选项后,在源库发生DDL(删除表、新增字段、删除字段、修改字段名称、修改字段类型(长度修改 & 兼容类型修改))时,管道任务可以自动同步这些来源端变化至目标端,不需人为介入修改目标表结构。
2. 支持范围
管道任务的来源端和目标端,在下表中都为支持,才能正常使用 DDL 功能。
例如:管道任务来源端为 MySQL,目标端为 SQL Server ,支持使用 DDL 功能;来源端为 MySQL,目标端为 DB2 ,不支持使用 DDL 功能。
数据源 | 作为来源端 | 作为目标端 | 备注 |
---|---|---|---|
MySQL | 支持 | 支持 | |
Oracle | 支持 | 支持 | |
SQL Server | 支持 | 支持 | 由于 SQL Server 数据库本身特性,目前 DDL 同步不支持自动同步源端新增字段,若需要使用 DDL 进行新增字段的处理,请参见 数据管道中SQL Server DDL操作说明 |
GaussDB 200 | 不支持 | 支持 | |
PostgreSQL | 支持 | 支持 | |
Greenplum 包括并行装载 | 不支持 | 支持 | |
kafka | 不支持 | 不支持 (目标端暂不支持kafka) | |
TiDB | 不支持 (来源端暂不支持TiDB) | 支持 | |
Amazon Redshift | 不支持 (来源端暂不支持Amazon Redshift) | 支持 | |
DB2 | 支持 | 不支持 | |
SeaboxMPP | 不支持 (来源端暂不支持SeaboxMPP) | 支持 | |
SAP HANA | 不支持 | 不支持 | SAP HANA 数据源作为管道任务来源端时,程序无法感知到源表结构变化,因此需要用户手动有计划地执行表结构变更等操作,才能完成同步。详情请参见:数据管道中SAP HANA DDL操作说明 |
神通数据库 | 不支持 | 支持 | |
StarRocks | 不支持 | 支持 | 源端修改列类型,StarRocks 和 Doris 存在限制,详情请参见:StarRocks数据源使用说明、Doris数据源使用说明 |
Doris | 不支持 | 支持 | |
YMatrix | 不支持 | 支持 | |
PolarDB PostgreSQL | 不支持 | 支持 |
3. 操作步骤
注:此步骤为非 SQL Server 数据库的 DDL 操作,若需要使用 SQL Server 进行 DDL 则需要对数据库进行操作,详情参见 数据管道中SQL Server DDL操作说明
示例以 MySQL 数据同步至 MySQL 数据库为例。
将 demo1 数据库中的「出入库信息」、「DEMO_PRODUCT」、「CUSTOMER」数据表实时同步至 demotest 数据库中。
CUSTOMER.xls、DEMO_PRODUCT.xls、出入库信息.xls
3.1 配置数据管道任务
3.1.1 准备工作
在 FDL 中配置管道任务前,需要准备一个独立部署的 FDL 工程、工程注册管道相关功能点、准备数据源、准备数据库环境、部署Kafka、配置传输队列、分配管道任务权限(选做)。
详情请参见:数据管道使用说明
3.1.2 选择来源
1)在有权限的文件夹下,新建管道任务。
2)在「选择来源」步骤中,选择数据源为 MySQL,同步类型选择「存量+增量同步」,同步对象选择需要同步的数据表。如下图所示:
3)点击「下一步」按钮。
3.1.3 数据去向
1)设置数据去向的数据源为 MySQL ,数据库为 demotest ,设置目标端执行物理删除,开启「同步时标记时间戳」按钮、「同步源表结构变化」按钮。如下图所示:
2)点击「下一步」按钮。
3.1.4 表字段映射
1)目标表选择自动建表,若目标数据库中已有同名表,需要修改表名;设置表字段的映射关系、为目标表设置主键。如下图所示:
2)点击「下一步」按钮。
3.1.5 管道控制
1)本文示例,该步骤默认即可,点击「保存并启动」按钮,如下图所示:
注:管道控制详细介绍请参见:配置管道任务-管道控制
2)管道任务启动后,界面如下图所示:
3.2 来源端数据变化
1)「出入库信息」表中新增了「状态」字段、修改「种类」字段为「商品种类」、删除了「期初库存」字段。如下图所示:
2)新增一条数据,如下图所示:
3.3 目标端同步结果
查看「出入库信息」目标端数据「出入库信息_1」:
新增字段:新增字段同步后续新增的数据(状态字段同步新增数据)。
删除字段:被删除字段在后续同步中传NULL值(期初库存字段同步NULL 值)。
修改字段名称:原名称字段在后续同步中传NULL值,同步新名称字段的后续新增数据(种类字段修改为商品种类后,种类字段停止同步,商品种类字段继续同步新增数据)。
同时在「表字段映射」中会对修改进行标记,如下图所示:
开启「同步源表结构变化」后,数据结构变化实时同步说明:
操作 | 「开启」同步源表结构变化 | 字段映射配置变化 | 目标表结构变化 | 目标表数据变化 |
---|---|---|---|---|
删除表 | 继续同步其他表。 | 标记被删除的同步表。 该表对应源表已被删除,该表将不会继续同步。 | 无变化。 | 被删除表在后续同步中将没有新数据写入。 |
重命名表 | 继续同步其他表。 注:PostgreSQL 作为来源端,不支持重命名表。 | 标记原名称表为删除。 该表对应源表已被删除,该表将不会继续同步。 | 无变化。 | 原名称表在后续同步中将没有新数据写入。 |
删除字段 | 继续同步其他字段。 | 标记被删除的字段。 对应源字段已被删除,该字段在后续同步中将传NULL值。 | 无变化。 | 被删除字段在后续同步中传NULL值。 对于 SQLServer 数据源作为来源端,在检测到字段删除的时刻(每次查询都会比对表结构检测),FDL 就会当做字段已经删除。 此时 CDC 表中可能还存在一部分数据带有这个字段,此时该字段的值将不会同步到目标表中。 |
新增字段 | 自动同步新增字段。 同步失败时,记录日志且发送通知,任务正常运行。 对于 SQLServer 数据源作为来源端,目前DDL同步不支持自动同步源端新增字段,若需要进行新增字段 DDL ,需要对数据库进行操作,详情参见 数据管道中SQL Server DDL操作说明 | 自动在来源端和目标端添加新的映射关系。 | 同步新增字段。 新增的这个字段不标记物理主键或逻辑主键 | 同步新增字段的后续新增数据。 |
修改字段名称 | 原名称字段删除,新名称字段新增。 对于 SQLServer 、DB2数据源作为来源端,不支持修改字段名称。 | 标记原名称字段删除。 自动在来源端和目标端添加新名称字段的映射关系。 | 同步新增新名称字段。 | 原名称字段在后续同步中传NULL值。 同步新名称字段的后续新增数据。 |
修改字段类型或者长度 | 自动同步修改字段类型,修改不成功时,记录日志,任务继续运行。修改时的字段映射逻辑和自动建表时一致。 | 来源表与目标表字段配置自动修改字段类型。 | 同步修改字段类型。 | 历史数据与后续新增数据变化为对应类型数据。 |
源表字段注释的变化(增删改) | 同步到目标表中 新增字段的注释不会同步过去 | - | - | - |
3.4 任务管理
「运行日志」界面会出现 DDL 的更改日志,如下图所示: