在实时整库 CDC、分库分表、离线整库解决方案场景中,通常会遇到较多来源端新增表、新增列等 DDL 操作场景。解决方案支持您根据实际业务场景,对来源端不同的 DDL 消息,在配置解决方案同步到目标端数据源时,可进行预设不同的处理策略。
1 注意事项
- 若在数据缓存配置中,若您您开启数据缓存的同步方式时,则所有源端的 DDL 消息均只能做忽略变更处理。
- 新增列变更消息自动处理策略目前存在以下限制:
- 源端中主键列不支持自动加列;
- 目标端自动增加的列,需允许存在 null 值;
- 如配置列名映射规则,则不再支持自动加列操作。
- 修改列类型变更消息自动处理策略目前存在以下限制:
- 源端中主键列不支持自动修改列类型;
- 如目标端列已为 string 类型,则不再跟随源端类型变更;
- 列类型的存储数据范围不支持由大改小,例如目标端列类型已为 bigint 类型,源端即使再次变更为 int,目标端将依然保持为 bigint,否则可能引起字段溢出问题。
2 支持的 DDL 策略
- DataSail 实时整库同步、实时分库分表同步解决方案中:
- MySQL2StarRocks、MySQL2Doris 通道支持新建表、新增列、删除列、修改列类型的处理策略。
- MySQL2ByteHouse_CDW 通道支持新建表、新增列、删除列、重命名列、修改列类型的处理策略。
- DataSail 离线整库同步解决方案中:PostgreSQL2Hive 通道支持新建表、新增列的处理策略。
说明
- 新建表的自动处理策略,仅在数据来源表选择为“正则”规则模式指定表时生效。来源表配置详见4.4 数据来源配置
- 其余通道的 DDL 策略配置,目前仅支持对 DDL 消息做“忽略变更”处理,您可手动对源端表、目标表和解决方案配置进行编辑操作。详见解决方案源表字段类型变更实践
不同 DDL 消息处理策略支持情况如下:
DDL 消息 | 自动处理 | 忽略变更 | 日志告警 | 任务出错 |
---|
新建表 | ✅ | ✅ | ✅ | ✅ |
删除表 | | ✅ | | |
重命名表 | | ✅ | | |
新增列 | ✅ | ✅ | ✅ | ✅ |
删除列 | ✅ | ✅ | ✅ | ✅ |
重命名列 | ✅ | ✅ | ✅ | ✅ |
修改列类型 | ✅ | ✅ | ✅ | ✅ |
清空表 | | ✅ | | |
处理策略说明如下:
- 自动处理: 即会在来源端捕获的 DDL 消息,下发给目标数据,由目标数据来自动响应处理,包括自动加表、自动加列、自动变更列类型等。不同目标数据对 DDL 消息处理策略可能不同,平台仅执行转发操作。
- 忽略变更: 即会丢弃掉此 DDL 消息,不向目标数据源发送此消息,目标端数据源不做任何响应。
- 日志告警: 即会丢弃掉此 DDL 消息,但会在同步日志中记录 DDL 变更消息详情。
- 任务出错: 即一旦源端出现 DDL 变更,同步任务将显示出错状态并终止运行。
3 新建方案配置 DDL 策略
在解决方案中配置 DDL 策略操作如下:
- 登录 DataSail 控制台。
- 在左侧导航栏中选择数据同步方案,进入同步方案配置界面。
- 单击目录树中项目选择入口,选择已创建的 DataLeap 项目。
- 单击右上角新建数据同步解决方案按钮,根据实际业务场景选择实时整库同步、实时分库分表同步或离线整库同步方案,进入解决方案配置界面。
- 进入配置界面后,依次完成方案的基本配置、数据来源配置、数据缓存配置、数据目标配置等前置配置操作。配置操作详见各方案操作明细说明。
- 数据目标配置完成后,单击下一步,进入 DDL 策略配置流程。不同数据源中不同的 DDL 消息目前可能支持的处理策略不同。详见2 支持的 DDL 策略
- DDL 策略配置完成后,您可单击下一步按钮,继续完成解决方案后续配置操作。
4 历史方案修改 DDL 策略
如需对已创建的任务进行 DDL 策略修改,您可按以下操作步骤进行修改:
- 在解决方案列表界面,单击运维列中方案编辑按钮,进入解决方案编辑界面;
- 单击下一步按钮,到 DDL 策略配置步骤,修改相应的 DDL 消息规则。
- DDL 策略配置完成后,单击下一步,在运行配置步骤中,单击提交方案按钮,并勾选“立即执行”选项,修改 DDL 策略配置完成,解决方案在重启后生效。
5 后续步骤
解决方案重启成功后,您可在源端对来源表进行新增列操作,在目标表中进行验收即可。