【XAMPP】MySQLが起動しなくなった時の復旧手順(データを消さずに直す)

MySQL

XAMPPを正しく停止せずにPCをシャットダウンしたり、XAMPPコントロールパネルを強制終了したりすると、次回起動時にMySQLが「Error: MySQL shutdown unexpectedly」と赤文字で表示されて起動しなくなることがあります。

これは、MySQLのデータ整合性を保つためのログファイルが破損してしまうことが原因です。

今回は、既存のデータベース(WordPressのデータなど)を完全に維持したまま、安全にMySQLを復旧させる手順を備忘録として残します。

復旧作業の全体的な流れ

作業のポイントは、「XAMPPが初期設定で用意してくれているバックアップファイル(初期状態のシステムファイル)」を使って起動環境を再構築し、そこに自分の作成したデータ(DBフォルダとibdata1)だけを戻すという点です。

⚠️ 注意

作業ミスによるデータ消失を防ぐため、作業を始める前に必ず xampp/mysql/data フォルダを丸ごと別の場所(デスクトップなど)にコピーしてバックアップしてください。

復活へのステップ

ステップ 1:既存の「data」フォルダを退避する

XAMPPのインストール先(通常は C:\xampp\mysql\)を開きます。
そこにある data フォルダの名前を data_old に変更します。

ステップ 2:新しく空の「data」フォルダを作る

同じ C:\xampp\mysql\ 内に、新規作成で空の data フォルダを作成します。

ステップ 3:初期テンプレートをコピーする

C:\xampp\mysql\backup フォルダを開き、中身をすべてコピーします。
コピーしたファイルを、先ほどステップ2で作った新しい data フォルダ内に貼り付けます。

ステップ 4:自分のデータベースフォルダを復元する

ステップ1でリネームした data_old フォルダを開きます。
自分で作成したWordPressなどのデータベースフォルダ(例: my_wordpress_db など)だけをコピーし、新しい data フォルダ内に貼り付けます。

※注意: mysql, performance_schema, phpmyadmin などのシステム関連フォルダはコピーしないでください。

ステップ 5:「ibdata1」ファイルを上書きする。

再度 data_old フォルダを開き、中にある ibdata1 というファイルのみをコピーします。
これを新しい data フォルダ内に貼り付け、上書き保存します。

※注意: ib_logfile0ib_logfile1 は破損の原因になっているため、絶対にコピーしないでください。

復旧の確認

すべての手順が終わったら、XAMPPコントロールパネルからMySQLの「Start」ボタンを押してみてください。無事に緑色のアクティブ状態になれば復旧完了です!

phpMyAdminやローカルのWordPressサイトにアクセスし、問題なくデータが表示されるか確認しましょう。

なぜこの方法で直るのか?

MySQL(InnoDB)は、データそのものを各DBフォルダ内に保存していますが、テーブルの構造や索引などの整合性メタデータを ibdata1 という共有スペースで一括管理しています。

そのため、「初期状態のきれいなシステム環境」に「自分のデータフォルダ」と「自分の ibdata1」を組み合わせることで、不整合を起こしていたログ(ib_logfile)だけをきれいに排除して安全に起動させることができるのです。

自動バックアップで備える

【XAMPP】スリープ復帰時にMySQLを自動バックアップ

コメント