🔖

mysqld: File './binlog.index' not found エラーが表示されたときに試して欲しいこと

2023/07/04に公開

概要

以下のエラーが表示され、MySQLのコンテナが立ち上がらなくなりました。

mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)

エラーについて調べてみると、権限についての記事がたくさん出てきました。
https://blog.csdn.net/dietime1943/article/details/127521443
https://codenote.net/mysql/339.html

権限について何も操作しておらず他のプロジェクトでは問題なかったのになぁ...と。

ですが、他のプロジェクトでも確認したところ同じようにMySQLのコンテナが立ち上がらなくなっていました。

確認するとエラーの内容が異なっており、容量が足りないというエラーが出ていました。

[ERROR] InnoDB: Write to file ./ibdata1failed at offset 0, 1048576 bytes should have been  written. Operating system error number 28. Check that your OS and file system support files of this size. Check also that the a disk quota exceeded.

容量を空けるとエラーが解決した

解決方法としては容量のエラーを解決すると、先ほどのエラーが表示されなくなりMySQLのコンテナが立ち上がるようになりました。

容量を空ける方法

まず、dockerデーモンによって利用されているディスク総容量に関する情報を表示して確認します。

dockerデーモンとはコンテナを管理するために常駐するプロセスで、呼び出された Docker Engine API に応じて、イメージのビルドやコンテナの起動などを行います。

docker system df

確認するとImages、Local Volumes、Build Cacheの容量がいっぱいだったので、それぞれ削除します。

Imagesの削除

-a(–all)オプションを追加して、コンテナに関連付けられていないイメージを全て削除します。

docker image prune -a

Local Volumeの削除

コンテナから参照されていないボリュームを削除します。

docker volume rm $(docker volume ls -qf dangling=true)

Build Cacheの削除

docker builder prune

容量の確認

もう一度確認すると、先ほどはいっぱいだった容量が空いています。

docker system df

MySQLのコンテナが立ち上がるようになりました!

終わりに

何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉

Discussion