You need to enable JavaScript to run this app.
文档中心
大数据研发治理套件

大数据研发治理套件

复制全文
下载 pdf
解决方案
实时同步 DDL 能力说明与使用约束
复制全文
下载 pdf
实时同步 DDL 能力说明与使用约束

本文介绍实时同步任务中,源端表结构发生变化后,DataSail 能否同步修改目标表结构,以及各类变更的使用约束。

1 产品能力与生效条件

DataSail 支持在实时同步过程中,将源表的建表、新增字段、删除字段、字段重命名和字段类型变更同步到目标表。各项能力的支持范围取决于同步模式、源端和目标端组合,详见 2 支持的链路与 DDL 类型。
一项变更生效,需要同时满足以下条件:

  1. 变更表位于任务同步范围内,源端已完成所需的 DDL 采集配置。
  2. 当前同步模式及源端、目标端组合支持该类变更,字段选择、映射和转换规则与变更后的字段一致。
  3. 对应 DDL 策略允许执行。
  4. 目标表满足相应的表模型、字段依赖和类型兼容要求,目标端账号具备执行权限。

2 支持的链路与 DDL 类型

下表说明不同同步模式下支持的表结构变更。其中,“有限支持”表示需满足相应类型兼容性等约束;“不支持”表示该同步模式不支持相应的自动变更。具体可选操作以任务配置页面为准。

2.1 实时整库同步

将源端多张表同步到目标端对应表时,支持的表结构变更如下:

源端 → 目标端

建表

新增字段

删除字段

字段重命名

字段类型变更

默认执行项

MySQL / veDB / PostgreSQL → ByteHouse CDW

支持

支持

支持

支持

有限支持

加列

MySQL / veDB / PostgreSQL → ByteHouse CE

支持

支持

支持

支持

有限支持

加列、改类型

MySQL / veDB / PostgreSQL → StarRocks

支持

支持

支持

不支持

有限支持

加列、改类型

MySQL / veDB / PostgreSQL → Doris

支持

支持

支持

不支持

有限支持

加列、改类型

MySQL → Iceberg

支持

支持

不支持

支持

有限支持

加列

MySQL / veDB / PostgreSQL → Paimon

不支持

支持

不支持

不支持

不支持

加列

说明

2.2 实时分库分表同步

实时分库分表同步方案将多个源分表同步到目标表,支持范围与实时整库同步不同,如下:

源端 → 目标端

建表 DDL

新增字段

删除字段

字段重命名

字段类型变更

默认执行项

MySQL / veDB / PostgreSQL → ByteHouse CDW

不支持

支持

不支持

不支持

有限支持

加列

MySQL / veDB → ByteHouse CE

不支持

支持

支持

支持

有限支持

加列、改类型

MySQL / veDB / PostgreSQL → StarRocks

不支持

支持

不支持

不支持

有限支持

加列、改类型

MySQL / veDB / PostgreSQL → Doris

不支持

支持

不支持

不支持

有限支持

加列、改类型

2.3 使用前提

使用 Schema 变更同步前,需要满足以下条件:

条件

用户需要确认的内容

表在同步范围内

发生变更的源表已被任务选中;新建源表需符合任务的选表和新表发现规则。

已开启对应变更策略

在任务中允许执行相应操作,例如新增字段、删除字段或修改字段类型。选择忽略时,不会执行对应目标表结构变更。

目标端具备执行权限

任务使用的目标端账号有相应建表、修改表结构等权限,且目标表满足后文列出的变更约束。

2.4 DDL 策略与生效范围

策略

行为

自动处理

自动执行支持范围内的目标表结构变更;仍需满足目标端权限、表模型和类型兼容等要求。

忽略变更

不执行对应的目标表结构变更。源表变化仍可能影响后续数据写入,需确保目标表与变更后的数据兼容。

日志告警

记录变更信息,不执行对应的目标表结构变更。

任务出错

遇到对应变更时使任务处理失败,需处理该变更或调整策略后恢复同步。

3 各类 DDL 的能力和具体约束

