MySQL が "Manager of pid-file quit without updating file." と表示して起動しなくなった場合の対応

実行環境を書いてしまうと特定されてしまうので端折るから「?」な部分もあるけど,いろいろ調べたのでメモメモ.

まず,上記のエラーメッセージを吐いて起動しなくなる原因は,主に4つあるとのこと.

  1. 権限の設定が不適切
  2. MySQL の pid ファイルが残っている
  3. MySQL のプロセスが生き残っている
  4. 設定ファイルの記述に誤りがある

1は見直せばよいとして,2に関してはちょっと強引だけど

# find / -name *.pid

で探せるし,3も

# ps ax | grep mysql

で探せる.

エラーメッセージが表示されたあとに,find も ps もしてみたけど,引っかかるファイルもプロセスもなかった.なので,4ということになる.加えて,"mysql_install_db" を実行したときに「"skip-federated" なんてオプション知らないよ」と MySQL に怒られるのでますます設定ファイルを疑う.

設定ファイル(/etc/my.cnf)を以下のようにして "skip-federated" をコメントアウトし,

[ /etc/my.cnf ]
 :
#skip-federated
 :

MySQL を起動してみると,今度は InnoDB に関する設定についてのエラーメッセージを吐くようになった.↑と同様に「そんなオプションは知らない」と言うのだ.そこで,MySQL をインストールしたときの configure オプションを見直すと,なんと InnoDB を有効にするような設定になっていなかったことが判明(ここで新たに,今まで InnoDB なテーブルが作成できていたことが謎になってしまった).

というわけで,InnoDB を有効にする設定で configure → make → make install をして再インストール.

再インストール後も,「"skip-federated" なんてオプション知らないよ」と言われるので,同じようにコメントアウトInnoDB に関する設定は有効にしたままに.これで,"mysql_install_db" も出来るし,MySQL も起動するようになった.

根本は人為的な問題なんだけどそれは書けないので...とりあえず調査内容と対応は残せるのでいいとしよう.勉強になった.

#今まで InnoDB なテーブルを作成出来ていた謎は未解決.