为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:
- 【系统版本 & 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
检查一下配置: dm-master 进程配置文件 {ansible deploy}/conf/dm-master.toml
中的配置
两个 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-work2 进程没启起来。排查下 dm-work.log