全部产品
Search
文档中心

实时计算Flink版:表结构变更同步支持

更新时间:Aug 06, 2026

CDC YAML Pipeline 作业通过 pipeline 级配置项 schema.change.behavior 控制表结构变更策略,取值包括 IGNORE、LENIENT、TRY_EVOLVE、EVOLVE 和 EXCEPTION。本文说明各 Sink 连接器在 LENIENT(默认)和 EVOLVE 两种模式下对不同表结构变更事件(Schema Change Event)的处理方式。图例:✓ 支持,✗ 不支持,— 不涉及。

Paimon Sink

变更事件

LENIENT

EVOLVE

说明

添加列

自动在结果表中添加对应列。

删除列

在结果表中删除该列。

重命名列

在结果表中将原有列重命名。

列类型变更

在结果表中变更对应列的数据类型。

NOT NULL 转 NULLABLE

Paimon 允许将列从 NOT NULL 放宽为 NULLABLE。

NULLABLE 转 NOT NULL

框架层和 Paimon 均禁止将 NULLABLE 约束收紧,该变更不会生成事件。

创建表

在目标端自动创建对应表。如表已存在会校验 Schema 兼容性。

删除表

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

清空表

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

修改列注释

源端对已有列的注释修改不会同步。创建表和添加列时携带的注释会被同步。

修改表注释

源端对表注释的修改不会同步。创建表时携带的表注释会被同步。

说明

Paimon Sink 具备列名大小写自动修正能力,当因大小写不匹配导致 Schema 变更失败时会自动重试。

Fluss Sink

变更事件

LENIENT

EVOLVE

说明

添加列

仅支持在末尾位置(LAST)添加列。

删除列

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

重命名列

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

列类型变更

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

NOT NULL 转 NULLABLE

列类型变更事件不支持,NULLABLE 变更也被静默跳过。

NULLABLE 转 NOT NULL

框架层禁止将 NULLABLE 约束收紧,该变更不会生成事件。

创建表

在目标端自动创建对应表和数据库。

删除表

在目标端删除该表。

清空表

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

修改列注释

源端对已有列的注释修改不会同步。创建表和添加列时携带的注释会被同步。

修改表注释

源端对表注释的修改不会同步。创建表时携带的表注释会被同步。

说明

建议使用 schema.change.behavior: LENIENT 模式来更灵活地处理 Fluss 不支持的 Schema 变更。

StarRocks Sink

变更事件

LENIENT

EVOLVE

说明

添加列

自动在结果表中添加对应列。

删除列

在结果表中删除该列。

重命名列

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

列类型变更

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

NOT NULL 转 NULLABLE

列类型变更事件不支持,NULLABLE 变更也被静默跳过。

NULLABLE 转 NOT NULL

框架层禁止将 NULLABLE 约束收紧,该变更不会生成事件。

创建表

在目标端自动创建对应表。

删除表

在目标端删除该表。

清空表

清空目标端表的数据。

修改列注释

源端对已有列的注释修改不会同步。创建表和添加列时携带的注释会被同步。

修改表注释

源端对表注释的修改不会同步。创建表时携带的表注释会被同步。

说明

StarRocks 3.3+ 版本计划支持 RENAME COLUMN 操作,当前版本暂不支持。

Iceberg Sink

变更事件

LENIENT

EVOLVE

说明

添加列

支持指定列的位置(FIRST/LAST/BEFORE/AFTER)。

删除列

在结果表中删除该列。

重命名列

在结果表中将原有列重命名。

列类型变更

在结果表中变更对应列的数据类型。

NOT NULL 转 NULLABLE

暂不支持。

NULLABLE 转 NOT NULL

框架层禁止将 NULLABLE 约束收紧,该变更不会生成事件。

创建表

在目标端自动创建对应表和命名空间。

删除表

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

清空表

LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

修改列注释

源端对已有列的注释修改不会同步。创建表和添加列时携带的注释会被同步。

修改表注释

源端对表注释的修改不会同步。创建表时携带的表注释会被同步。

Hologres Sink

变更事件

LENIENT

EVOLVE

说明

添加可空列

自动在结果表 Schema 末尾添加对应列,并同步新增列的数据。

添加非空列

