MySQLでデータベースの定期バックアップ

定期的にこのブログのデータベースのバックアップを取ることにしたので、その時の手順をメモ代わりに投稿します。こちらで使用しているスクリプトは自己責任で使用してください。

環境

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04.3 LTS
Release:	14.04
Codename:	trusty
$ mysql --version
mysql  Ver 14.14 Distrib 5.5.49, for debian-linux-gnu (x86_64) using readline 6.3

スクリプト

#!/bin/sh

umask 0077

USERNAME='username'
PASSWORD='password'

PERIOD=7
BACKUP_DIR='/var/www/mysql-backups'
DATABASE_NAME=database_name
DATE=`date +%Y%m%d`

mysqldump -u$USERNAME -p$PASSWORD $DATABASE_NAME | gzip > $BACKUP_DIR/$DATABASE_NAME-$DATE.sql.gz

OLD_DATE=`date --date "$PERIOD days ago" +%Y%m%d`
rm -f $BACKUP_DIR/$DATABASE_NAME-$OLD_DATE.sql.gz

解説

umask 0077 の部分で新規に作成されたファイルを他のユーザーが読み取れないようにしています。

PERIOD はバックアップの周期を指定しています。ここでは7日周期で古いバックアップを削除しています。

$ sudo chmod 700 backup.sh

スクリプト自体も他のユーザーから読み込めないようにしましょう。

cronの設定

0 3 * * * sh /var/www/mysql-backups/backup.sh

これで毎日AM 3:00にデータベースのバックアップが実行されるようになりました。

参考

スポンサードリンク