DockerのVolumeがとんでもなく肥大化してると思ったらMySQLのせいだった

Docker開発関連

保守してるサーバで、ディスク使用量が90%を超えたアラートが上がってきたので調べたときのメモになります。結論から言うと、DockerのVolumeじゃなくてMySQLの特定のテーブルidbファイルが200GB超えてたのが原因でした。

とりあえずディスク使用量を確認してみる

ディスク使用量をみるとdocker overlay2が90%以上使われていることが判明

df -h

ディレクトリごとのディスク使用量を調べてみる

とりあえずDockerのVolumeを調べていってみることに

du -sh   /調べたいパス   | sort -n | tail -10

結果的には肥大化しているのはoverlay2ではないことが判明。
どんどん調べていくとDocker MySQLでマウントしているVolumeが肥大化していることが判明。

原因

自分が開発したアプリではないため根本的な原因は不明ですが、MySQLの特定のテーブルのibdファイルが肥大化していることが判明(200GBを超えるファイルに成長してました)

そのテーブルに対してcountで件数取得してみましたが100件もないテーブルでした。。。
(予想としてdrop createとか大量insertからのdeleteとか何かやらかしてくれて中間テーブルのクラシュが起こったんじゃないかなと)

ibdファイルの縮小方法

肥大化したテーブルファイルはalter tableすることで縮小できます。

alter table テーブル名 engine=InnoDB;

200GBあったファイルが1MBになりました。

タイトルとURLをコピーしました