跳到主要内容
版本:3.x

处理 DDL 变更

适用版本Cloud 功能TapData Cloud 为您提供了云端服务,适合需要快速部署、低前期投资场景,帮助您更好地专注于业务发展而非基础设施管理,注册账号即可领取免费的 Agent 实例,欢迎试用。企业版功能TapData Enterprise 可部署在您的本地数据中心,适合对数据敏感性或网络隔离有严格要求的场景,可服务于构建实时数仓,实现实时数据交换,数据迁移等场景。社区版功能TapData Community 是一个开源的数据集成平台,提供基础的数据同步和转换功能,可通过 Docker 一键部署,帮助您快速探索和实施数据集成项目。随着项目或企业发展,您可以平滑升级至 TapData Cloud 或 TapData Enterprise,以获得更多高级功能或服务支持。

在使用 TapData 进行数据迁移和同步的过程中,了解数据源的表结构变更操作(如 DDL 操作)对数据流转的影响至关重要。TapData 致力于无缝处理大多数 DDL 变更,您需要了解表结构变更(如增减列)对数据同步流程的潜在影响,避免影响业务正常运行。

开启 DDL 自动同步

为保障数据复制/转换任务的高可用性和容错性,默认情况下,TapData 不会将源库的 DDL 语句同步到目标库,如果需要开启此功能,请按照以下步骤操作:

  1. 在创建或编辑数据复制数据转换任务时,转到源数据库节点的配置页面。

  2. 找到高级设置标签页,检查 同步 DDL 事件选项是否可用。

  3. 根据您的具体数据源类型,打开该功能并选择要采集的 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 变更的最佳实践

为安全地管理 DDL 变更,降低对数据同步任务的潜在风险,推荐遵循以下最佳实践:

  1. 变更前验证:在生产环境应用 DDL 变更之前,在测试环境进行完整的验证,识别可能中断同步的潜在问题。
  2. 计划与通知: 安排在业务低峰时段进行 DDL 变更,并提前通知相关团队。
  3. 管道配置更新:定期回顾并更新您的数据管道配置,以符合最新的表结构。
  4. 监控和预警:为您的数据管道设置监控告警,以便在遇到不支持的DDL操作时快速响应。