Drainer:“receive big size binlog before unmarshal”,binlog文件写入失败导致OOM

【TiDB 使用环境】生产环境
【TiDB 版本】7.5.5
【操作系统】CentOS
【部署方式】云上部署(阿里云)
【问题复现路径】
7.21下午线上有未知大事务执行,此时服务正常
7.22早晨drainer开始持续OOM–>kill重启–>OOM–>kill重启,查看日志发现无报错,
但在不断尝试写入一个1.4G的binlog文件,失败拉起后会不断消耗内存资源直至OOM被kill
【遇到的问题:问题现象及影响】
drainer内存不断飙高,导致OOM,重新拉起后依然会OOM
【复制黏贴 ERROR 报错的日志】
[INFO] [pump.go:168] ["receive big size binlog before unmarshal"] [id=10.4.0.144:8250] [size="1.4 GB"] ["start ts"=459559195853979696] ["commit ts"=459559277669122472]
【其他附件:截图/日志/监控】



=============================2025-07-22 16:00:00==========================
问题解决:

第二天,数据库自动GC掉前一天的操作,drainer不再尝试写入bigsize的binlog,服务恢复正常

:thinking:是不是数据库有大事务?

我推测也是有大事务,但在start_ts对应时间节点前后没查到有明显操作的记录,就很迷

这么高的版本,还是用 ticdc 吧

1 个赞

如果允许,在v7.5.5版本强烈推荐使用ticdc,使用pump+drainer的方式弊端很多,官方也不建议使用,这个方式在高本版已经弃用。