DM导入数据报错

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本】centos7
  • TiDB 版本】3.0.2
  • 磁盘型号】ssd
  • 集群节点分布】3pd 3tikv 2tidb 混合部署
  • 数据量 & region 数量 & 副本数】4万多
  • 问题描述(我做了什么)】使用DM进行数据迁移时候报错
  • 关键词

看错误是重复健错误。确认一下,下游的表中是否已存在数据。

请问一下,有3个实例,目前已经同步2个实例,还有一个实例,需要同步,想写两个task任务同步,之前inventry.ini的配置文件没有写准备同步的source id等信息,写好了,是不是需要再重启DM集群,启动集群之后,会影响之前的任务吗,之前的任务还会接着之前的点位接着传吗?

我理解你是需要新建一个 work 来和第三个上游实例同步数据。建议如下: 1)在 inventory.ini 配置新的 dm-work,然后使用 -tags 和 -l 参数指定为这个实例部署work 进程。 2)新建一个 task.yaml 配置这个同步任务 3)登陆 master-work,应用新的 task.yaml

这个inventory.ini里面已经配置了。dm-master.toml也有,怎么报找不到

检查一下配置: dm-master 进程配置文件 {ansible deploy}/conf/dm-master.toml 中的配置

image

两个 dm-work IP 一样?

对 我在一个主机上安装的DM集群

我看端口也一样。一个 dm-work 只能对应一个 上游实例。如果还配置了分表 group,那一个 dm-work 最好也只对应一个上游实例中的一个 group

资源有限,上游mysql主机中,有4个端口的数据库,有的需要简单的从库同步到tidb中,有的需要合表到tidb中,而DM集群是在一个主机上配置的。像您说的,一个DM-worker只能对应一个实例,我这种场景没有办法实现了是吗,上次群里工作人员说,不建议把多个任务写在一个task.yaml中,所以我才分开写的任务

分开写 task 本身也是推荐的。在资源有限的情况下,只要端口不同,多个 dm-work实例也可以部署在同一台机器上,每个 dm-work 对应一个上游的 mysql 实例。

那可以修改dm-worker端口吗?

贴一下你的 inventory.ini

改一下 dm-work2的部署配置,设置不同的 server_id 以及 deploy_dir

按照这个在新建一个dm-worker2的目录对吧

是的。


![image|690x72] image (upload://daQUEOF7gOmLgNq85VqhqcUbJkP.png)

是不是 dm-work2 进程没启起来。排查下 dm-work.log