Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
MySQL自動バックアップとは、人手を介さず、定められた間隔で自動的にデータベースのバックアップを作成する仕組みを指します。バックアップスクリプト、タスクスケジューラー、またはバックアップソフトウェアを活用することで、組織はMySQLデータベースを継続的に保護し、必要時に速やかに復旧できる体制を整えられます。
管理者が定期的に手動で実行する従来のバックアップと異なり、自動化されたMySQLバックアップは重要なデータをより確実に守り、人為的なミスを低減します。また、データベース障害、データ破損、誤削除が発生した際にも業務継続性を確保します。
以降の章では、LinuxおよびWindows上でMySQLデータベースの自動バックアップを構築する方法、バックアップスクリプト、スケジューリング手法、バックアップ運用のベストプラクティスを解説します。
Info2softのi2Backupは、企業向けデータベースバックアップ・復旧機能を提供し、自動スケジューリング、一元管理、柔軟な復旧オプションを備えています。詳しく見る»
Windows環境にMySQL自動バックアップを導入する手順は簡潔です。適切なスクリプトとスケジュール設定を行えば、少ない保守工数でデータベースを保護可能です。
Windows上でMySQLのバックアップを作成する代表的な手段が、MySQL標準搭載ツールであるmysqldumpです。このツールは、必要に応じてデータベースを再構築可能なSQL文を出力します。
手順1. メモ帳を開く
手順2. 下記コードを貼り付けます。
@echo off
setlocal enabledelayedexpansion
:: --- 設定項目 ---
set MYSQL_DUMP="C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump.exe"
set CONFIG_FILE=C:\MySQLBackups\mysql_backup.cnf
set BACKUP_DIR=C:\MySQLBackups
set RETENTION_DAYS=7
:: タイムスタンプ取得(YYYY-MM-DD_HHMMSS形式)
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set datetime=%%I
set TIMESTAMP=%datetime:~0,4%-%datetime:~4,2%-%datetime:~6,2%_%datetime:~8,2%%datetime:~10,2%%datetime:~12,2%
set BACKUP_FILE=%BACKUP_DIR%\all_databases_%TIMESTAMP%.sql
set LOG_FILE=%BACKUP_DIR%\backup_log.txt
echo [%date% %time%] MySQLバックアップを開始... >> "%LOG_FILE%"
:: mysqldump実行
%MYSQL_DUMP% --defaults-extra-file="%CONFIG_FILE%" --all-databases --single-transaction --quick > "%BACKUP_FILE%"
if %ERRORLEVEL% EQU 0 (
echo [%date% %time%] バックアップ成功:%BACKUP_FILE% >> "%LOG_FILE%"
) else (
echo [%date% %time%] バックアップ失敗 エラーコード:%ERRORLEVEL% >> "%LOG_FILE%"
exit /b %ERRORLEVEL%
)
:: 保存期間を超過したバックアップファイルを削除
forfiles /p "%BACKUP_DIR%" /m *.sql /d -%RETENTION_DAYS% /c "cmd /c del @path" 2>nul
スクリプトを正常に動作させるには、テーブルに対するSELECT権限、ビューに対するSHOW VIEW権限、トリガーに対するTRIGGER権限など、適切なMySQL権限が必要です。また、mysqldump.exeのパスは自身のMySQLインストール先に合わせて変更してください。
バックアップスクリプト作成後、Windowsタスクスケジューラーを利用して自動実行を設定できます。
手順1. コマンドプロンプトに「taskschd.msc」と入力し、タスクスケジューラーを起動
手順2. 操作ウィンドウから「基本タスクの作成」をクリック
手順3. 基本タスク作成ウィザードが起動したら、タスク名を入力(例:MySQL毎日バックアップ)
手順4. トリガータブにて実行周期(毎日・毎週など)を設定
手順5. 次の画面でバックアップ実行時刻を指定
手順6. 操作タブにて「プログラムの起動」を選択
手順7. 参照をクリックし、作成したバッチファイルを選択
手順8. タスク詳細を確認し、「完了」をクリックしてタスクを保存・有効化
本設定により、PCを操作していない時間帯でも安定してバックアップが実行されます。
適切なバックアップ管理は、堅牢なバックアップ戦略を維持するために不可欠です。
ファイル名の自動命名:ファイル名にタイムスタンプを付与し、各バックアップを一意に識別できるようにします。
%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2% の形式で「20251014_0830.sql」のようなファイル名を生成可能。
バックアップローテーション導入:古いバックアップを自動削除し、ストレージ容量の枯渇を防ぎます。下記コードをスクリプトへ追加します。
このコマンドは7日以上経過したバックアップファイルを削除します。
圧縮処理:バックアップファイルを圧縮し、ストレージを節約します。PowerShellに標準搭載されている圧縮機能を活用可能です。
圧縮後は元の非圧縮ファイルを削除する処理を追加できます。
遠隔地保管:ローカル機器の障害に備え、バックアップを別の拠点へコピーします。
イベントログ出力:ログを出力し、バックアップ実行状況の確認や障害調査に活用します。
Linuxには強力な標準ツールが備わっており、MySQL自動バックアップを簡単かつ安定的に実装できます。bashスクリプトとLinuxスケジューラーを活用した安定したバックアップ体制の構築方法を解説します。
堅牢なbashスクリプトはLinux環境のMySQL自動バックアップの基盤となります。スクリプトではMySQL標準ツールmysqldumpを利用し、必要時にデータベースを復元可能なSQL文を生成します。
汎用的で実用的なスクリプトテンプレートは下記の通りです。
#!/bin/bash
# 設定項目
BACKUP_DIR="/var/backups/mysql"
CONFIG_FILE="/etc/mysql/backup.cnf"
DATE=$(date +%Y-%m-%d_%H%M%S)
RETENTION_DAYS=14
# ディレクトリが存在しなければ作成
mkdir -p "$BACKUP_DIR"
# データベースをバックアップしgzipで圧縮
mysqldump --defaults-extra-file="$CONFIG_FILE" --all-databases --single-transaction --quick | gzip > "$BACKUP_DIR/db_backup_$DATE.sql.gz"
# 実行結果をログ出力
if [ $? -eq 0 ]; then
echo "[$(date)] バックアップ成功: db_backup_$DATE.sql.gz" >> "$BACKUP_DIR/backup.log"
else
echo "[$(date)] バックアップ失敗" >> "$BACKUP_DIR/backup.log"
exit 1
fi
# 保存期間を超過したアーカイブファイルを削除
find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
上記スクリプトはgzip圧縮によりストレージ使用量を削減しつつ、データの完全性を保ちます。タイムスタンプ付きのバックアップファイルを作成後、圧縮を実行します。
スクリプト作成完了後、cronジョブを設定し自動実行させます。ユーザー単位のcron設定手順は以下の通り。
1. スクリプトに実行権限を付与: chmod +x backup_mysql.sh
2. crontabエディタを起動: crontab -e
3. 下記のスケジュール行を追加
0 2 * * * /path/to/your/backup_mysql.sh > /dev/null 2>&1
この設定で毎日午前2時にバックアップが実行され、標準出力・エラー出力を/dev/nullへ送信し、不要なメール通知を抑制します。
ユーザー単位ではなくシステム全体のcronジョブを設定する場合は、/etc/cron.d配下にroot所有者の設定ファイルを作成します。
@daily root /path/to/backup_mysql.sh > /dev/null 2>&1
スクリプト内にDB認証情報を直接記述するとセキュリティリスクが生じます。専用設定ファイルを作成する方法が推奨されます。
1. ホームディレクトリに.my.cnfを作成
[client]
user = dbusername
password = "dbpassword"
host = localhost
2. アクセス権限を厳格に設定
chmod 600 ~/.my.cnf
この設定により、スクリプト側に明示的な認証情報を記載せずmysqldumpを実行可能になります。ファイル所有者のみ読み取り可能となり、安全性が大きく向上します。
さらに、バックアップ専用のシステムユーザーを作成することを推奨します。最小権限の原則に基づき、万が一認証情報が流出した際の被害を抑制できます。
適切なローテーションルールがない場合、バックアップファイルがストレージを占有し続けます。ローテーション方針を定めることで、必要な履歴バックアップを保持しつつリソースの浪費を防ぎます。
下記コードをスクリプトに追加し、古いバックアップを自動的に整理します。
# 30日以上経過したバックアップを削除
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +30 -delete
スクリプトによる手法は有効ですが、手動でスクリプトを保守したくない運用者にはInfo2softのi2Backupのようなツールが適しています。GUIからバックアップスケジュール、保存ポリシー、保管先を設定可能であり、コマンドラインによる堅牢性を保ちつつ運用負担を軽減します。
データベース管理者が簡易的にデータ保護体制を構築する手段として、企業向け堅牢バックアップソリューションi2Backupは、独自スクリプトに代わる実用的な選択肢となります。
本ツールはMySQL自動バックアップに特化した使いやすいインターフェースを備え、従来のスクリプト運用に伴う複雑な課題を解消します。
独自スクリプトと比較したi2Backupのメリット
i2BackupによるMySQL自動バックアップ手順
手順1. 下記ボタンから60日間無料トライアルを申し込み。Info2softの技術担当者が環境への導入を支援いたします。
手順2. i2Backup導入後、起動します。「バックアップ&リストア」>「アプリケーション保護」>「バックアップルール」を開き、「新規作成」でバックアップタスクを作成。
手順3. タスク名(例:MySQLバックアップ)を入力し、種別に「MySQL」を選択し「次へ」をクリック。
手順2. 画面にてバックアップ対象を選択。
手順3. ウィザードに従い、バックアップスケジュール、帯域制限、暗号化、イミュータブルバックアップなどの項目を設定。
手順4. 最後にタスク詳細を確認し、「確定」をクリックしてタスクを登録。
バックアップファイルを作成するだけでは十分ではなく、緊急時に正常に復元できて初めて価値が生まれます。定期的な検証により、障害発生時にMySQL自動バックアップシステムが正常に動作することを確かめます。
バックアップ検証はファイルの存在やサイズ確認だけでは不十分です。基礎的な確認項目は下記の通りです。
ヒント:i2Backupご利用者は「バックアップ&リストア」>「バックアップセット」>「バックアップセット管理」画面より、各タスクを選択し「検証」機能を実行可能です。
最も確実な検証方法は定期的な復元試験です。Windows・LinuxのMySQLバックアップを検証する手順は以下の通りです。
1. 専用のテストサーバーを用意
2. バックアップファイルからデータを復元
3. 復元した環境でMySQLを起動(生のバックアップディレクトリを直接利用しない)
4. SHOW系SQLを実行しデータベース構造を確認
5. クエリを実行しデータの完全性を検証
推奨は毎月1回の復元試験です。実施頻度は業務要件に合わせ調整してください。
MySQL自動バックアップ環境には監視機構を導入し、障害を早期に捉える仕組みが必要です。Linux向けMySQLバックアップスクリプトに条件分岐を追加し、メール通知を設定できます。
MySQL自動バックアップを導入することで、データ損失が発生した際に少ない人手で重要な情報を復旧できる体制を構築できます。本ガイドではWindows、Linux両プラットフォームに安定したバックアップ環境を構築する実務的な手法を紹介しました。これらの実証済み手法により、予期せぬシステム障害、人為的ミス、データ喪失リスクから貴重なデータベース資産を守ります。
スクリプト運用は自由度が高い反面、多くの管理者はより簡素なソリューションを求めています。i2Backupは独自スクリプトの作成・保守に伴う複雑さを解消し、工数を削減しながら全面的なデータベース保護を実現します。MySQLバックアップ以外にもHyper-V、MongoDB、VMwareなど多様な環境の保護に対応します。