MySQLの簡易バックアップをつくる

ディレクトリをバックアップする仕組みがうまく動いてくれたので、今度はMysqlのバックアップをテストしました。

mysqlのバックアップを自動化する

上記エントリーを参照しつつ、ディレクトリバックアップのコードを流用して古いデータは削除するようにしました。
ということで以下備忘録、参照は自己責任でお願いします。

#!/bin/sh
DBUSER=db_user_name
# データベースのユーザ名を指定。
DBNAME=db_name
# データベース名を指定。
DBPASS=db_password
# データベースのパスワードを指定。
DBHOST=localhost
# データベースのホスト名を指定。
MYSQLPATH=/usr/bin
# mysqldumpがあるパスを指定。
#バックアップ先のディレクトリ
bk_dir=/home/website/backupfiles/
#保存日数
bk_days=3
# ---------- ファイル名を設定 ----------
# タイムスタンプを取得
ts_now=`date +%Y%m%d`
ts_old=`date "-d$bk_days days ago" +%Y%m%d`
# ファイル名を設定
file_backup=$ts_now.sql.gz
file_remove=$ts_old.sql.gz
OUTPUTFILE=/home/website/backupfiles/`date +%Y%m%d`.sql
# バックアップ実行
$MYSQLPATH/mysqldump --default-character-set=utf8 --host="$DBHOST" --user="$DBUSER" --password="$DBPASS"
"$DBNAME"
> "$OUTPUTFILE"
# バックアップしたファイルをgzipで圧縮。
gzip "$OUTPUTFILE"
# バックアップ先のディレクトリに移動
cd $bk_dir
if [ $? != 0 ]; then
echo "Backup directory does not exist."
exit 1
fi
# ローテーション処理
if [ -e $file_remove ]; then
rm -f $file_remove
fi
exit 0

すべてのデータベースを対象にバックアップを実行する場合は --all-databasesオプションを使用するとよいみたいです。

# バックアップ実行
$MYSQLPATH/mysqldump --default-character-set=utf8 --host="$DBHOST" --user="$DBUSER" --password="$DBPASS"
--all-databases
> "$OUTPUTFILE"

XSERVERの管理画面からスクリプトをCronに登録後、無事指定した時間にバックアップがとれていることを確認しました。

投稿日
カテゴリ