技術資料

XAMPPのMySQLが起動しなくなった時のデータ救出方法

作成日:2026.04.05

XAMPPのMySQL起動エラーでお困りの開発者向けに、データ損失を防ぎながら行なう応急的な復旧方法を詳しく紹介。通常の手段では解決しない場合、ファイルシステムレベルでのデータ救出技法を使う具体的な手順をまとめました。

XAMPPのMySQLが起動しなくなってしまった

原因はともかくとして、ローカルマシンで動かしているXAMPPのMySQLがデータ破損で起動しなくなってしまい、ひとまずMySQL内のデータをsqlファイルとして取り出したい、といった時のための手順メモです。

InnoDB Force Recovery モードで MySQL を起動してみてもうまくいかなかった場合などの参考に。

前提

MySQLのストレージエンジンとしてInnoDBを使用していること。

大まかな手順

  1. MySQLのデータディレクトリをバックアップする
  2. MySQLを一旦インストール直後のまっさらな状態にする
  3. 取り出したいデータのみ、データディレクトリを上書きする
  4. MySQLを起動して、データをsqlファイルとしてエクスポートする

以下、各手順の詳細です。

注意点

作業を始める前に、MySQLを完全に停止させてください。

また、この手順はデータの損失を引き起こす可能性があるため、慎重に実行してください。

1. MySQLのデータディレクトリをバックアップする

XAMPPのMySQLのデータディレクトリは、通常は以下の場所にあります。

C:\xampp\mysql\data

このディレクトリを丸ごとコピーして、別名で保存しておきます。例えば、C:\xampp\mysql\data_backup などといった名前で保存しておくと良いでしょう。このバックアップは、後で必要なデータを取り出すために使用します。

2. MySQLを一旦インストール直後のまっさらな状態にする

MySQLの初期状態のデータディレクトリは、通常、 C:\xampp\mysql\backup にあります。このディレクトリの中身は、

  • mysql/
  • performance_schema/
  • phpmyadmin/
  • test/
  • ib_logfile0
  • ib_logfile1
  • ibdata1
  • ……

のようなファイルやディレクトリが含まれています。これらの初期状態のデータの在処を確認した上で、以下の作業を行います。

続いて、MySQLのデータディレクトリを一旦削除して、まっさらな状態にします。前述の例で言えば、C:\xampp\mysql\data の中身を削除します。

空になったデータディレクトリに、初期状態のデータをコピーします。

これで、MySQLは初期状態のまっさらな状態になりました。

ここで一旦、MySQLを立ち上げてみて、正常に起動するかどうか確認してみましょう。初期状態のまっさらなMySQLが起動すればOKです。

※ユーザー権限なども初期状態に戻っているため、MySQLに root でログインする際のパスワードなども初期状態のものになります(XAMPPの場合、root でログインする際のパスワードは空文字列です)。

3. 取り出したいデータのみ、データディレクトリを上書きする

次に、バックアップしておいたデータディレクトリから、取り出したいデータのみをコピーして、まっさらな状態のデータディレクトリに上書きします。

例えば、sample_database という名前のデータベース内のテーブルを抽出したい場合、先ほどバックアップした C:\xampp\mysql\data_backup 内の sample_database ディレクトリが抽出対象になります。

この sample_database ディレクトリを丸ごと、先ほど初期状態に戻したデータディレクトリ C:\xampp\mysql\data 内にコピーします。

さらに、C:\xampp\mysql\data_backup 内にある ibdata1 ファイルをコピーします。

これで、取り出したいデータのみが入った状態のMySQLのデータディレクトリが完成しました。

改めてMySQLを起動して、データが正常に読み込まれていることを確認しましょう。

後は、mysqldump などでデータのエクスポートを行なって完了です。新たにインストールしなおしたMySQLにインポートするなどすればひとまず解決します。

ところで、 ibdata1 は何のファイル?

ibdata1 は MySQL の InnoDB ストレージエンジンが使用するデータファイルです。このファイルには、InnoDB テーブルスペースのデータとログ情報が格納されています。

MySQL では、InnoDB ストレージエンジンを使用している場合、テーブルのデータやインデックスなどの情報が ibdata1 ファイルに保存されます。したがって、ibdata1 ファイルをコピーすることで、InnoDB テーブルのデータを復元することができます。

ただし、ibdata1 ファイルは MySQL の内部構造に依存しているため、異なるバージョンの MySQL で使用する場合や、データベースの構成が異なる場合には、正常に動作しない可能性があります。そのため、データの復元を行う際には、同じバージョンの MySQL (あるいは XAMPP のバージョンも) を使用することが推奨されます。

じゃあ、データベース名のディレクトリには何が入っているの?

MySQL のデータディレクトリ内のデータベース名のディレクトリには、そのデータベースに関連するテーブルの定義ファイルや、テーブルスペースファイルなどが格納されています。具体的には、以下のようなファイルが含まれています。

  • .frm ファイル: テーブルの定義を格納するファイルです。テーブルの構造やカラムの情報などが含まれています。
  • .ibd ファイル: InnoDB ストレージエンジンを使用している場合、テーブルスペースファイルが格納されます。テーブルのデータやインデックスなどが含まれています。
  • db.opt ファイル: データベースのオプション情報を格納するファイルです。

というわけで、データベース名のディレクトリと、ibdata1 ファイルをコピーすることで、応急処置的にデータを復元できるわけです。

この記事を書いた人

※上が私です。

奈良市を拠点に、27年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。

これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。

【制作会社・企業様向けサポート】
  • 専任エンジニアのいない企業様に対するシステム面の不安を解消
  • 柔軟な契約形態や短納期での対応により、急なニーズにも迅速にサポート
  • システムの企画段階から運用まで、ワンストップでのサービスを提供

Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。

ぜひ、プロフィールWeb制作会社様向け業務案内一般企業様向け業務案内もご覧くださいね。

MySQLのUPDATE文を使ったカラム値の一括置換

2025.02.06

MySQLで特定のカラム内の文字列を簡単に置換する方法を紹介します。この記事では、UPDATE文とREPLACE関数を組み合わせて、効率的にデータを更新する方法を解説します。

MySQL

MySQLで新規カラムに既存データを一括登録する方法

2025.02.03

MySQLのUPDATE文を活用し、テーブルの新規カラム「更新日」に既存データ「作成日」を効率的に反映する手法を解説します。

MySQL

XAMPP環境にStrawberry Perlを導入する方法:Windowsでの設定手順

2025.01.27

Windows版XAMPPに同梱されている簡易版Perlを、より機能豊富なStrawberry Perlに置き換える手順を解説します。ダウンロードから環境変数の設定、動作確認まで、順を追って説明しています。

Perl XAMPP

XAMPP環境でPHPを8.1から8.3にバージョンアップする手順と注意点

2025.01.22

XAMPP環境のPHPを8.3にアップデートする際の具体的な手順を解説します。また、curl関連のエラーとその解消方法についても触れています。

PHP XAMPP

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP