在深入探讨这个问题之前,先来了解一下背景知识,
我有一个基于 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
首先,我不太确定反对票是否成立。只是想弄清楚核心问题。不管怎样,回到问题本身,事情是这样的,
- 最近将 MariaDB 版本从 10.5 升级到了 10.6。虽然升级过程很顺利,但我还是忽略了一些细节。
- 由于在日志中找不到任何内容,我决定检查表模式,这导致我在某些字段上使用“FULLTEXT”。
- 进一步挖掘后,我发现一些臭名昭著的 Wordpress 插件将“FULLTEXT”引入到 wp_posts 表中,导致 MariaDB 生成这样的索引。
- 问题是 MariaDB 10.5 及更早版本并没有真正费心创建此类索引。这让我相信 10.6 版本中发生了一些变化。由于我想先解决这个问题,所以并没有真正阅读过太多的变更日志。
监控服务器已经两天了,一切似乎都恢复正常了!一路上学到了很多 MySQL/MariaDB 的东西 :)