MySQLのデータベースを適切にバックアップすることは、ビジネスの継続性やデータ保護において非常に重要です。しかし、手動でバックアップを行うのは時間がかかり、ミスが発生する可能性もあります。そこで今回は、初心者でもわかりやすい手順でMySQLのバックアップを自動化する方法を解説します。
自動バックアップのメリット
- 手間を削減: 手動操作の必要がなくなる。
- 定期的なバックアップ: 決めたスケジュールに基づき自動で実行。
- ヒューマンエラーの防止: 忘れやミスを防ぐ。
必要な環境
- MySQLがインストールされたサーバー
- シェルスクリプトの基礎知識(スクリプトをコピペするだけでも問題ありません)
- **cron(タスクスケジューラー)**が使える環境
ステップ1: バックアップ用ディレクトリの作成
まず、バックアップファイルを保存するためのディレクトリを作成します。
sudo mkdir -p /var/backups/mysql
このコマンドで/var/backups/mysql
ディレクトリを作成します。他の場所を指定したい場合は適宜変更してください。
ステップ2: バックアップ専用のMySQLユーザーを作成
バックアップ専用のMySQLユーザーを作成し、必要最低限の権限を付与します。
- MySQLにログイン:
sudo mysql -u root -p
- 新しいユーザーを作成:
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'your_password';
- 必要な権限を付与:
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'backup_user'@'localhost';
- 権限を適用:
FLUSH PRIVILEGES;
- MySQLからログアウト:
EXIT;
このユーザー情報をスクリプトに使用してください。
ステップ3: バックアップスクリプトの作成
次に、MySQLデータベースをバックアップするシェルスクリプトを作成します。
- テキストエディタで新しいスクリプトファイルを作成:
sudo vim /usr/local/bin/mysql_backup.sh
- 以下のスクリプトを貼り付けます:
#!/bin/bash
# バックアップ保存先
destination="/var/backups/mysql"
# MySQLユーザーとパスワード
user="backup_user"
password="your_password"
# 日付を含むバックアップファイル名
date=$(date +"%Y-%m-%d_%H-%M-%S")
backup_file="$destination/mysql_backup_$date.sql"
# バックアップ実行
mysqldump -u $user -p$password --all-databases > $backup_file
# 古いバックアップの削除(7日以上前のファイル)
find $destination -type f -name "*.sql" -mtime +7 -exec rm {} \;
echo "バックアップ完了: $backup_file"
- ファイルを保存して閉じます。
- スクリプトに実行権限を付与します:
sudo chmod +x /usr/local/bin/mysql_backup.sh
ステップ4: cronで定期実行を設定
cron
を使って、スクリプトを定期的に実行するよう設定します。
crontab
を編集:
crontab -e
- 以下の行を追加して、毎日深夜2時にバックアップを実行するように設定:
0 2 * * * /usr/local/bin/mysql_backup.sh
- 保存して閉じます。
これで設定は完了です。
動作確認
- スクリプトを手動で実行して動作を確認:
/usr/local/bin/mysql_backup.sh
/var/backups/mysql
ディレクトリを確認して、バックアップファイルが作成されているかチェックします。
注意点
- データベースユーザーの権限: バックアップを行うユーザーには適切な権限(
SELECT
やLOCK TABLES
など)が必要です。 - パスワードの管理: スクリプトに直接パスワードを記載するのはセキュリティリスクがあります。環境変数や秘密管理ツールを活用することを検討してください。
- バックアップのテスト復元: 定期的にバックアップデータをテスト復元して、正常に動作することを確認してください。
まとめ
MySQLのバックアップを自動化することで、データ保護が確実かつ効率的に行えます。本記事で紹介した手順を参考に、ぜひ自動化を導入してみてください。
コメント