【XAMPP】定時でMySQLを自動バックアップ

MySQL

XAMPPのMySQLは、PCの突然のスリープや強制終了などが原因で、たまにデータベース(データフォルダ)が壊れて起動しなくなることがあります。

壊れてから焦って復旧させるよりも、「壊れる前に自動でバックアップが取れている状態」を作っておくのが一番の特効薬です。

一定時間で自動的にバックアップを走らせるのが最も確実で安全。今回は、その自動化システムを構築する方法を備忘録としてまとめました。

1. バックアップ用バッチファイル(.bat)の作成

まずは、MySQLのデータを丸ごと別フォルダに退避させるスクリプト(バッチファイル)を作ります。

ステップ 1:メモ帳を開いてコードを貼り付ける。

デスクトップなどで右クリック >「新規作成」>「テキスト ドキュメント」を開き、以下のコードを貼り付けます。

BAT (Batchfile)
@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. 一番上の「タスクの開始」で「スケジュールに従う」を選択します。
  2. 設定で「毎日」を選ぶ。
  3. 詳細設定で繰り返し時間を1時間、継続時間を無期限。

設定」タブを開き、

  1. スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する」にチェックを入れる。
  2. 「OK」を押して閉じます。

ステップ 4:バッチファイルを指定する

操作」タブを開き、「新規…」ボタンを押します。

  1. 操作が「プログラムの開始」になっていることを確認します。
  2. 「プログラム/スクリプト」の参照ボタンを押し、先ほど作成した mysql_backup.bat を選択します。
  3. 「OK」を押して閉じます。

まとめ

1時間毎に自動バックアップ体制さえ整えておけば、万が一MySQLが壊れても数秒でデータを復旧できます。ローカル開発の保険として、ぜひ設定しておくことをおすすめします!

万が一、MySQLが壊れてしまった時の「復元」方法

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

コメント