dm 关于分表得ddl同步

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:tidb4.0,dm2.0
  • 【问题描述】:mysql中得分表利用dm工具合并分表,如果在mysql端对分表做ddl操作(如加字段),是不是不能同步到tidb中合并后得表上

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

DM 通过 online-schema-change: gh-ost 来处理在线 DDL 操作,可以看一下下面文档。

https://docs.pingcap.com/zh/tidb-data-migration/stable/feature-online-ddl-scheme#配置

测试了以下,分库分表通过pt-online-schema-change 做ddl操作是可以同步到tidb得
,命令行方式(alter table add column)对分表做ddl操作,同步任务是卡住了,查看任务状态:


遇到类似问题,怎么跳过,让同步继续呢

麻烦提供下 DM 的具体版本,另外需要确认下 task 配置中是乐观模式还是悲观模式,差别如下图,如采用悲观模式,会等上游所有分表执行 ddl 成功后才会继续。

sharding ddl lock 可以参考下下面链接
https://docs.pingcap.com/zh/tidb-data-migration/dev/manually-handling-sharding-ddl-locks#手动处理-sharding-ddl-lock

dm2.0 版本,task采用得是:pessimistic
用命令查看是没有ddl lock得
用命令查看是没有ddl 锁得
{
“result”: true,
“msg”: “no DDL lock exists”,
“locks”: [
]

问题已经解决了,是因为分表得ddl,没有执行完,执行完就好了,谢谢

好的,如果后面有需求不需要等所有分表都执行完成 ddl,可以考虑测一下乐观模式。