MySQLのダンプを生成し、指定された回数のローテートを行うスクリプト。
以下の値は環境に合わせて変更する。
| ROTATE | 世代管理数 |
| DBUSER | MySQLへアクセスするユーザ名 |
| DBPASS | 上記ユーザのパスワード |
| BACKUPLOG | バックアップの処理ログ出力先(ファイル名) |
バックアップ対象とバックアップ先は実行時に引数で指定する。
./mysql-dumpbackup.sh [TargetDatabase] [OUTPUT FILE NAME]
./mysql-dumpbackup.sh users /backup/hogehoge/users.dump
#!/bin/sh # ------------------------ # mysql dump make script # ------------------------ # Version : 1.0 # date : 2010/01/13 export LANG=C export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/mysql/bin:/usr/local/mysql/sbin:$PATH ## Set ROTATE="30" DBUSER="[MySQL USER]" DBPASS="[MySQL PASSWORD]" DATEM=`date +%Y%m` BACKUPLOG="/home/system/logs/backup_"$DATEM".log" # TARGET if [ -z $1 ]; then echo "ERR : target Database unknown" >> $BACKUPLOG echo "ERR : target Database unknown" echo "USE : ./mysql-dumpbackup.sh [TargetDatabase] [OUTPUT FILE NAME]" exit 0 else DBNAME=$1 fi # OUTPUT if [ -z $2 ]; then echo "ERR : Output File unknown" >> $BACKUPLOG echo "ERR : Output File unknown" echo "USE : ./mysql-dumpbackup.sh [TargetDatabase] [OUTPUT FILE NAME]" exit 0 else OUTFILE=$2 fi ## Exec # Rotate test -f $OUTFILE.$ROTATE && rm -rf $OUTFILE.$ROTATE while [ $ROTATE -ge 1 ]; do i=$((ROTATE-1)) if [ -f $OUTFILE.$i ]; then mv $OUTFILE.$i $OUTFILE.$ROTATE fi ROTATE=$i done test -f $OUTFILE && mv $OUTFILE $OUTFILE.1 # MySQL dump mysqldump -u $DBUSER --password=$DBPASS $DBNAME > $OUTFILE # EOF