Raspberry PiでMySQLが起動しなくなった(ディスク容量超過)

いつも通りにRasPi上のLAMPで構築したミニアプリにアクセスしようとしたところ、ロードページは表示されるものの肝心のコンテンツが表示されないという自体に遭遇。

昨日までは普通に使えていたのに……。

ということで急遽調査開始。

まずnetstat -antuでLISTENINGしているポート番号のリストを表示してみると……3306がない。80と443はあるのに。

MySQLが壊れたのかと青ざめながらサービス状態を確認。

$ sudo service mysql status
● mysql.service - LSB: Start and stop the mysql database server daemon
   Loaded: loaded (/etc/init.d/mysql)
   Active: failed (Result: exit-code) since 月 YYYY-mm-dd hh:ii:ss JST; 8min ago
  Process: 499 ExecStart=/etc/init.d/mysql start (code=exited, status=1/FAILURE)

mm月 dd hh:ii:ss keyberrypi mysql[499]: /etc/init.d/mysql: ERROR: The partition with /var/lib/mysql is too full! ... failed!
mm月 dd hh:ii:ss keyberrypi systemd[1]: mysql.service: control process exited, code=exited status=1
mm月 dd hh:ii:ss keyberrypi systemd[1]: Failed to start LSB: Start and stop the mysql database server daemon.
mm月 dd hh:ii:ss keyberrypi systemd[1]: Unit mysql.service entered failed state.

起動していません。なんてこったい。

しかし上記の起動しようとした際のログを見てみると気になる文言が。

ERROR: The partition with /var/lib/mysql is too full!

……もしかしてディスク容量が満杯になった?

ということでdf

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root        7.2G  6.9G     0  100% /

## 略

おーう。予想通り満杯じゃないですか。

こういう場合はログファイルが怪しい。ということで/var/log/を見てみましょう。

$ ls -al /var/log/
合計 130732
drwxr-xr-x 11 root    root        4096  6月  4  2017 .
drwxr-xr-x 12 root    root        4096  4月  9  2017 ..

## 略

-rw-------  1 root    utmp       21120  3月  4 20:57 btmp
-rw-r-----  1 root    adm     25256083  3月 18 22:09 daemon.log

## 略

drwxr-xr-x  2 root    root        4096  2月  9  2016 fsck
-rw-r-----  1 root    adm     22776606  3月 18 22:00 kern.log

## 略

-rw-r-----  1 root    adm     22119402  3月 18 22:00 messages

## 略

-rw-r-----  1 root    adm     50545163  3月 18 22:09 syslog

## 略

うーん、確かにかなり喰っている……。そういえばそうそうmicro SDカード満杯にはならないだろうと高を括ってログローテートとかそういうのを設定してませんでした。

ということでこの辺りのログを削除します。削除の際は一応mvしてから再起動し、新しいログファイルへの書き込みが発生していることを確認して削除するようにします。

例: daemon.log 削除の場合

$ cd /var/log/
$ sudo mv daemon.log daemon.log.old
$ sudo reboot

## 再起動後

$ cd /var/log/
$ rm daemon.log.old

こんな感じで上記の大き目のログを削除。

ついでに

  • apache2のログ
  • mysqlのログ
  • mongodbのログ
  • 古いcrowiのバックアップ

も削除して、何とか10%削除して正常に動くようになりました。……これでも10%ってことは、どこか他のところで喰ってるものと思われますが、とりあえず緊急しょちまで。

いやー、しかし壊れたのかと思って焦りました……。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。