さくらサーバー mysql バックアップ決定版

2012年12月6日更新 view: 156 view

前回の記事でバックアップの取得について書いた。

http://www.matomater.com/432/

ただ、ここで一つ疑問点が。

全てのデータベースを一気にバックアップできないか

結論がでましたので、その方法を書きます。

shスクリプト

とりあえず、一つのデータベースのみバックアップを取得します。 データベースがあるだけこのファイルを用意します。 しかも同じサーバー同士なら DBNAMEを変更するだけで使い回しが効くように書いてみました。

#!/bin/sh

# ----- 設定 -----

# バックアップ元のデータベース

DBNAME=account_servername # ←DB名
DBLOGINID=account# ←ユーザ名
DBPASS=pass # ←パスワード
DBSERVER=mysql123.db.sakura.ne.jp # ←DBが乗っているホスト名
# 設定ここまで

PATH=/bin:/usr/bin:/usr/local/bin

bk_days=7
bk_dir=/home/$DBLOGINID/mysqlbackup/


TSNOW=`date +%Y%m%d`
TSOLD=`date "-d$bk_days days ago" +%Y%m%d`

file_temp=$DBNAME$TSNOW.sql
file_backup=$DBNAME$TSNOW.tar.gz
file_remove=$DBNAME$TSOLD.tar.gz

# ---------- バックアップ処理 ----------
# バックアップ先のディレクトリに移動
cd $bk_dir
if [ $? != 0 ]; then
echo "Backup directory does not exist."
exit 1
fi

# データベースをダンプ
mysqldump -Q -h $DBSERVER -u $DBLOGINID -p$DBPASS $DBNAME > $file_temp
if [ $? != 0 -o ! -e $file_temp ]; then
echo "Cannot dump database."
exit 1
fi

# アーカイブを作成
tar cfz $file_backup $file_temp
if [ $? != 0 -o ! -e $file_backup ]; then
echo "Cannot archive files."
exit 1
fi

# テンポラリファイルを削除
rm -f $file_temp

# ローテーション処理
if [ -e $file_remove ]; then
rm -f $file_remove
fi

exit 0

さらに一気に取得!

・main.sh これで複数の sh ファイルを読み込み、 cron では この main.sh だけを動かします。

スポンサードリンク
#!/bin/sh

sh /home/hideking3/shscript/aaa-dbdump.sh
sh /home/hideking3/shscript/bbb-dbdump.sh
sh /home/hideking3/shscript/ccc-dbdump.sh

完成バックアップファイル

account_aaa20121206.tar.gz account_bbb20121206.tar.gz account_ccc20121206.tar.gz

ってファイルができあがります。

スポンサードリンク

関連記事

関連カテゴリ

コロ助

web関連の記事や制作系の記事をどんどんまとめていきます。 宜しくお願いします!

ピックアップ

パソコン・ソフトウェア ランキング

12月12日 ( 火 ) にアクセスが多かった記事はこちら!