MySQLデータベースをバックアップ

hiromasa.anotherさんの所にあったXREA/CORESERVER用のスクリプトを自分の使ってるinetdで動くように変更してみた。


#!/bin/sh

# 設定
DATABASE=MYSQLデータベース名
DBUSERNAME=MYSQLアカウント名
PASSWORD=MYSQLパスワード
USERHOME=アカウントのディレクトリ(public_htmlの一階層上を指定)
BACKUPDIR=バックアップを置くディレクトリ
KEEPDAY=バックアップを補完しておく日数(2週間だったら14d)

# 初期化
PREFIX=mysql
SERVER=localhostもしくはmysqlサーバーホスト
NOWDATE=`date +%Y%m%d`
DESTDIR=$USERHOME/$BACKUPDIR
DUMPFILE=$PREFIX.$NOWDATE.dump
TARFILE=$PREFIX.$NOWDATE.tar.gz
OLDDATE=`date -v-$KEEPDAY +%y%m%d`

# MySQLダンプ/圧縮
cd $DESTDIR
/usr/local/bin/mysqldump $DATABASE --host=$SERVER -u $DBUSERNAME --password=$PASSWORD > $DUMPFILE
tar zcvf $TARFILE $DUMPFILE

# 処理判定
if [ $? != 0 -o ! -e $TARFILE ]; then
echo "backup faild -- ($DUMPFILE)"
exit 1
fi

# 圧縮前ファイル削除
rm -f $DUMPFILE

# n日ローテートを削除
rmfile=$DESTDIR/$PREFIX.$OLDDATE.tar.gz
if [ -e $rmfile ]; then
rm -f $rmfile
fi

バックアップを利用して復元する場合はこうするそうだ。

mysql -u [ユーザ名] -p --default-character-set=utf8 [データベース名] < [バックアップ.dumpファイル]
ex. mysql -u MYSQLアカウント名 -p --default-character-set=utf8 MYSQLデータベース名 < mysql.日付.dump

コメント

タイトルとURLをコピーしました