[PR] 本記事にはプロモーションが含まれています。

【XAMPP】MySQLを定期的に自動バックアップする|mysqldumpとタスクスケジューラ、dataフォルダーをそのままコピーしない理由

MySQL

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

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

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

なお、XAMPPのコントロールパネルには「MySQL」と書かれていますが、中に入っているのは、MySQLから分かれた互換のデータベース「MariaDB」です(XAMPPは2015年ごろに、MySQLからMariaDBに切り替えています)。私も、XAMPPをまとめてインストールしていたので、しばらく気づきませんでした。コマンドの名前は mysql のままなので、この記事の手順はそのまま使えます。

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のスタートボタン(または検索バー)で「タスク スケジューラ」と検索して起動します。

MySQLを定期的に自動バックアップする:タスクスケジューラを起動する

ステップ 2:新しいタスクを作成する

右側の操作メニューから「タスクの作成…」(※「基本タスクの作成」ではないので注意)をクリックします。

MySQLを定期的に自動バックアップする:新しいタスクを作成する
  • 名前: XAMPP MySQL Backup (定期実行版)
  • 説明: 3時間毎に自動でMySQLのデータを退避します。
MySQLを定期的に自動バックアップする:新しいタスクを作成する(2)

ステップ 3:トリガーを設定する

「トリガー」タブを開き、「新規…」ボタンを押します。

MySQLを定期的に自動バックアップする:トリガーを設定する
  1. 一番上の「タスクの開始」で「スケジュールに従う」を選択します。
  2. 設定で「毎日」を選ぶ。
  3. 詳細設定で繰り返し時間を3時間、継続時間を無期限。
MySQLを定期的に自動バックアップする:トリガーを設定する(2)

「設定」タブを開き、

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

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

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

MySQLを定期的に自動バックアップする:バッチファイルを指定する
  1. 操作が「プログラムの開始」になっていることを確認します。
  2. 「プログラム/スクリプト」の参照ボタンを押し、先ほど作成した mysql_backup.bat を選択します。
  3. 「OK」を押して閉じます。
MySQLを定期的に自動バックアップする:バッチファイルを指定する(2)

まとめ

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

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

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

ほかの開発・プログラミングの記事は、開発・プログラミングメモの目次から、テーマ別に探せます。

このブログは、にほんブログ村と人気ブログランキングに参加しています。記事が役に立ったら、下のランキングのバナーのどれかを押して応援してもらえると励みになります。

ブログランキング・にほんブログ村へにほんブログ村

サーバー構築・運用ランキング プログラムランキング

MySQLXAMPP
watasoftdevをフォローする

コメント