サーバを強制停止したらmysqlが起動しなくなった
さくらVPSで管理しているサイトにアクセスしたら、アクセスできなくなってしまいました。
完全に落ちているわけではないようですがエラーになってしまいます。
サーバに直接ログインしても中々反応が返ってこない状況です。さくらVPSの管理コンソールにログインして強制的に再起動することにしました。
再起動後サイトにアクセスしてもつながりません。
そのサイトではmysqlを使用しているのですが、確認したところmysqlが起動していませんでした。
そこで起動するわけですが、以下のメッセージが出力されます。
1 2 3 4 |
# service mysqld start Another MySQL daemon already running with the same unix socket. Starting mysqld: [FAILED] # |
動いているといっています。
しかしプロセスを確認してもmysqlは起動していません。
1 2 |
# ps -ef |grep msyql | grep -v "grep" # |
結論からいうと今回の原因は、「mysql.sock」が存在したこと。
このファイルは「サーバーがローカルのクライアントと通信する際に使用する UNIXのソケットファイル」で、MySQLが起動した状態のみ存在することになります。
MySQLを起動した場合、mysql.sockファイルが作成されます。作成される場所はmy.cnfファイルに「socket」として書かれています。以下のように記述されている場合は「/var/lib/mysql/mysql.sock」ファイルが作成されます。ちなみにサイズは0。
1 2 3 4 5 |
[mysqld] socket=/var/lib/mysql [client] socket=/var/lib/mysql |
正しい手順で停止した場合は、同ファイルは削除されます。
強制停止をした場合は削除されずに残ってしまいます。
起動する前に同ファイルが存在すると起動チェック時に「起動しているよ」と言われてしまいますので削除するかリネームしましょう。
1 2 |
# mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bk # service mysqld start |
これでMySQL側の対応完了です。その後はサイトにも無事アクセスできました!