Mysqlの自動バックアップ


CentOs ver.5.3

mysql ver. 5.0.45

スクリプト作成
# vi mysql-backup.sh
------------------------
#!/bin/bash

BACKUPDIR=/home/backup/mysql
#MySQL user
DUMPUSER=root
#userパス
DUMPPASS=(パスワード)
# バックアップ保存世代数
# ※当日分を含めた過去分バックアップを保存する世代数
# ※過去分バックアップを保存しない場合は1を指定する
BACKUPGEN=7


# 前回バックアップをリネーム
cd $BACKUPDIR
OLDBACKUPFILE=`ls mysqlbak.gz* 2>/dev/null`
if [ -f $OLDBACKUPFILE ]; then
TIMESTAMP=`ls --full-time $OLDBACKUPFILE|awk '{print $6}'|tr -d -`
mv $BACKUPDIR/$OLDBACKUPFILE $BACKUPDIR/${TIMESTAMP}$OLDBACKUPFILE > /dev/null 2>&1
fi

mysqldump -u$DUMPUSER -p$DUMPPASS | gzip > $BACKUPDIR/mysqlbak.gz

# バックアップ保存世代を超えた古いバックアップを削除
if [ $(ls $BACKUPDIR/*mysqlbak.gz*|wc -l) -gt $BACKUPGEN ]; then
OLDBACKUPCNT=`expr $(ls $BACKUPDIR/*mysqlbak.gz*|wc -l) - $BACKUPGEN`
for file in `ls -t $BACKUPDIR/*mysqlbak.gz*|tail -n $OLDBACKUPCNT`
do
rm -f $file
done
fi
------------------------

②権限変更
# chmod 700 mysql-backup.sh

③定期実行設定
echo "5 4 * * * root /home/backup/mysql-backup.sh" > /etc/cron.d/mysql-backup