DM工具显示Error 8004: Transaction is too large, size: 104857740

【概述】 场景 + 问题概述
我正在使用DM工具从mysql同步数据到TiDB,但是发现有个任务pause,显示报错:Error 8004: Transaction is too large, size: 104857740

我上游mysql设置的max_allowed_packet是16MB,理论上不会导致下游出现100MB的大事务,请问这种问题该如何排查呢?

2 个赞

performance.txn-total-size-limit tidb改大这个参数,限制事务大小的

2 个赞

其实我是知道如何修改tidb事务配置的,但是我不明白的事情是,上游已经限制过16MB,为何到了下游还会放大成超过100MB?

1 个赞

max_allowed_packet限制的是一个数据包的最大大小,而不是单个事务的最大大小

2 个赞

你好,max_allowed_packet是我这边误解了。

但是我把DM报错大事务的binlog拉下来,用该命令查询后,发现并无大事务。
grep “GTID$(printf ‘\t’)last_committed” -B 1
| grep -E ‘^# at’ | awk ‘{print $3}’
| awk ‘NR==1 {tmp=$1} NR>1 {print ($1-tmp);tmp=$1}’
| sort -n -r | head -n 10

917526
916286
915630
915161
913321
912913
912785
911841
911345
910905

而且还有个现象,DM报出该错误后,过一会又开始继续恢复同步了(并非重试,而是真正的偏移量在推进)

2 个赞

目前将DM5.4降级到5.3似乎不会报出大事务的错误。
具体我再观察下

很奇怪,可以把当时dm-worker的日志,dm的版本和配置文件发下么

该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。