以下说明适用于 2 支持的链路与 DDL 类型中列出的同步模式和操作。表格按目标数据源说明能力和约束;有源端或同步模式限制时单独注明。

3.1 建表

类别

项目

说明

能力说明

支持行为

根据源表结构和任务中的目标建表配置创建目标表。

策略条件

执行策略

将建表策略设为“自动处理”;目标端账号需具备建表权限,并提前准备任务所需的目标数据库等资源。

目标数据源

ByteHouse / StarRocks / Doris

表引擎、主键或排序键、分区、分桶等按目标端规则和任务配置创建,可能与源表不同。

Iceberg

仅支持 MySQL 实时整库同步;需正确配置目标存储位置、表格式和分区。历史数据是否同步取决于任务的全量同步设置。

约束

新增源表

仅同步符合任务选表、新表发现及目标表映射规则的新增源表。

已有目标表

目标表已存在时,需提前确认字段、键、类型和写入方式与任务配置兼容;建表操作不会自动修复已有表的结构差异。

3.2 新增字段

类别

项目

说明

能力说明

支持行为

在目标表中新增字段,后续数据按任务中的字段映射写入。

策略条件

执行策略

将新增字段策略设为“自动处理”;目标表必须已存在或已成功创建。

目标数据源

ByteHouse

支持新增字段,但不保留源端通过 FIRST/AFTER 指定的列位置。

StarRocks

支持通过 FIRST/AFTER 指定新增列位置,需满足目标表模型和字段依赖限制;不支持调整已有列的顺序。

Doris

支持新增字段;目标列顺序可能与源端通过 FIRST/AFTER 指定的顺序不同。

Iceberg

目标新增列位置可能与源端不同;新增后需确认目标字段定义与任务的写入字段匹配。

Paimon

仅支持在末尾新增字段,指定非末尾位置会失败;新增字段类型需能转换为目标类型,不支持自动同步源端注释和默认值定义。

约束

字段范围

支持新增普通字段,建议使用可空字段;不支持通过新增字段同步生成列、复杂表达式,以及主键或分区键的变更。

非空与默认值

目标字段的可空属性可能与源端 NOT NULL 定义不同;不支持自动同步默认值定义。需使用这些约束时,请单独配置目标表并确认写入兼容性。

固定映射

使用固定字段清单或字段映射时,需将新字段加入同步范围,并配置对应的目标字段。

3.3 删除字段

类别

项目

说明

能力说明

支持行为

删除目标表中的对应字段,后续数据不再写入该字段。

策略条件

执行策略

将删除字段策略设为“自动处理”;默认策略为“忽略变更”,请在变更前确认任务配置。

目标数据源

ByteHouse / StarRocks / Doris

删除字段需满足目标表模型和依赖关系要求;不满足时,变更可能失败。

Iceberg / Paimon

暂不支持自动同步字段删除。

约束

所有目标

仅支持删除普通、无依赖字段。涉及主键、唯一键、排序键、分区键,或被表达式、索引、物化视图等引用的字段,需先处理相关约束和依赖。

下游影响

固定映射、计算表达式和消费端可能仍引用原字段,需同步调整。

忽略删列

选择“忽略变更”时,目标表保留该字段,但源端后续记录不再提供其值。目标端可能填入空值或默认值,也可能因字段约束导致写入失败;请检查目标字段要求。

3.4 字段重命名

类别

项目

说明

目标数据源

ByteHouse

支持普通字段重命名,需将字段重命名策略设为“自动处理”。原字段须存在,新字段名不得与已有字段冲突,并需满足目标表依赖约束;ByteHouse CDW 分库分表同步暂不支持。

StarRocks / Doris

不支持自动同步字段重命名。

Paimon

暂不支持自动同步字段重命名。

MySQL → Iceberg,实时整库

仅适用于任务配置页面提供字段重命名策略的环境,并需将该策略设为“自动处理”;新字段名不得与已有字段冲突,变更需满足目标表标识字段及依赖关系要求。

约束

MySQL CHANGE COLUMN

同时修改字段名和类型时,两项变更均需满足支持范围并开启对应策略;执行失败时,可能只有部分变更生效。

