ホームページ制作 オフィスオバタ

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から入れなおしていました。

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

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

作業にあたっての注意!

MYSQL復旧作業手順

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

モバイルバージョンを終了