GBase 8a
其他
文章

查询系统表导致/tmp目录满,报错Incorrect key file for table '/tmp/#sql32256a27327.MYI'; try to repair it.

发表于2024-08-24 23:02:1148次浏览0个评论

一、问题现象

1. 客户端执行存储报错 can't create/write to file /tmp/#sql32256a27327.MYI';
2. 查看system日志显示 Incorrect key file for table '/tmp/#sql32256a27327.MYI'; try to repair it;
3. 系统表cluster_load_result查询为空。

二、问题分析

1. df -h 查看/tmp 目录大小(10g);再执行存储过程时du -sh /tmp 查询/tmp占用空间大小(9.9)。发现当前/tmp占用99%;
2. 查询系统表gssys引擎表时,在查询时转化为定长格式存储落地的临时Gssys系统表,会在/tmp目录产生#开头的临时大文件;
3. 根据此现象和原理判断对应存储过程涉及到系统表查询,并根据现象3 判断对应存储涉及到cluster_load_result和load_result查询;
4. 查看管理节点的日志目录位置的load_result.log文件,已经有50万行+。

三、解决方案

1. 扩大/tmp目录挂载大小,建议从10G扩大至50-100G;
2. 清空load_result.log文件(保留最后1000行即可);
3. 升级数据库版本至9.5.3.28,优化系统gssys引擎表查询时定长格式落地临时文件为变长格式落地临时文件,已解决占用大量/tmp目录问题。

评论

登录后才可以发表评论