DM 7.1.1在load阶段,报`batch write rows reach max retry 3 and still failed: invalid connection`

DM 7.1.1在load阶段,报batch write rows reach max retry 3 and still failed: invalid connection。在执行resume-task后,也没有自动恢复。
详细报错日志是:

[2023/08/28 19:13:47.391 +08:00] [ERROR] [chunk_process.go:476] ["write to data engine failed"] [task=test_mysql_task] [unit=lightning-load] [table=`test`.`serviced_page`] [engineNumber=0] [fileIndex=0] [path=test.serviced_page.0000000000000.sql:0] [task=deliver] [error="[`test`.`serviced_page`] batch write rows reach max retry 3 and still failed: invalid connection"]

看日志好像是因为执行SQL失败,失败的SQL包含,业务把图片BASE64编码后存放的字段

我的经验是,如果是sql执行失败,应该是有错误码,也会有具体的sql。
至少我这边dm如果出现这个invalid connection,基本都是连不上下游的tidb。可能是task文件中设置的tidb配置有问题。弄个mysql client连接一下tidb试试看。

BASE64编码后存放的字段 有多大?
估计你又遇到bug了

看了下,是两个json字段,最长的字段是11M。应该是6.5之后导入逻辑改成使用tidb-lightning来导入导致的,6.1时候,这个表的导入还没有问题


手动在dm-work的dump文件中删除这两条记录后,同步正常了。难道是某个地方的长度用了uint16,导致不支持大于65535的字段?

额,不是BUG,是下游数据库参数配置问题。在测试用DM同步是不是可以做到MySQL → MySQL的同步,就临时用docker镜像起了一个,默认配置的max_allowed_packet是4194304,而这两条记录都是超过4M的,所以插入失败了。
调整max_allowed_packet到1GB后,这个表也能导入成功了

不过奇怪的是,返回的报错没有错误码,只是告诉重试失败

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。