開発用に MySQL サーバーをいくつか用意しているが、気づいたら停止していた。MySQL が止まるなんて珍しいと思っていたら、システム全体がハングアップしていた。熱暴走の季節でもないのに不吉な感じだが、よく止まるマシンなのであまり気にせず再起動した。システムは正常に動作しているが、MySQL に接続できない。調べてみると、MySQL の待ち受けポートである 3306を Listen していない。自動起動の設定を忘れていたのだろうと思い、起動してみると・・・
[root@server ~]# /etc/init.d/mysqld start Another MySQL daemon already running with the same unix socket. mysqld を起動中: [失敗]
失敗。念のため、start ではなく restart してみたが結果は同じ。エラーメッセージに従って、おとなしく調べることにした。まずは MySQL サーバーのログから。
[root@server ~]# tail /var/log/mysqld.log 131203 3:53:49 [Note] /usr/libexec/mysqld: Shutdown complete 131203 03:53:49 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 131203 03:53:51 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 131203 3:53:52 InnoDB: Initializing buffer pool, size = 8.0M 131203 3:53:52 InnoDB: Completed initialization of buffer pool 131203 3:53:52 InnoDB: Started; log sequence number 0 16039597 131203 3:53:52 [Note] Event Scheduler: Loaded 0 events 131203 3:53:52 [Note] /usr/libexec/mysqld: ready for connections. Version: '5.1.71' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
ん?
さっき再起動したはずなのに、昨日のログしか残っていない。どうやら、/var/lib/mysql/mysql.sock が残っているのが原因のようだ。
[root@server ~]# ls -al /var/lib/mysql/ 合計 28720 drwxr-xr-x. 12 mysql mysql 4096 12月 3 03:53 2013 . drwxr-xr-x. 21 root root 4096 5月 28 14:41 2013 .. ... srwxrwxrwx. 1 mysql mysql 0 12月 3 03:53 2013 mysql.sock ...
確かに残ってた。
ps で確認しても mysqld_safe はいないので、rm したところ MySQL があっさり起動。stop か restart すれば、init スクリプトが Unix ドメインソケットのファイルも削除してくれるものだと勝手に思い込んでいたので、少し調べるのに時間がかかった。あまり起きてほしくない事象だが、起きたときのために念のためにメモを残しておくことにした。