gravity icon indicating copy to clipboard operation
gravity copied to clipboard

表里有longtext字段,全量同步数据到tidb时报错

Open selectliu opened this issue 6 years ago • 6 comments

由于历史原因,mysql的表里有longtext字段,字段里面存放了大量的数据,类似如下图,这个字段数据大概有30k

图片

同步的时候报错了,报错如下图,只有这一个报错信息,打印出来的是同步的数据,看不出来具体报错信息,前面的日志都是正常的 图片 图片

selectliu avatar Dec 09 '19 14:12 selectliu

再找找具体的报错?这样看不出什么。longtext 本身是支持的。 实在不行改一下打日志的代码

Ryan-Git avatar Dec 10 '19 02:12 Ryan-Git

没有具体的报错。前面的日志都是正常的日志,就是这个字段的内容太多了,字段内容超过30k 基本就会出问题。longtext字段里面如果内容较少也不会出问题。

selectliu avatar Dec 10 '19 03:12 selectliu

报错不在前面,就是很长的那条里面,不确定有没有被你们的 ELK 截断。把报错那行截全了看看?

或者人工/写脚本执行一个同样的 sql 看看报错?这种基本上是碰到 tidb 的什么限制了。

改代码的话在这里

Ryan-Git avatar Dec 10 '19 06:12 Ryan-Git

图片 是截断了,到后台截了最后几行的报错信息,前面全是数据,数据太大了,截不全。

人工脚本到tidb执行没有问题的。 gravity 同步的时候,不停的pause resume尝试,这些报错的数据有会同步过去。然后到下一条超大的数据,又不可以了

selectliu avatar Dec 10 '19 07:12 selectliu

方便改代码吗?把 pkg/sql_execution_engine/internal_txn_tagger.go:51 从

return errors.Annotatef(err, "query: %v, args: %v", query, args)

改成

return errors.Annotatef(err, "query: %v", query)

Ryan-Git avatar Dec 10 '19 10:12 Ryan-Git

@selectliu 有复现? 是否达到TiDB如下限制: 单个事务包含的SQL语句不超过5000条 操作的单条记录不超过 6MB 事务操作的总keys不超过 30w 事务操作的所有记录总大小不超过 100MB 另外看一下,如果将下游的batch-size修改小一点,是否可以正常worker

xialuo1990 avatar Dec 26 '19 11:12 xialuo1990