在结果表 Schema 末尾添加对应列,新增列默认设为可空列,添加列发生之前的数据自动置为 NULL。

删除列

Hologres 暂不支持删除列。LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。

重命名列

LENIENT 下作为添加列和删除列处理,末尾添加重命名后的列,原列数据自动填充 NULL;EVOLVE 下直接重命名。

列类型变更

Hologres 不支持列类型变更。LENIENT 下静默跳过;EVOLVE 下抛出异常导致作业失败。需搭配 sink.type-normalize-strategy 使用。

NOT NULL 转 NULLABLE

列类型变更事件不支持,NULLABLE 变更也被静默跳过。

NULLABLE 转 NOT NULL

框架层禁止将 NULLABLE 约束收紧,该变更不会生成事件。

删除表

在目标端删除该表。

清空表

清空目标端表的数据。

修改列注释

源端对已有列的注释修改不会同步。创建表和添加列时携带的注释会被同步。

修改表注释

源端对表注释的修改不会同步。创建表时携带的表注释会被同步。

说明

Hologres Sink 不支持 TRY_EVOLVE 策略。添加列时仅支持在末尾添加(LAST 位置),且不支持添加非 NULLABLE 列。同时不支持同步主键或索引等约束的变更、非空列的删除、以及 NOT NULL 转 NULLABLE 变更。

SelectDB Sink

变更事件

LENIENT

EVOLVE

说明

添加列

自动在结果表中添加对应列,并同步新增列的数据。

删除列

在结果表中删除该列。

重命名列

在结果表中将原有列重命名。

列类型变更

在结果表中变更对应列的数据类型。

NOT NULL 转 NULLABLE

MODIFY COLUMN 语句未显式指定 NULL,Doris 保持原有 NULLABLE 约束不变。

NULLABLE 转 NOT NULL

框架层禁止将 NULLABLE 约束收紧,该变更不会生成事件。

创建表

在目标端自动创建对应表。

删除表

在目标端删除该表。

清空表

清空目标端表的数据。

修改列注释

源端对已有列的注释修改不会同步。创建表和添加列时携带的注释会被同步。

修改表注释

源端对表注释的修改不会同步。创建表时携带的表注释会被同步。

说明

Batch 模式下(sink.enable-batch-mode: true),ALTER TABLE 类型的 Schema 变更(添加列、删除列、重命名列、列类型变更)会等待 Schema 变更完成后再继续处理数据,超时时间通过 schema.evolution.timeout 配置。SelectDB 底层基于 Apache Doris 引擎。

MaxCompute Sink

变更事件

LENIENT

EVOLVE

说明

添加列

自动在结果表中添加对应列。

删除列

在结果表中删除该列。

重命名列

在结果表中将原有列重命名。

列类型变更

在结果表中变更对应列的数据类型。

NOT NULL 转 NULLABLE

将列约束从 NOT NULL 放宽为 NULLABLE 会被同步到目标端。

NULLABLE 转 NOT NULL

框架层禁止将 NULLABLE 约束收紧,该变更不会生成事件。

创建表

在目标端自动创建对应表。表已存在时校验 Schema 和主键一致性,不一致则抛出异常。

删除表

在目标端删除该表。

清空表

清空目标端表的数据。

修改列注释

源端对已有列的注释修改不会同步。创建表和添加列时携带的注释会被同步。

修改表注释

源端对表注释的修改不会同步。创建表时携带的表注释会被同步。

Kafka Sink

变更事件

LENIENT

EVOLVE

说明

创建表

在 Kafka 中自动创建对应的 Topic(Upsert 模式下创建 Compacted Topic)。

添加列

Kafka 不维护 Schema,事件被静默忽略。

删除列

Kafka 不维护 Schema,事件被静默忽略。

重命名列

Kafka 不维护 Schema,事件被静默忽略。

列类型变更

Kafka 不维护 Schema,事件被静默忽略。

删除表

事件被静默忽略。

清空表

事件被静默忽略。

修改列注释

Kafka 不维护 Schema。

修改表注释

Kafka 不维护 Schema。

说明

Kafka 作为消息队列不维护表的 Schema 结构,Schema 变更事件会作为消息的一部分发送到下游,但不会在 Kafka 端执行实际的结构变更操作。