为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:3.0.9
- 【问题描述】:tidb使用drainer同步下游mysql时drainer.log一直报死锁错误,同步延迟在5-10分钟。 报错如下 error="Error 1213: Deadlock found when trying to get lock; try restarting transaction
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
您好,我也遇到了这个问题。
V4.0.0
tidb.log没有死锁的日志。但drainer.log一直提示:
error="Error 1213: Deadlock found when trying to get lock; try restarting transaction
另外,
1、drainer的配置文件中
disable-dispatch = false
. 是否会对sql的执行顺序有影响?
2、在启动drainer之前,有过强制终止一个pump的进程,是否会导致binlog的写入错乱,从而导致drainer在读取执行binlog时死锁?
谢谢。
这个应该不影响上下游数据同步,可以通过 sync-diff- inspector 工具确认一下数据是否一致。
-disable-dispatch
是否禁用拆分单个 binlog 的 sqls 的功能,如果设置为 true,则按照每个 binlog
顺序依次还原成单个事务进行同步( 下游服务类型为 mysql, 该项设置为 False )
如果其中一个 pump 强制终止了,可能会导致 drainer 无法同步,等待 pump 恢复了才会修复。