DM同步问题

  1. 你截图里面是 shandongshengli 的目录, 看下这个误删除的目录, ls -lath /new/tidb/dm/data/shandongdaxueqilu/deploy
  2. 如果是已经误删除的话肯定是已经启动不了的,如果需要重新重置该 task 的任务的话。 可以参考: https://pingcap.com/docs-cn/stable/reference/tools/data-migration/faq/#如何重置数据同步任务

已经没有这个目录了,只剩下shandongshengli一个空目录

我现在任务太多,只能停这一个worker

这个目录跟你设定配置的 dm deploy_path 不是同一个目录也不是上层目录。麻烦仔细检查。

1:刚才回复的复制错了,很抱歉 !!是误删除的deploy_dir=/home/tidb/dm/data/shandongshengli/deploy 这个目录 shandongshengli下没有任何的文件

2:刚才您回复我要重置worker的链接 我看了一下,我现在不能重启DM集群,还有其他的任务,我只能停止这一个worker 不能影响其他的任务

如果确认是已经删除了某一个 dm-worker 的话可以按以下步骤尝试恢复:

  1. 确认对应问题的 dm-worker 的所有 task 已经执行到的 pos 。查询下游 TiDB : select binlog_name,binlog_pos from dm_meta.{task_name}_syncer_checkpoint where is_global = 1,选出最早的 relay_binlog_name 。
  2. 修改 {dm-ansible_path}/inventory.ini 文件。在问题对应的 dm-worker 的那一行修改 relay_binlog_name ,起始的位置为上一步查询出来的最早的 relay_binlog_name 。详细可以参考:https://pingcap.com/docs-cn/stable/how-to/deploy/data-migration-with-ansible/#配置-relay-log-同步位置 (注意:需要确认上游 MySQL 的 binlog 的有效性,没有已经过期被清理的。)
  3. 重新部署问题的 dm-worker , ansible-playbook deploy.yml --tags=dm-worker -l {dm_woker}
  4. 重新启动运行 ansible-playbook start.yml --tags=dm-worker -l {dm_woker}
  5. 确认 dm-worker 服务能够正常启动,可以尝试重新启动 task

每太看明白 第一步

就是问题的 dm-worker ,之前在上面 跑的 task 都要到下游 TiDB 进行检查。检查的语句按照上面提供的 SQL ,选出这么多个 task 里面的 relay_log_name 最早的文件用来做 dm-worker 拉取的起点。

这个是 SQL 需要到下游 TiDB 进行执行查询的。

下游现在没有这个worker同步的数据,要从第一条开始同步
image

在 ./dmctl -master-addr {dm_master_ip}:{dm_master_port}
执行 query-status 看下结果。



麻烦执行 query-status 谢谢。

执行了
image

麻烦就执行 query-status 不要加任何参数。

执行完,任务太多,截不完图

  1. 执行 query-status -w “{dm_worker_ip}:{dm_worker_port}” 看下结果。
  2. 如果该查询的结果表示该 dm_worker 没有正常启动的话可以手工执行下 {deploy_dm_worker_path}/scripts/run_dm-worker.sh 里面的逻辑看下为啥启动不了。

执行完毕

worker启动后生成的文件只有层级目录,没有可以查看的文件列如 .log文件