dba-kit
(张天师)
1
现象:DM在出现连接 driver: bad connection
错误后,在重启task时候,报Duplicate entry
,导致任务失败。(PS:出现bad connection错误,是因为TiDB设置了wait_timeout=600
,而MySQL当时的更新频率很低,很长时间都没有数据写入,导致task的连接在空闲600s后被TiDB主动kill了,是符合预期的)
报错日志为:
按照文档的描述,在自动重试任务时候,默认应该会自动设置60s的safe_mode的,但是看表现并没有开启。
https://docs.pingcap.com/zh/tidb/stable/dm-safe-mode#自动开启
这算dm的缺陷吧,没有记录上次终断时间点实现断点续传啊
dba-kit
(张天师)
5
其实也有记录,不过是周期性记录到下游的TiDB里,并不实时写入,所以有时候会出错
你是怎么样发现 safe mode 没有开启的呢?有没有更多的日志方便排查?
dba-kit
(张天师)
7
日志里报了duplicate key,排查了一下记录确实是刚被插入的,只能是DM重复插入了两次。
有设置这个参数吗 safe-mode-duration
路在何chu
(Ti D Ber Ass Gn Qs R)
9
把之前数据删除,重新导入吧,感觉就是数据不一致的。重复插入了
不会实时写入 safe-mode 的结束位点,但是如果获取不到 safe-mode 退出位点的话会默认开启一段时间的 safe-mode 模式