帮你快速理解、总结文档立即下载

支持的 DML 及 DDL 操作

最近更新时间:2025-11-13 17:18:01
我的收藏

DDL 变更类型及响应策略

实时整库任务支持监控数据源 DDL 变更,实时将源端变更同步到目标端。支持的 DDL 场景及相应策略如下表:
DDL
说明
新建表
1. 自动建表:当来源端被监控的库中出现新建表时,目标端将自动创建同结构的表及字段。
2. 忽略变更:目标端忽略来源端产生的 DDL 变更消息,目标端及日志不做任何响应或消息提醒。
3. 日志告警:目标端仅接收 DDL 变更消息,并在日志内打印消息内容,不触发新建表操作。
4. 任务出错:目标端接收 DDL 变更消息并持续重启任务,重启过程中任务日志报错并出现数据写入异常。
新增列
1. 自动新增列:当来源端被监控的表中出现新增列时,目标端将自动创建同名列。
2. 忽略变更:目标端忽略来源端产生的 DDL 变更消息,目标端及日志不做任何响应或消息提醒。
3. 日志告警:目标端仅接收 DDL 变更消息,并在日志内打印消息内容。此策略并不触发新增列操作。
4. 任务出错:目标端接收 DDL 变更消息并持续重启任务,重启过程中任务日志报错并出现数据写入异常。
删除列
1. 自动删除列:当来源端被监控的表中出现删除列时,目标端将自动删除同名列。
2. 忽略变更:目标端忽略来源端产生的 DDL 变更消息,目标端及日志不做任何响应或消息提醒。
3. 日志告警:目标端仅接收 DDL 变更消息,并在日志内打印消息内容。此策略并不触发删除列操作。
4. 任务出错:目标端接收 DDL 变更消息并持续重启任务,重启过程中任务日志报错并出现数据写入异常。
重命名列
1. 自动重命名列:当来源端被监控的表中出现列名称变化时,目标端将自动重命名列名。
2. 忽略变更:目标端忽略来源端产生的 DDL 变更消息,目标端及日志不做任何响应或消息提醒。
3. 日志告警:目标端仅接收 DDL 变更消息,并在日志内打印消息内容。此策略并不触发重命名列操作。
4. 任务出错:目标端接收 DDL 变更消息并持续重启任务,重启过程中任务日志报错并出现数据写入异常。
修改列类型
1. 自动修改列类型:当来源端被监控的库中出现列类型变化时,如字段长度变化、增加 comment 等,目标端将自动进行相应变更。
2. 忽略变更:目标端忽略来源端产生的 DDL 变更消息,目标端及日志不做任何响应或消息提醒。
3. 日志告警:目标端仅接收 DDL 变更消息,并在日志内打印消息内容。此策略并不触发修改列类型操作。
4. 任务出错:目标端接收 DDL 变更消息并持续重启任务,重启过程中任务日志报错并出现数据写入异常。
删除表
1. 忽略变更:目标端忽略来源端产生的 DDL 变更消息,目标端及日志不做任何响应或消息提醒。
2. 日志告警:目标端仅接收 DDL 变更消息,并在日志内打印消息内容。此策略并不触发删除表/重命名表/清空表操作。
3. 任务出错:目标端接收 DDL 变更消息并持续重启任务,重启过程中任务日志报错并出现数据写入异常。
重命名表
清空表
说明:
针对源端“高危”的表级操作,如删除表、清空表、重命名表,目标端不支持自动响应变更,即目标端不会自动进行删除表、清空表、重命名表操作。

DML 及 DDL 支持情况概览

目标端是否能自动同步源端的 DML 及 DDL 变更,取决于来源端是否能捕获这些变更,以及目标端是否能响应这些变更。源端支持并且目标端也支持的情况下,对应的链路方可支持对应的 DDL 变更。如 MySQL 源端支持新增列,DLC 目标端支持新增列,则 MySQL 来源表中新增列方能自动在 DLC 目标端新增列;MySQL 源端支持删除表,Doris 目标端不支持删除表,则 MySQL 数据源中删除的表在 Doris 目标端不会自动删除。
不同的来源及目标端支持的 DML、DDL 类型及消息处理存在差异,部分数据源支持情况如下表,具体参见产品页面配置。
说明:
1. 读:“是” 表示读端可感知对应 DML、DDL 操作,传递变更给下游。
2. 写:“是” 表示写端可跟随响应对应 DML、 DDL 变更。
3. DDL 变更响应目前仅支持增量阶段,全量阶段不支持DDL变更。
类型
读(来源端)
DML
DDL
插入
删除
更新
新增列
删除列
重命名列
修改列类型
新增表
重命名表
删除表
清空表
MySQL
是
是
是
是
是
是
是
是
是
是
是
TDSQL-C
MySQL
是
是
是
是
是
是
是
是
是
是
是
TDSQL MySQL
是
是
是
是
是
是
是
是
是
是
是
Oracle
是
是
是
是
是
是
是
是
否
是
是
SQL Server
是
是
是
否
否
否
否
否
否
否
否
PostgreSQL
是
是
是
是
是
否
是
是
否
是
是
OceanBase
是
是
是
否
否
否
否
否
否
否
否
MongoDB
是
是
是
否
否
否
否
否
否
否
否
Kafka
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
类型
写(目标端)
DML
DDL
插入
删除
更新
新增列
删除列
重命名列
修改列类型
新增表
重命名表
删除表
清空表
DLC
是
是
是
是
是
是
是
是
否
否
否
Iceberg
是
是
是
是
是
是
是
是
否
否
否
Doris
是
是
是
是
是
是
是
是
否
否
否
StarRocks
是
是
是
是
是
否
是
是
否
否
否
TChouse-P
是
是
是
是
否
否
否
是
否
否
否
TChouse-X
是
是
否
是
否
否
否
是
否
否
否
TChouse-C
是
是
是
是
是
否
是
是
否
否
否
Elasticsearch
是
是
是
是
是
是
否
是
否
否
否
Hive
是
否
否
是
否
否
否
否
否
否
否
Kafka
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA

DDL 解析语法要求

注意:
仅符合 DDL 类型及语法要求的 SQL 可被源端解析并响应,不支持的 SQL 语句可能会导致任务异常重启等情况。请评估业务表结构变更常用语法是否符合要求,并为任务配置符合业务要求的 DDL 变更响应及写入异常处理策略。

MySQL

1. 重命名表(rename table)支持下列语法:
RENAME TABLE tbl_name TO new_tbl_name
2. 新建表(create table)支持下列语法:
CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) CREATE TABLE new_tbl LIKE orig_tbl; CREATE TABLE new_tbl AS SELECT * FROM orig_tbl;
警告:
不支持 CHECK \\ TemporaryTable 等约束。
3. 修改列(modify \\ change column) 与 重命名列(rename column)支持下列语法:
ALTER TABLE t1 MODIFY b INT NOT NULL; ALTER TABLE t1 CHANGE b a INT NOT NULL;
4. 增加列(add column) / 重命名列 支持下列语法:
ALTER TABLE table_name ADD new_column_name column_definition [ FIRST | AFTER column_name ];
5. 删除列(drop column)支持下列语法:
Alter table t2 DROP [COLUMN] col_name
6. 清空表(truncate table)支持下列语法:
truncate table a;
7. 删除表(drop table)支持下列语法:
drop table a;