シェルスクリプトと cron で自動的にデータベースをバックアップする方法を勉強しました。サーバー初心者です。 サーバーは、CentOS 5.7 です。 参考サイトは「mysqldumpとcronでMySQLを自動バックアップする | Linuxで自宅サーバ構築」です。...
シェルスクリプトと cron で自動的にデータベースをバックアップする方法を勉強しました。サーバー初心者です。
サーバーは、CentOS 5.7 です。
参考サイトは「mysqldumpとcronでMySQLを自動バックアップする | Linuxで自宅サーバ構築」です。
まず、バックアップファイルを保存するディレクトリを作っておきます。
mkdir -p /backup/data/mysql
mkdir コマンドに -p オプションを付けると、サブディレクトリもまとめて作れます。
次に、バックアップを自動的にとる backup_mysql.sh というシェルスクリプトを作り、/usr/local/bin に保存します。
vi /usr/local/bin/backup_mysql.sh
#!/bin/sh
# バックアップする関数を定義
function bk_mysql() {
# 引き数の覚え書き
# $1 : database name(データベース名)
# $2 : password(データベースのパスワード)
# $3 : period(保存期間)
# $4 : backup path(バックアップファイルを保存するディレクトリ)
# 現在年月日を「%y%m%d」の形(yymmdd)で取得
CUR_DATE=`date +%y%m%d`
# 保存期間で指定した日数前の年月日を取得
OLD_DATE=`date --date "$3 days ago" +%y%m%d`
# MySQLから指定したデータベースをダンプする
mysqldump --opt --password=$2 $1 > $4/${CUR_DATE}_$1.sql
# バックアップしたファイルを管理者だけ触れる権限にする
chmod 600 $4/${CUR_DATE}_$1.sql
# 指定した保存期間前のバックアップファイルを削除する
rm -f $4/${OLD_DATE}_$1.sql
}
# 関数bk_mysql に引き数($1〜$4)を渡して実行します。
bk_mysql データベース名 パスワード 7 /backup/data/mysql
エスケープキーを押して、:wq で保存します。
作成した backup_mysql.sh に実行権限を与えます。
chmod 700 /usr/local/bin/backup_mysql.sh
次に、cron に登録します。
crontab -e
0 3 * * * /usr/local/bin/backup_mysql.sh
エスケープキーを押して、「:x」で保存(変更があったら保存)します。これで毎日午前3時に backup_mysql.sh が実行され、データベースが保存されます。
ご利用は自己責任で…