处理 DDL 变更
TapData Cloud 为您提供了云端服务,适合需要快速部署、低前期投资场景,帮助您更好地专注于业务发展而非基础设施管理,注册账号即可领取免费的 Agent 实例,欢迎试用。TapData Enterprise 可部署在您的本地数据中心,适合对数据敏感性或网络隔离有严格要求的场景,可服务于构建实时数仓,实现实时数据交换,数据迁移等场景。TapData Community 是一个开源的数据集成平台,提供基础的数据同步和转换功能,可通过 Docker 一键部署,帮助您快速探索和实施数据集成项目。随着项目或企业发展,您可以平滑升级至 TapData Cloud 或 TapData Enterprise,以获得更多高级功能或服务支持。在使用 TapData 进行数据迁移和同步的过程中,了解数据源的表结构变更操作(如 DDL 操作)对数据流转的影响至关重要。TapData 致力于无缝处理大多数 DDL 变更,您需要了解表结构变更(如增减列)对数据同步流程的潜在影响,避免影响业务正常运行。
开启 DDL 自动同步
为保障数据复制/转换任务的高可用性和容错性,默认情况下,TapData 不会将源库的 DDL 语句同步到目标库,如果需要开启此功能,请按照以下步骤操作:
找到高级设置标签页,检查 同步 DDL 事件选项是否可用。
根据您的具体数据源类型,打开该功能并选择要采集的 DDL 事件。
此页面会展示该数据源支持采集的 DDL 事件,通常包含新增字段、修改字段名、修改字段属性、删除字段。
提示除开启该开关外,还需要目标库支持 DDL 应用,您可以通过支持的数据源文档,查询各类数据源对 DDL 事件采集和 DDL 应用的支持情况,也可以在在目标节点的高级设置中查看 DDL 事件应用的提示信息。
DDL 采集与应用说明
DDL 采集 | DDL 应用 |
---|---|
新增字段 | TapData 在目标库新增字段时,会自动适配字段类型,例如从 MySQL 的 INT 转换至 Oracle 的 NUMBER(38,0),如遇不支持的列类型可能导致新增字段失败。 |
修改字段名 | TapData 会自动在目标库完成该操作,需注意避免目标库的字段命名限制。 |
修改字段属性 | 在不同类型的数据库间同步时(例如从 MySQL 到 Oracle),需确保目标数据库支持更改后的数据类型和属性。否则,这可能导致同步任务的错误或中断。 |
删除字段 | 从源表中删除列可能会对数据管道产生严重影响,尤其是当该列是数据处理逻辑的关键部分,例如主键或作为同步链路的更新条件字段。在进行此类变更之前,需确保数据管道中的其他组件不再依赖该列。 |
提示
对于弱 Schema 约束类数据源不会变更历史数据的 Schema 信息,例如 Kafka 会在其消息中写入本次的 DDL 变更,后续在进行消费时可感知发生的 DDL 详情。
如果因 DDL 同步错误而导致数据同步任务中断,您可以在选择源数据库中撤销相关 DDL 操作,或者选择重新加载数据源的 Schema,然后重置并重启任务来修复。
此外,您还可以通过查看任务日志和错误码,可以帮助您诊断和解决任务失败的问题,正常的 DDL 采集与应用日志示例如下:
DDL 变更的最佳实践
为安全地管理 DDL 变更,降低对数据同步任务的潜在风险,推荐遵循以下最佳实践: