容量を多く食っているファイルの探し方
容量不足でDBのリストアに失敗
リストアしたテーブルを消しても容量不足が解消しない!
# ダンプからリストア mysql -u username -ppassword -D DBname < dumpfile.sql # 失敗時、こんなエラーが出てた cat /var/log/mysqld.log | grep ERROR 181205 22:19:45 [ERROR] /usr/libexec/mysqld: The table 'tablename' is full # fullと書いていたので、容量を確認: df -h # 容量不足だったことに気づく # 失敗したけど、テーブル消せばディスクもスッキリするかと思いきや、 mysql> DROP DATABASE DBname ; # 全然そんなことはなく df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 17G 20M 100% / tmpfs 935M 0 935M 0% /dev/shm /dev/xvda1 477M 115M 337M 26% /boot
犯人探し開始
# /var が少し大きい du --max-depth=1 / 2>/dev/null | sort -rn | head -5 17101533 / 9240268 /var 6129720 /root 923032 /usr 618600 /lib # /var/lib がとても大きい du --max-depth=1 /var/ | sort -rn | head -5 9240268 /var/ 9071248 /var/lib 103896 /var/cache 63524 /var/log 1328 /var/www # /var/lib/mysql がめちゃくちゃ大きい du --max-depth=1 /var/lib/ | sort -rn | head -5 9071248 /var/lib/ 9010384 /var/lib/mysql 53844 /var/lib/rpm 6888 /var/lib/yum 28 /var/lib/iscsi # このディレクトリ内に犯人はいる! du --max-depth=1 /var/lib/mysql/ | sort -rn | head -5 9010384 /var/lib/mysql/ 988 /var/lib/mysql/mysql 84 /var/lib/mysql/test # 特定しますた ls -al /var/lib/mysql/ 合計 9009324 drwxr-xr-x 4 mysql mysql 4096 12月 6 11:47 2018 ./ drwxr-xr-x. 17 root root 4096 12月 6 03:47 2018 ../ -rw-rw---- 1 mysql mysql 5242880 12月 6 11:47 2018 ib_logfile0 -rw-rw---- 1 mysql mysql 5242880 12月 6 11:47 2018 ib_logfile1 -rw-rw---- 1 mysql mysql 9215041536 12月 6 11:47 2018 ibdata1 # ★犯人★ drwx------ 2 mysql mysql 4096 8月 27 18:19 2018 mysql/ srwxrwxrwx 1 mysql mysql 0 12月 5 13:13 2018 mysql.sock= drwx------ 2 mysql mysql 4096 10月 11 10:48 2018 test/
犯人は何者?
調べてみると、下記のような記事が見つかった。
INNODBがなんか、変な大きいファイルを作るらしい。
追記: 【ibdata肥大化の対処方法】へ続く
cf. [MySQL] ibdata1のサイズを削減する手順 [InnoDB]
https://oshiire.to/archives/1684
cf. MySQL ibdataのデータサイズが肥大化した場合の対処方法。
https://qiita.com/kooohei/items/15607ffbc3226d636b3f
コメント