数据开发治理平台 WeData 资产清查

实时整库任务支持监控数据源 DDL 变更,实时将源端变更同步到目标端。支持的 DDL 场景及相应策略如下表。

相关产品
数据开发治理平台 WeData 产品页,含版本规格、价格与购买入口。

一、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-CMySQL 是 是 是 是 是 是 是 是 是 是 是
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;

赞 (0)
上一篇 4天前
下一篇 4天前