看到此报错心里有数,mysql出现"the table is full"的问题,一般有两个常见原因:
一个是使用MEMORY 存储引擎时临时表大小设置太小导致,一般调整MySQL的配置文件两个参数重启即可:
tmp_table_size
max_heap_table_size
但是看报错日志中显然很多业务表都不是memory存储引擎而是innodb存储引擎的,故排除此原因。
另一种原因便是硬盘空间满了,清理硬盘即可。但是检查数据目录空间发现还有大量磁盘空间可用:
可以看出除了 ①磁盘空间满;②超过文件系统限制;③超过innodb单表表空间限制之外,其余全是关于MyISAM存储引擎和memory存储引擎引起的原因。显然这些都不符合我们现场的情况。
文档提示当磁盘空间还有较大盈余的时候,可能是ibdata1系统表空间文件无法继续扩展导致,此时无论是因为设置原因还是文件系统限制原因都会在SQL层抛出the table XXX is full的异常,遂马上检查ibdata1文件:
发现系统表空间文件ibdata2 已经5G ,达到最大限制了,迅速另行添加一个新的共享表空间文件,使数据库恢复正常。
Ibdata1系统表空间在设置了innodb_file_per_table(建议设置)的情况下会储存innodb表的元数据、change buffer、doublewrite buffer和undo log,如果多带带设置undo表空间的话,存储内容会更少,出现问题的频率也很低,所以平时运维极易忽略ibdata1,在巡检时也应添加上对该表空间的检查,自动扩展的值也应依据业务进行合理设置。
参考文档:
更多精彩干货分享
点击下方名片关注
IT那活儿
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129893.html
摘要:常见错误分析与解决方法总结一翻译不能连接到上的分析这说明计算机是存在的,但在这台机器上却没提供服务。解决同样对症下药,不同的原因不同的处理方法。九翻译有一个语法错误在你的中分析论坛标准的程序是没有语法错误的。表名,可以暂时解决问题。MySQL常见错误分析与解决方法总结 一、Cant connect to MySQL server on localhost (10061)翻译:不能连接到 ...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1858·2023-01-11 13:20
阅读 4099·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3594·2023-01-11 13:20