dm版本:v5.3.0
tidb各组件版本:v5.0.6
背景:
2周前从5.0.3升级到5.0.5,因kv oom的问题再升级到5.0.6,之后dm同步就出现重复key了,确认过上游没有重复数据,数据源都是一对一,
使用5.0.3时没有出现该问题,查询论坛帖子有看到tidb重试导致主键冲突, 启动后5分钟会开启safe_mode,据观察,resume后1分钟内就会出现重复key的异常,
报错日志:
[2022/01/13 07:34:59.396 +08:00] [ERROR] [subtask.go:336] [“unit process error”] [subtask=mysql] [unit=Sync] [“error information”="ErrCode:10006 ErrClass:“database” ErrScope:“not-set” ErrLevel:“hig
h” Message:“startLocation: [position: (, 0), gtid-set: ], endLocation: [position: (mysql-bin.000148, 120415934), gtid-set: ]: execute statement failed: commit” RawCause:“Error 1062: Duplicate entry ‘4616
294’ for key ‘PRIMARY’” "]
1 个赞
小王同学Plus
(小王同学 Plus)
2
1 个赞
根据文档排查过 ,目前是属于这个阶段
这个问题在每天2-3点数据量比较大的时候会出现,这个时间有办法修改吗?
1 个赞
这道题我不会
(Lizhengyang@PingCAP)
4
麻烦检查下在数据源配置中是否启用了 GTID(enable-gtid: true),且 DM worker sync 单元在读取 GTID 中间的 binlog 事件时遇到了 “connection refuse” 以外的错误。如果是的话可能是触发了 DM v5.3.0 中的一个 bug ,详见:https://github.com/pingcap/tiflow/issues/3711 ,预计会在 v5.3.1 中修复,临时解决方法:
- 在场景允许时使用 binlog position 同步(enable-gtid: false);或
- 开启 relay log
1 个赞
我这里多个数据源 有启用了GTID的 也有没有启用的, 都会出现这样的问题。
只是这个问题在升级到tidb5.0.6后出现。
1 个赞
这道题我不会
(Lizhengyang@PingCAP)
6
1.如果条件允许可以先按照上面提到的两种方法调整下,如果依然有问题那基本可以排除是这个 bug 导致的;
2.排除是 bug 原因后,可以按照 2 楼提供的思路再排查下。
1 个赞
zzsh
(Zzsh)
7
show status的结果发下
是update报错,还是insert报错呢?
1 个赞
全量同步时候出现的?把下游的表删了重新同步。。。。
1 个赞
蛋疼了, 下午开启relay log以后 同步就直接跪了,一直提示execute statement failed , 下游tidb里面找到[“batchRecvLoop re-create streaming fail”] [target=10.10.10.96:20160] [forwardedHost=] [error=“context deadline exceeded”]
感觉是语句执行不过去, 但是过一会重试他又能执行了,,,就是反复得重启执行, 这个要咋整?
1 个赞
上面得环境是 tidb在idc dm部署在别得地域, 遇到执行时间长或者超大得sql语句就会出现context deadline exceeded,尝试调整过net_write_timeout 没用
最后解决方案是把dm 移回去,从内网写入, 问题解决。
个人感觉,面对这样有跨地域同步数据得情况,可能是我参数不会调,感觉很是费劲。
system
(system)
关闭
11
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。