xampp のMYSQLが起動しない問題に対処

私はPHPでの開発のプラットフォームとして、xamppを使用しています。
パソコン上でMYSQLを含むテストサーバーを構築でき、作業効率が良いためです。

ところが、先日xamppのMYSQLが起動しなくなる現象が発生しました。
開発環境のため、すぐに問題にはなりませんが、テストデータが全部使えなくなるのは少々面倒です。

そこで、なんとか復旧できないものかとググりやってみたところ、復旧ができました。
忘備録として記録いたします。

現象はこのような感じです。

MYSQL shutdown unexpectedly. 云々と表示され、MYSQLが一切動かなくなりました。
当然PHPの開発も止まってしまいます。

原因はMYSQLデータの破損

MYSQLには、MYSQL内に管理データが存在しています。
それが破損するとMYSQLが起動しなくなります。

ググってみるとxamppの場合、MYSQLを正しく終了させずにパソコンの電源をOFFにしたりすると、MYSQLの一部データが破損することがあるようです。

今回の場合は、推察ですがxampp動作中にパソコンをスリープ放置で現象が発生したようでした。

ワンチャン復旧できる可能性があります。

xamppでMYSQLが起動しなくなる現象は今まで度々起こっていました。
その都度、MYSQLを1から入れなおしていました。

今回、ググってみると復旧できる可能性があることがわかりました。
そこで早速試してみました。

テスト環境はバックアップも容易なので、こんな場合は躊躇せずに作業できます。

作業にあたっての注意!

  • xamppは必ず停止した状態で作業しましょう。
  • データ破損度合いによっては復旧できない場合もあります。

MYSQL復旧作業手順

現在のdataフォルダをリネームし、新しい空のdataを作成する

mysql\data フォルダにはMYSQLのデータが入っています。
リネームするのは、元データを消さないで残しておくためです。
新しく作成したdataフォルダに、新しいMYSQL環境を構築します。

backupフォルダの中身をdataフォルダへコピーします。

mysql\backupフォルダに、MYSQLの初期データが保存されています。
これ中身を空のdataフォルダにコピーすることで最低限の状態でMYSQLが起動できるようになります。
ただし、データはすべてない状態なので、ここからデータを復旧する作業をします。

もともとのMYSQLデータを新しいdataフォルダにコピーする

もともとのdataフォルダ(data_old)から復旧したいDBデータをコピーします。
その際に次のフォルダはコピーしてはいけません。

  • mysqlフォルダ
  • performance_schemaフォルダ
  • phpmyadminフォルダ
  • その他ファイル

古いdataフォルダからibdata1ファイルを新しいdataフォルダにコピーします

最後に、古いほうのdataフォルダ(data_old)からibdata1ファイルを新しいdataフォルダにコピーします。

これをやらないと、データが空っぽの状態で復旧されます。

データをコピーしてxamppでMYSQLが起動できれば復旧完了です

今回はこれでMYSQLが復旧しました。
phpmyadminで見てみると、データの中身も復旧できていました。

ちなみにユーザーアカウントは全部消えているので、設定しなおす必要があります。

この作業をすると、データは復旧できますが、ユーザーアカウントは全部消えます。
ユーザーアカウントを再設定する必要があります。

ただ、データが復旧できているならば、ユーザーアカウントの再設定ぐらいどうということはありません。

あきらめかけていたことが何とかなるのはうれしいものです。

いままで同様の現象が発生した場合は、あきらめてMYSQLを初期インストールしていました。
データはバックアップがあれば、インポートして復旧していました。
それはそれで何とかなるのですが、開発中のデータが消えたときはなんともやるせない感じになります。

今回、正しくデータをコピーしなおすだけで復旧できました。
最初は、どうせ失敗するだろうな・・と思っていましたが、ちゃんと復旧できたため、かなり助かりました。

なにごともまずやってみることは大事です。

今回のレポートは以上です。
読んでいただいてありがとうございました。


ホームページに関するお悩み事やご相談事がございましたら私どもまでご連絡ください。 鋭意ご対応申し上げます。
ホームページのご提案もさせていただいております