字段映射

原字段名被字段清单、别名映射或表达式引用时,需同步修改相关配置。

替代处理

删除旧字段后再新增字段可能丢失旧字段的历史数据。采用此方式时,需单独迁移并核对历史数据。

3.5 字段类型变更

类别

项目

说明

能力说明

支持行为

根据源字段的新类型及类型映射规则,修改目标字段类型。

策略条件

执行策略

将字段类型变更策略设为“自动处理”。

目标数据源

ByteHouse

需满足目标表引擎、字段用途和类型转换要求;目标表结构变更在各节点生效需要时间,等待超时可能导致任务失败。

StarRocks / Doris

需满足目标表模型、键列和类型变更规则;修改后的目标字段可能允许空值,与源端 NOT NULL 定义不同。

Iceberg

仅适用于已开启类型变更策略的 MySQL 实时整库同步,支持符合目标类型转换规则的基本类型变更。复杂类型或不兼容的变更可能被跳过,目标字段保持原类型;变更后需核对目标字段类型。

Paimon

暂不支持自动同步字段类型变更。

约束

通用限制

目标字段类型由类型映射规则和目标端支持的转换决定;类型名称、长度、精度、符号和可空属性可能与源端不同。

兼容性要求

建议采用能完整保留原值的类型扩展,例如扩大整数范围、字符串容量或数值精度;具体转换仍需符合目标端的类型规则。

高风险场景

缩小类型范围、缩短字符串长度、减少 Decimal 整数位或小数位,以及有符号/无符号、时间精度或时区、字符串与数值、整数与浮点之间的转换,可能造成数据截断、精度损失或写入失败;变更前需验证现有数据是否兼容。

多源合表

目标字段类型需兼容所有源表的同名字段,最终类型可能与某一张源表的类型不同。

3.6 不支持自动同步的变更

类别

项目

说明

约束

键与约束:新增、删除或替换主键 / 唯一键

不支持自动同步主键、唯一键的新增、删除、替换或组成字段变更。调整前需确认目标表结构、任务配置和已有数据的迁移方案。此处指键的定义变更,记录中主键值的数据更新不属于 Schema 变更。

表操作:删除表、清空表、表重命名

不支持自动同步删除表、清空表和表重命名操作。

字段属性:单独修改字段注释、表注释

不支持单独修改字段注释或表注释的自动同步;已有目标表的注释需单独维护。

字段属性:默认值定义

不支持通过建表、新增字段或字段修改自动同步默认值定义,也不支持自动同步 SET DEFAULT / DROP DEFAULT。需在目标端使用默认值时,请单独配置。源端已计算并写入记录的实际字段值仍正常同步;新增字段不会自动回填历史数据。

字段属性:已有列的位置调整

不支持自动同步已有列的顺序调整;新增列的位置限制见第 3.2 节。

其他对象:索引、外键、检查约束、分区规则、生成列、视图、触发器等

不支持自动同步这些对象的变更;执行不支持的 DDL 语法还可能导致同步中断,需在变更前验证任务兼容性。

4 其他约束

约束

产品说明

无主键与乱序风险

源表没有主键且任务未配置有效唯一键时,并行同步或重试可能导致同一行的变更乱序,造成更新、删除结果与源端不一致。需要同步更新和删除时,应配置能够唯一标识记录的键,并确认目标端的写入方式支持相应操作。

转换模式

本条适用于转换模式:使用固定字段清单时,新增字段需手动加入同步范围;删除、重命名或修改字段类型时,需检查并调整引用该字段的映射、计算表达式和过滤条件。

多源合表

同名字段需保持可兼容类型,业务键需唯一;不同源的变更时间不一致时,目标结构不一定与任一源表完全相同。

Online DDL

使用 gh-ost、pt-osc 等工具进行在线变更前,需确认工具及临时表命名、选表规则与任务兼容;自定义变更流程需提前验证。在线变更工具的切表支持仅适用于已适配流程。

最近更新时间:2026.11.06 14:18:36
这个页面对您有帮助吗?
有用
有用
无用
无用