Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Dylan

MySQL自動バックアップとは何か、なぜ重要なのか?

MySQL自動バックアップとは、人手を介さず、定められた間隔で自動的にデータベースのバックアップを作成する仕組みを指します。バックアップスクリプト、タスクスケジューラー、またはバックアップソフトウェアを活用することで、組織はMySQLデータベースを継続的に保護し、必要時に速やかに復旧できる体制を整えられます。

管理者が定期的に手動で実行する従来のバックアップと異なり、自動化されたMySQLバックアップは重要なデータをより確実に守り、人為的なミスを低減します。また、データベース障害、データ破損、誤削除が発生した際にも業務継続性を確保します。

以降の章では、LinuxおよびWindows上でMySQLデータベースの自動バックアップを構築する方法、バックアップスクリプト、スケジューリング手法、バックアップ運用のベストプラクティスを解説します。

より簡単なMySQL自動バックアップ手法をお探しですか?

Info2softのi2Backupは、企業向けデータベースバックアップ・復旧機能を提供し、自動スケジューリング、一元管理、柔軟な復旧オプションを備えています。詳しく見る»

60日間無料トライアル

WindowsでMySQL自動バックアップを構築する(バッチスクリプト+タスクスケジューラー)

Windows環境にMySQL自動バックアップを導入する手順は簡潔です。適切なスクリプトとスケジュール設定を行えば、少ない保守工数でデータベースを保護可能です。

mysqldumpを利用した.batスクリプトを作成

Windows上でMySQLのバックアップを作成する代表的な手段が、MySQL標準搭載ツールであるmysqldumpです。このツールは、必要に応じてデータベースを再構築可能なSQL文を出力します。

手順1. メモ帳を開く

手順2. 下記コードを貼り付けます。

.bat
@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自動バックアップを構築する

Linuxには強力な標準ツールが備わっており、MySQL自動バックアップを簡単かつ安定的に実装できます。bashスクリプトとLinuxスケジューラーを活用した安定したバックアップ体制の構築方法を解説します。

MySQL自動バックアップ用bashスクリプト作成

堅牢なbashスクリプトはLinux環境のMySQL自動バックアップの基盤となります。スクリプトではMySQL標準ツールmysqldumpを利用し、必要時にデータベースを復元可能なSQL文を生成します。

汎用的で実用的なスクリプトテンプレートは下記の通りです。

bash
#!/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ジョブを設定し自動実行させます。ユーザー単位のcron設定手順は以下の通り。

1. スクリプトに実行権限を付与: chmod +x backup_mysql.sh

2. crontabエディタを起動: crontab -e

3. 下記のスケジュール行を追加

bash
0 2 * * * /path/to/your/backup_mysql.sh > /dev/null 2>&1

この設定で毎日午前2時にバックアップが実行され、標準出力・エラー出力を/dev/nullへ送信し、不要なメール通知を抑制します。

ユーザー単位ではなくシステム全体のcronジョブを設定する場合は、/etc/cron.d配下にroot所有者の設定ファイルを作成します。

bash
@daily root /path/to/backup_mysql.sh > /dev/null 2>&1

権限管理と認証情報の安全な取り扱い

スクリプト内にDB認証情報を直接記述するとセキュリティリスクが生じます。専用設定ファイルを作成する方法が推奨されます。

1. ホームディレクトリに.my.cnfを作成

bash
[client]
user = dbusername
password = "dbpassword"
host = localhost

2. アクセス権限を厳格に設定

bash
chmod 600 ~/.my.cnf

この設定により、スクリプト側に明示的な認証情報を記載せずmysqldumpを実行可能になります。ファイル所有者のみ読み取り可能となり、安全性が大きく向上します。

さらに、バックアップ専用のシステムユーザーを作成することを推奨します。最小権限の原則に基づき、万が一認証情報が流出した際の被害を抑制できます。

古いバックアップのローテーションと削除

適切なローテーションルールがない場合、バックアップファイルがストレージを占有し続けます。ローテーション方針を定めることで、必要な履歴バックアップを保持しつつリソースの浪費を防ぎます。

下記コードをスクリプトに追加し、古いバックアップを自動的に整理します。

bash
# 30日以上経過したバックアップを削除
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +30 -delete

スクリプトによる手法は有効ですが、手動でスクリプトを保守したくない運用者にはInfo2softのi2Backupのようなツールが適しています。GUIからバックアップスケジュール、保存ポリシー、保管先を設定可能であり、コマンドラインによる堅牢性を保ちつつ運用負担を軽減します。

Windows・Linux環境でMySQL自動バックアップを実装する最善策

データベース管理者が簡易的にデータ保護体制を構築する手段として、企業向け堅牢バックアップソリューションi2Backupは、独自スクリプトに代わる実用的な選択肢となります。

本ツールはMySQL自動バックアップに特化した使いやすいインターフェースを備え、従来のスクリプト運用に伴う複雑な課題を解消します。

独自スクリプトと比較したi2Backupのメリット

  • 自動化による人為的ミス低減:複雑なバッチファイルやbashスクリプトの作成・保守が不要。バックアップ周期・保存ルールを設定するだけで、定時にバックアップが静かに実行され、日常的な操作を必要としません。
  • クロスプラットフォーム対応:Windows、Linux両環境で安定して動作
  • 将来に向けた高い拡張性:バックアップノードをスケールアウト可能。データ量が増大しても大量のデータを保護できます。
  • 法令順守に対応した高い安全性:データ伝送時の暗号化、ロールベースアクセス制御、イミュータブルバックアップに対応し、データセキュリティと業界規制への適合を担保します。
  • 一元管理・監視が容易:可視化されたダッシュボードですべてのバックアップタスクの状況を確認可能。自動メール通知機能により、管理者はMySQLバックアップの状態を把握できます。

i2BackupによるMySQL自動バックアップ手順

手順1. 下記ボタンから60日間無料トライアルを申し込み。Info2softの技術担当者が環境への導入を支援いたします。

60日間無料トライアル

手順2. i2Backup導入後、起動します。「バックアップ&リストア」>「アプリケーション保護」>「バックアップルール」を開き、「新規作成」でバックアップタスクを作成。

手順3. タスク名(例:MySQLバックアップ)を入力し、種別に「MySQL」を選択し「次へ」をクリック。

i2Backup MySQL新規バックアップ作成

手順2. 画面にてバックアップ対象を選択。

MySQLバックアップ対象設定

手順3. ウィザードに従い、バックアップスケジュール、帯域制限、暗号化、イミュータブルバックアップなどの項目を設定。

バックアップ詳細設定

手順4. 最後にタスク詳細を確認し、「確定」をクリックしてタスクを登録。

タスク確定画面

バックアップ環境の検証と監視

バックアップファイルを作成するだけでは十分ではなく、緊急時に正常に復元できて初めて価値が生まれます。定期的な検証により、障害発生時にMySQL自動バックアップシステムが正常に動作することを確かめます。

バックアップ成功の検証手法

バックアップ検証はファイルの存在やサイズ確認だけでは不十分です。基礎的な確認項目は下記の通りです。

  • 「ls -a」コマンドでバックアップファイルの生成を確認
  • ログファイルを参照し、正常完了メッセージの有無を確認
  • MySQL Enterprise Monitorを活用しバックアップジョブを追跡
  • validateコマンドなどを実行し、バックアップデータの完全性を検証

ヒント: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など多様な環境の保護に対応します。

概要は準備中です

関連記事

目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}