为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:
dm版本:1.0.2
- 【问题描述】:
新添加一个task任务(start-task task/office_saos_aftersale_test.yaml ),执行到loader阶段就报错了,重试了几次都不行,
1、task的配置:
2、报错信息
3、woker节点的报错日志
dm-worker.log.bak (1.6 MB)
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
从错误信息来看是写下游失败,而且是报 duplicate entry 错误,请确认下游的表结构是不是有 unique key
这个是我重复执行导致的,稍等,我把任务清空,重新来一遍
报错信息:
[dm-worker.log.bak|attachment]
woker节点的日志
(upload://tGnNkTOkmanGBvq49MZDdk5zkRU.bak) (1.9 MB)
下游没有写入,只有从dm一个入口写入,为啥会primary key 有重复呢,如何解决这个问题
1、
2、
3、dumper不会产生重复的insert吧,除非有bug
我刚才重新来了一次还是不行
小王同学
13
可以在 dump 的文件中 grep 一下上面报错的主键 142,看是否存在于多个文件中。DM在同步中load状态下显示主键冲突,但是resume-task可直接恢复
resume-task之后又有了其他冲突,但是原生dump数据就一条
小王同学
16
可以在 dump 目录下统一搜索一下是否存在该值,是否有多个 sql 文件 ?
看上面描述新增同步任务,这边还有其他的同步任务在启动吗 ? 可以在下游查看一下该语句是否存在,另外 load 阶段遇到主键冲突,不建议执行 resume-task,问题并没有完全解决。下次读到该文件仍然有主键冲突的报错。
整个过程我又重新来了一遍还是这样
1、dump 目录只有这一个sql文件,并且这个文件里面的insert也没有主键冲突的记录
2、我上游mysql上一个实例下面有多个数据库,已经有其他task任何在同步其他库了,这个task只同步saos_aftersale这个库
3、下游已经insert过了这条sql
4、从woker的日志看,报错这个sql执行了两次loader,问题应该就出在这里了,为啥会执行两次呢
这条sql重复loader,需要查为啥重新执行loader