Mysql
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 引擎。錯誤日誌像剛下的雪一樣白!
所以,首先,我不太確定反對票。只是試圖解決核心問題。無論如何,關於問題本身,這就是發生的事情,
- 最近將 MariaDB 版本從 10.5 升級到 10.6。雖然升級很順利,但我錯過了一些小細節。
- 在日誌中找不到任何內容,我決定檢查導致我在某些欄位上使用“FULLTEXT”的表模式。
- 進一步探勘,我發現一些臭名昭著的 Wordpress 外掛在 wp_posts 表中引入了“FULLTEXT”,導致 MariaDB 生成此類索引。
- 問題是 MariaDB 10.5 和更早的版本並沒有真正費心創建這樣的索引。這讓我相信版本 10.6 中發生了一些變化。自從我想先解決這個問題以來,並沒有真正閱讀過多的更改日誌。
現在監控伺服器 2 天,一切似乎恢復正常!一路上學習了一堆 MySQL/MariaDB 的東西 :)