MySQLが再起動できなくなった

MySQLを停止して、起動しようとしたらエラーした

  • 停止

/etc/rc.d/init.d/mysql stop


した後に

  • 起動

/etc/rc.d/init.d/mysql start


ここで失敗。何故か起動できない(泣)

試す

まずは、mysqlとか打ってみる。当然起動しないで、以下のようにエラーする。

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

エラーメッセージでググる

このエラーが発生する原因には以下の3つが考えられます。
MySQLサーバーが起動していない
MySQLサーバーで使っているUNIXソケットとクライアントソフトで使っているUNIXソケットのパスが違う
・なんらかの理由でソケットファイルが削除されている


3番目のやつが怪しいと思い(でも実際は違った)、ソケットファイルをfindしてみる。

find -name mysql.sock


何も返ってこなかったので、ソケットファイルが消えたんだと勘違い。
ソケットファイルは起動時にできるものなので、今回のように起動できないエラーとは関係ない。

エラーログを見てみる

最初からそうしろよーという感じですね。ごめんなさいm(_ _)m
MySQLのエラーログは、ホスト名.errというファイルらしいのでfindしてtailしてみた。

  • エラーログ

080326 11:23:53 mysqld started
080326 11:23:53 [ERROR] /usr/sbin/mysqld: unknown variable 'long_query_time = 3'


げげっ。unknown variableで怒られている。原因はこれだ。
設定ファイルを見に行くと・・・

  • my.cnf

[mysqld]
set-variable = long_query_time = 3


コメントアウトしてみて起動する。・・・お、起動できた☆
最終的には以下のように書き直して起動。

  • my.cnf修正版

#config slow-query-log
log-slow-queries = /var/log/mysql/mysql-slow.log
long_query_time=3
log-queries-not-using-indexes


起動できた。ソケットファイルも起動したらできた。

[root@server/]find -name mysql.sock
./var/lib/mysql/mysql.sock


最初mysqlで「Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'」とでたのは、単にmysqldが起動してなかったからですね。恥ずかしいorz
また、今回起動できなかったということは、前回「set-variable」って書いた時には再起動していなかった可能性が高い。これまた悲しい。