fail to record DDLLockInfo 上游增加的唯一索引现在在tidb中已经存在如何处理?

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

  • 【TiDB 版本】:v3.0.9
  • 【DM版本】:v1.0.3
  • 【问题描述】: 分库分表场景下,上游库中存的是普通索引,下游建了唯一索引,且dm同步完成,应要求,此时需要对上游普通 索引进行清理重复数据,增加了唯一索引 ,删除了普通索引,对于这种情况如何处理? 简单说就是上游增加的唯一索引现在在tidb中已经存在,现在ddl过不去了,导致同步延迟严重,如何处理? 【报错内容】:[2020/03/06 10:08:01.939 +08:00] [INFO] [server.go:307] [“receive DDLLockInfo”] [request=FetchDDLInfo] [“ddl lock info”=“task:“product_all_merge” ID:“product_all_merge-product_x.item_props_x” “] [2020/03/06 10:08:01.939 +08:00] [ERROR] [server.go:315] [“fail to record DDLLockInfo”] [request=FetchDDLInfo] [“ddl lock info”=“task:“product_all_merge” ID:“product_all_merge-product_x.item_props_x” “] [error=”[code=40062:class=dm-worker:scope=internal:level=high] DDLLockInfo for task product_all_merge already exists”] [errorVerbose=”[code=40062:class=dm-worker:scope=internal:level=high] DDLLockInfo for task product_all_merge already exists\ngithub.com/pingcap/dm/pkg/terror.(*Error).Generate\n\t/go/src/github.com/pingcap/dm/pkg/terror/terror.go:232\ngithub.com/pingcap/dm/dm/worker.(*SubTask).SaveDDLLockInfo\n\t/go/src/github.com/pingcap/dm/dm/worker/subtask.go:529\ngithub.com/pingcap/dm/dm/worker.(*Worker).RecordDDLLockInfo\n\t/go/src/github.com/pingcap/dm/dm/worker/worker.go:445\ngithub.com/pingcap/dm/dm/worker.(*Server).FetchDDLInfo\n\t/go/src/github.com/pingcap/dm/dm/worker/server.go:311\ngithub.com/pingcap/dm/dm/pb._Worker_FetchDDLInfo_Handler\n\t/go/src/github.com/pingcap/dm/dm/pb/dmworker.pb.go:3865\ngoogle.golang.org/grpc.(*Server).processStreamingRPC\n\t/go/pkg/mod/google.golang.org/grpc@v1.25.1/server.go:1211\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/go/pkg/mod/google.golang.org/grpc@v1.25.1/server.go:1291\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.1\n\t/go/pkg/mod/google.golang.org/grpc@v1.25.1/server.go:722\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1357”]

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

尝试在 task 配置文件中配置过滤规则,跳过 drop index 的 DDL 语句,详见

当前上游由于 DDLLock 无法正常同步的报错,可以先参考文档处理 Lock

show-ddl-locks

命令 需要额外的安装吗?在dm-ansible 和 master的目录中没有找到该命令

在 dm-ctl 命令行里面 help