Dm启动任务报错fail to initial unit Sync of subtask xxx

操作目的为将task从一个worker迁移到另一台机器上的worker执行,所做操作如下: 1.事先已经在新的work配置好relay.meta,拉取binlog正常 2.停掉老的task任务 3.启动新的worker上的任务 启动后报错

query-error返回的错误信息如下 已经用相同方法迁移了其他几个task都正常 其他信息: 老的worker版本Release Version: v1.0.0-alpha-30-g76218b6 新的worker版本Release Version: v1.0.1

尝试重新stop服务,删除原来已拉取的binlog文件,设置一个新的relay.meta,启动服务后,binlog拉取依旧正常,start-task还是报图中的错误

麻烦整理一下问题描述:具体的 dm-worker 的迁移动作 step by step 操作描述一下。

1.新dm集群,stop对应的worker服务

2.新dm集群,配置relay.meta

3.新dm集群,start对应worker服务,可正常拉取binlog

4.老dm集群,通过dmctl执行stop-task停掉对应task

5.新dm集群,通过dmctl执行start-task启动task

6.新dm集群执行query-status可看到上文中提到的错误

请排查一下 dm-worker 版本,如果存在新老版本差异是出现这个问题 gRPC 协议不兼容问题。

这里面可能有两个问题,可以确认一下

  1. 一个 dm 集群的 dm-worker,dm-master 版本不能是多个版本。这是 grpc 错误的原因
  2. dm-worker 之间是独立,保存的 relay log 元信息都有单独的编码,比如上面报错 uuid suffix 000002,任务启动的时候会对比 task 的元信息和 relay log 的元信息,如果不匹配,那么就会出现上面的错误。这里可以把旧 dm-worker 的 relay meta 原样 copy 到新的 dm-worker 下面。

1.一个集群的所有组件版本都是一致的 2.我的做法也是从老的集群直接copy的relay.meta 3.其他很多任务这样迁移都没有问题,只有这个出了问题

relay log 的目录一致吗?注意最后的 .000002,以及 server-uuid.index

老的是f68005b4-7703-11e9-b3d1-98039b6e2fb8.000002

新的是f68005b4-7703-11e9-b3d1-98039b6e2fb8.000001

应该就是这个原因,我删掉新的relaylog目录重新启动服务获取的也是000001,该如何解决?

  1. 10.94.7.126:8290 这台 dm-worker 的启动 log 可以贴一下吗,并且确认一下当前这个 worker 的状态。还有全部升级到新版本后,现在 query status 还报错吗?
  2. 刚才表达的不严谨,需要 copy 整个 relay log 目录

重启copy了整个relaylog目录,已经解决问题,感谢

现在问题全部都解决了吗,包括 rpc 通讯问题?

目前task启动运行正常,dm-worker.log看起来也没问题

有其他问题的话,欢迎在这里提问

好的,谢谢

另外,我们也增加了迁移 DM-worker 的文档,https://pingcap.com/docs-cn/v3.0/reference/tools/data-migration/cluster-operations/#替换-迁移-dm-worker-实例