XAMPPのMySQLが起動しなくなった時のデータ救出方法
作成日:2026.04.05
XAMPPのMySQL起動エラーでお困りの開発者向けに、データ損失を防ぎながら行なう応急的な復旧方法を詳しく紹介。通常の手段では解決しない場合、ファイルシステムレベルでのデータ救出技法を使う具体的な手順をまとめました。
目次
XAMPPのMySQLが起動しなくなってしまった
原因はともかくとして、ローカルマシンで動かしているXAMPPのMySQLがデータ破損で起動しなくなってしまい、ひとまずMySQL内のデータをsqlファイルとして取り出したい、といった時のための手順メモです。
InnoDB Force Recovery モードで MySQL を起動してみてもうまくいかなかった場合などの参考に。
前提
MySQLのストレージエンジンとしてInnoDBを使用していること。
大まかな手順
- MySQLのデータディレクトリをバックアップする
- MySQLを一旦インストール直後のまっさらな状態にする
- 取り出したいデータのみ、データディレクトリを上書きする
- 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制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
XAMPPのMariaDBでERROR 1130が発生したときの復旧手順
2026.08.05
XAMPPのMariaDBでERROR 1130が発生し、phpMyAdminやCLIから接続できなくなった際の復旧手順を紹介します。接続先とプロセスを確認し、データディレクトリをバックアップした上で、復旧モードから破損したmysql.global_privを検査・修復し、通常起動後の接続確認まで行います。
MySQLのLOAD DATA LOCAL INFILEの使い方:設定からファイルの読み込み確認まで
2026.10.20
MySQLのLOAD DATA LOCAL INFILEで、手元のファイルをテーブルへ読み込む方法を解説します。サーバー・クライアント双方の許可設定から、3行のデータを使った読み込み例、警告・件数・値の確認、読み込めない場合の切り分けまで紹介します。
MySQLのビュー(VIEW)入門:テーブルとの違いと使いどころ
2026.10.18
MySQLのビュー(VIEW)とテーブルの違い、ビューが役立つ場面を解説します。CREATE VIEWによる作成方法を、注文データの抽出・集計例で紹介。元データの変更との関係や、更新・性能・参照権限の注意点も整理します。
MySQLの正規表現でタイムアウト(Error Code 3699)が発生する原因と対処法
2026.10.17
MySQLの正規表現で発生する「Error Code 3699」の原因と対処法を解説します。SQLやパターンの見直し、一時テーブルを使った検索と整形の分離、最終手段としてのregexp_time_limitの変更と注意点を紹介します。