初めに
docker compose を利用して MySQL + 他コンテナを立てて開発をしていたところ、突如としてDBが立たなくなってしまった...
また同様の問題に立ち会うこともあると思うので備忘録として記事に残します。
環境
本編
起きた事象
立ち上がりはするがその後すぐに落ちてしまう。
2024-04-03 13:49:08 2024-04-03 13:49:08+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started. 2024-04-03 13:49:12 find: '/var/lib/mysql/mysql.sock': No such file or directory 2024-04-03 13:49:13 find: '/var/lib/mysql/mysql.sock': No such file or directory 2024-04-03 13:49:13 chown: cannot access '/var/lib/mysql/mysql.sock': No such file or directory 2024-04-03 13:49:13 chown: cannot access '/var/lib/mysql/mysql.sock': No such file or directory
ログの意味
mysql.sock ファイルが無いと言われたが mysql.sock とはいったい何ぞや?
mysql.sock is 何
* サーバーとクライアントの通信にはソケット通信とTCP通信があるよ
* MySQLサーバーとクライアントでソケット通信するためのファイルだよ
はぇ〜なるほど...上記のファイルが無いから落ちてると...
確認
※ ここは試行錯誤パート、解決方法はこちら ※
困った時はまず再起動、ってことで本体を再起動するもログは変わらない。
該当ディレクトリ(/var/lib/mysql/
)はホストマシンのディレクトリをマウントしているのでそこを確認する。
あれ?ホストマシンにはあるぞ?
てことは権限周りとかでうまくマウント出来てないのか?
drwxr-xr-x@ 23 i-icc staff 736 Apr 7 16:24 db/ com.apple.provenance 11 com.docker.grpcfuse.ownership 20
権限周りは大丈夫そう...
解決
この issue にこのような記述があった
I am getting the same error. If I remove the mysql.sock symlink from my host directory before starting the container, the container starts up just fine (recreating the symlink in the host directory).
ホストマシンの mysql.socket を削除すればいいと言う。
解決!!!
これだけでよかったんですね。
原因
思い返すと直前にPCが固まり、正しい手順でコンテナを止めずに再起動をしていたような...?
上記のせいで本来削除されるべきファイルが残ってしまい今回の現象が起きてしまっていたんですかね?
また、同じ現象にぶつかる気がするのでその時はこれを読み返します。