支持的 DML 及 DDL 操作

最近更新时间:2024-08-29 09:05:31

我的收藏

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
Kafka
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
类型
写(目标端)
DML
DDL
插入
删除
更新
新增列
删除列
重命名列
修改列类型
新增表
重命名表
删除表
清空表
DLC
Iceberg
Doris
StarRocks
TChouse-P
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;