XAMPPのMySQLは、PCの突然のスリープや強制終了などが原因で、たまにデータベース(データフォルダ)が壊れて起動しなくなることがあります。
壊れてから焦って復旧させるよりも、「壊れる前に自動でバックアップが取れている状態」を作っておくのが一番の特効薬です。
一定時間で自動的にバックアップを走らせるのが最も確実で安全。今回は、その自動化システムを構築する方法を備忘録としてまとめました。
1. バックアップ用バッチファイル(.bat)の作成
まずは、MySQLのデータを丸ごと別フォルダに退避させるスクリプト(バッチファイル)を作ります。
ステップ 1:メモ帳を開いてコードを貼り付ける。
デスクトップなどで右クリック >「新規作成」>「テキスト ドキュメント」を開き、以下のコードを貼り付けます。
@echo off
rem --------------------------------------------------
rem XAMPP MySQL 自動バックアップスクリプト
rem --------------------------------------------------
set XAMPP_DIR=C:\xampp
set BACKUP_DIR=C:\xampp_mysql_backup
rem 1. バックアップ保存先フォルダがなければ作成
if not exist "%BACKUP_DIR%" (
mkdir "%BACKUP_DIR%"
)
rem 2. バックアップを実行
echo バックアップを実行中...
rem 3. 既存のバックアップを「前回分(old)」としてローテーション
if exist "%BACKUP_DIR%\data" (
rd /s /q "%BACKUP_DIR%\data_old" 2>nul
xcopy "%BACKUP_DIR%\data" "%BACKUP_DIR%\data_old" /e /i /y >nul
)
rem 4. 現在の正常なdataフォルダをコピー
xcopy "%XAMPP_DIR%\mysql\data" "%BACKUP_DIR%\data" /e /i /y >nul
echo バックアップが完了しました。ステップ 2:拡張子を「.bat」にして保存する。
メモ帳のメニューから「名前を付けて保存」を選び、以下のように設定して保存します。
- ファイル名:
mysql_backup.bat - ファイルの種類:
すべてのファイル (*.*) - 保存場所:
C:\xampp\直下(※わかりやすい場所ならどこでもOK)
💡 このスクリプトの仕組み
実行するたびに
C:\xampp_mysql_backup内に「最新(data)」と「1世代前(data_old)」の2つのバックアップを自動でキープします。容量を無駄に圧迫せず、常に最新に近い状態を維持できます。
2. Windowsのスリープ復帰時に「自動実行」させる設定
Windows標準の「タスク スケジューラ」を使い、PCがスリープから復帰したシステムイベントを検知して、先ほど作ったバッチファイルを自動起動させます。
ステップ 1:タスクスケジューラを起動する
Windowsのスタートボタン(または検索バー)で「タスク スケジューラ」と検索して起動します。
ステップ 2:新しいタスクを作成する
右側の操作メニューから「タスクの作成…」(※「基本タスクの作成」ではないので注意)をクリックします。
- 名前:
XAMPP MySQL Backup (定期実行版) - 説明:
1時間毎に自動でMySQLのデータを退避します。
ステップ 3:トリガーを設定する
「トリガー」タブを開き、「新規…」ボタンを押します。
- 一番上の「タスクの開始」で「スケジュールに従う」を選択します。
- 設定で「毎日」を選ぶ。
- 詳細設定で繰り返し時間を1時間、継続時間を無期限。
「設定」タブを開き、
- 「スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する」にチェックを入れる。
- 「OK」を押して閉じます。
ステップ 4:バッチファイルを指定する
「操作」タブを開き、「新規…」ボタンを押します。
- 操作が「プログラムの開始」になっていることを確認します。
- 「プログラム/スクリプト」の参照ボタンを押し、先ほど作成した
mysql_backup.batを選択します。 - 「OK」を押して閉じます。
まとめ
1時間毎に自動バックアップ体制さえ整えておけば、万が一MySQLが壊れても数秒でデータを復旧できます。ローカル開発の保険として、ぜひ設定しておくことをおすすめします!



コメント