统计信息收集报错 Data too long for column 'upper_bound'

【 TiDB 使用环境】
【问题】:最近突然发现有个 TiDB 集群对应服务器 IO 异常高,经查有大量慢日志写入。最终定位到是 ANALYZE TABLE 频繁失败导致,具体如下:


请问这个问题怎么解决,报错字段并非业务表中的字段?
【业务影响】:IO 很高,暂未影响业务
【TiDB 版本】:v5.2.0
【附件】:

1 个赞

感觉像是统计信息这块的问题
https://github.com/pingcap/tidb/issues/30925
show create table mysql.stats_buckets;

ALTER TABLE mysql.stats_buckets MODIFY upper_bound LONGBLOB NOT NULL;
ALTER TABLE mysql.stats_buckets MODIFY lower_bound LONGBLOB;
ALTER TABLE mysql.stats_histograms MODIFY last_analyze_pos LONGBLOB DEFAULT NULL;

这样改应该就可以了,analyze的信息超长,超过了blob的存储范围,将存储表改成longblob就行,已知问题,5.3应该改了
https://github.com/pingcap/tidb/pull/28800

5 个赞

show variables like ‘%auto_analyze%’;看下 tidb_auto_analyze_ratio tidb_auto_analyze_start_time tidb_auto_analyze_end_time

高人~·:+1:

哈哈,也是看着像个bug,就在issue中搜到了

感谢超大佬,已按照文档修复!!:+1::+1:

1 个赞

:grinning::+1::+1::+1:

以前也碰到过这个bug,后面是打了hotfix外加 @db_user 上面那段,建议升级到最新的小版本或5.3试试

我这个版本,直接执行上面的三个 SQL 就修复了,后面可能会升级到最新的小版本。:grinning:

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