目次~
#contents
**概要 [#r22e8eb4]
MySQLのDBダンプを定期作成するスクリプト。~
**ソース~ [#o0883a71]
#!/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="[DB USER]"
DBPASS="[DB PASSWD]"
DATEM=`date +%Y%m`
BACKUPLOG="/var/logs/backup_"$DATEM".log" # Backup Working Log
BACKUPDIR="/home/system/backup" # Backup Local Space
BACKUPSRV="/mnt/database/backup" # Backup Network Space
## Log
LOGDATE=`date +%Y/%m/%d\ %H:%M:%S`
echo $LOGDATE" DB backup start : "$1" : "$2 >> $BACKUPLOG
## Check
# 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
# Dir Check
if [ -w !$BACKUPDIR ]; then
echo "ERR : "$BACKUPDIR" not write" >> $BACKUPLOG
echo "ERR : "$BACKUPDIR" not write"
exit 1
fi
## Exec
cd $BACKUPDIR
# Rotate
test -f $OUTFILE.gz.$ROTATE && rm -rf $OUTFILE.gz.$ROTATE
while [ $ROTATE -ge 1 ];
do
i=$((ROTATE-1))
if [ -f $OUTFILE.gz.$i ]; then
mv $OUTFILE.gz.$i $OUTFILE.gz.$ROTATE
fi
ROTATE=$i
done
test -f $OUTFILE.gz && mv $OUTFILE.gz $OUTFILE.gz.1
# MySQL dump
mysqldump -u $DBUSER --password=$DBPASS $DBNAME > $OUTFILE
gzip $OUTFILE
# Copy Server
if [ -w $BACKUPSRV ]; then
FILEDATE=`date +%Y%m%d`
cp $OUTFILE.gz $BACKUPSRV/$OUTFILE.$FILEDATE.gz
fi
exit 0
# EOF