drainer同步建表语句,tidb可以 mysql报错,导致drainer直接飞掉

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v4.0.7
  • 【问题描述】:drainer同步建表语句,tidb可以 mysql报错,导致drainer直接飞掉 ;有没有什么设置可以忽略错误继续执行 不要让应用飞掉

2021/01/19 10:07:26.247 +08:00] [ERROR] [server.go:289] [“syncer exited abnormal”] [error=“failed to add item: Error 1118: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs”] [errorVerbose=“Error(upload://rk8QVECFr8RIPyGMPT9wZoAPDfF.txt) (6.0 KB) 1118: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs\ngithub.com/pingcap/errors.AddStack\ \t/home/jenkins/agent/workspace/build_binlog_multi_branch_v4.0.7/go/pkg/mod/github.com/pingcap/errors@v0.11.5-0.20190809092503-95897b64e011/errors.go:174\ github.com/pingcap/errors.Trace\ \t/home/jenkins/agent/workspace/build_binlog_multi_branch_v4.0.7/go/pkg/mod/github.com/pingcap/errors@v0.11.5-0.20190809092503-95897b64e011/juju_adaptor.go:15\ github.com/pingcap/tidb-binlog/pkg/loader.(*loaderImpl).execDDL\ \t/home/jenkins/agent/workspace/build_binlog_multi_branch_v4.0.7/go/src/github.com/pingcap/tidb-binlog/pkg/loader/load.go:431\ngithub.com/pingcap/tidb-binlog/pkg/loader.(*batchManager).execDDL\ \t/home/jenkins/agent/workspace/build_binlog_multi_branch_v4.0.7/go/src/github.com/pingcap/tidb-binlog/pkg/loader/load.go:748\ngithub.com/pingcap/tidb-binlog/pkg/loader.(*batchManager).put\ \t/home/jenkins/agent/workspace/build_binlog_multi_branch_v4.0.7/go/src/github.com/pingcap/tidb-binlog/pkg/loader/load.go:770\ngithub.com/pingcap/tidb-binlog/pkg/loader.(*loaderImpl).Run\ \t/home/jenkins/agent/workspace/build_binlog_multi_branch_v4.0.7/go/src/github.com/pingcap/tidb-binlog/pkg/loader/load.go:624\ngithub.com/pingcap/tidb-binlog/drainer/sync.(*MysqlSyncer).run\ \t/home/jenkins/agent/workspace/build_binlog_multi_branch_v4.0.7/go/src/github.com/pingcap/tidb-binlog/drainer/sync/mysql.go:237\ runtime.goexit\ \t/usr/local/go/src/runtime/asm_amd64.s:1357\ failed to add item”]

tidb 和 mysql 中表结构辛苦发现,另外提供下 tidb 版本和 tools 版本以及 mysql 版本,感谢配合。

drainer log 辛苦提供完整的,看下是否输出具体 sql 和 table name

table.txt (6.0 KB)

看了报错信息是建表脚本的varchar总长度超过了mysql的65535限制,所以建表失败,drainer报错信息只有上面贴出来的部分 ,后续修改了长度手动在备库建表 重启drainer就解决了

1 个赞

嗯,是的,上面就是解题思路,要先比对上下游的表结构,从基本的开始检查,这个报错直观感受是字段写入超限制了

我从日志里看了最后一次的ts,我按照文档在drainer里配置了 ignore-txn-commit-ts这个值,启动的时候报错 后来我尝试去掉 ignore-txn-commit-ts然后手动在下游建表 才能启动drainer

嗯,是可以的,跳过这个事务,并下下游创建正确表结构,nice