Woker节点重启会重新执行dump、load全流程导致task中断

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

  • 【TiDB 版本】:
    dm的版本:1.0.2
  • 【问题描述】:
    dm_worker节点的服务器重启,重新启动dm_worker服务后,查看日志发现,dm_worker执行了dump、load流程,因为下游已经数据这些数据了,导致所有在这个节点上的task任务都中断了,机器重启无法避免,然后能让 重启后任务正常恢复呢

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

贴一下 task 文件看下配置情况。

贴下在 DM 的部署目录下 dumped_data…/ 下面的 metadata 文件内容以及下游数据库里面 dm_meta 库下面的 loader_checkpoint 和 syncer_checkpoint 的内容。

1、 dumped_data…/ 下面的 metadata 文件内容


2、dm_meta 库下面的 loader_checkpoint 和 syncer_checkpoint 的内容

看着是因为 task 里面配置了 remove-meta 为 true,重启之后又全量拉数据了。

我发现我有好几个task的配置文件都有这个参数,那我现在把task的yaml文件里面删除这个参数,如何让在woker上生效呢,update-task task/office_dev.yaml 这个看说明 update a task’s config for routes, filters, or black-white-list ,应该是不支持更新remove-meta

task 里面 remove-meta 改为 false,然后 stop & start task。另外下游的数据也需要先清理掉。

明白了,那就等于是重新做了,谢谢。

好的 ,有问题在提问。

问题描述:新部署了一个同步任务,任务部署好之后(一切正常),我突然收到报警,这个任务状态变成了Paused,通过query-error xxx和query-status xxx都没有看到报错信息,下面是相关截图



我通过 resume-task试着恢复任务,报错如下:

从报错的内容看是request is timeout,不了解为啥会超时呢,woker上跑的其他任务都是正常的
然后我尝试重启这个woker节点,发现重新执行了loader流程,我的task配置里面也没有配置remove-meta,为啥会执行loader流程,帮忙看看

task配置文件

下面是重启woker节点的日志

dm_teta信息如下:

请提供一下 resume 之前的日志

resume之前的日志我已经清空了,我现在有两个问题:1、这个任务无法恢复正常,2、这个woker节点重启会执行全部流程, 那我们现在如何定位这个问题呢,需要我提供哪些资料和操作

更诡异了,中午自己好了,任务恢复正常了,我刚才重启woker节点也正常了,没有重现执行dump、load的单元

DM 对于一些可重试的错误会自动恢复。而且如果仅仅是 task 运行有问题,不需要重启 worker,在 dmctl 里用 task 相关的 pause-task、resume-task 命令维护即可。

上面那个任务状态为 paused,但是没有报错的问题,能否提供一下 dm-worker 的日志?

dm-worker.log.bak (484.1 KB)

sync 阶段需要从 mydumper 导出的 meta 文件中的位置读 relay log,如果这个时候 relay log 总还没写到该位置,则任务会处于 paused 状态