MariaDB 生成 INDEX_*.ibd 文件,占用大量服务器空间

MariaDB 生成 INDEX_*.ibd 文件,占用大量服务器空间

在深入探讨这个问题之前,先来了解一下背景知识,

我有一个基于 Wordpress 的博客,运行在 1 GB(RAM)、20 GB(磁盘空间)的 linode 实例上。数据库本身大约有 ~105 MB。最近,我注意到整个磁盘空间都被用完了(从 ~4 GB 开始),数据库目录/var/lib/mysql/DATABASE_NAME占用了大约 ~15 GB 的空间!

此目录中最严重的问题在于文件名以 结尾的文件_INDEX_1.ibd,每个文件占用了约 700 MB 到约 1.5 GB 的空间!快速搜索并没有找到太多有关此问题可能原因的信息。数据库运行正常。

数据库目录文件列表示例

在我管理服务器的有限经验中,我还没有真正遇到过这样的事情。如果能知道为什么会发生这种情况、可能的解决方案以及如何防止这种情况再次发生,那就太好了。

PS - 数据库表使用 InnoDB 引擎。错误日志像新雪一样洁白!

答案1

首先,我不太确定反对票是否成立。只是想弄清楚核心问题。不管怎样,回到问题本身,事情是这样的,

  1. 最近将 MariaDB 版本从 10.5 升级到了 10.6。虽然升级过程很顺利,但我还是忽略了一些细节。
  2. 由于在日志中找不到任何内容,我决定检查表模式,这导致我在某些字段上使用“FULLTEXT”。
  3. 进一步挖掘后,我发现一些臭名昭著的 Wordpress 插件将“FULLTEXT”引入到 wp_posts 表中,导致 MariaDB 生成这样的索引。
  4. 问题是 MariaDB 10.5 及更早版本并没有真正费心创建此类索引。这让我相信 10.6 版本中发生了一些变化。由于我想先解决这个问题,所以并没有真正阅读过太多的变更日志。

监控服务器已经两天了,一切似乎都恢复正常了!一路上学到了很多 MySQL/MariaDB 的东西 :)

相关内容