MySQL备份脚本
08月 30th, 2007#!/bin/sh
#
# Copyright (C), 2007 bug All Rights Reserved
# Author : BUG
# Version : 1.0
# Date : 2007-03-31
# Email : efbbb27115@homtail.com
# License : General Public License (GPL) v2
# Description: Database Backup Script
#
# mysqln : mysql database name default is all-databases
# mysqlu : mysql database user default is root
# mysqlp : mysql database password default is null
# srcpath : mysql bin path
# dstpath : backup destination path
# logfile : logfile name
# loghead : logfile date info
# runuser : current script running by users
mysqln=”mysql”
mysqlu=root
mysqlp=******
srcpath=/usr/local/mysql/var/
dstpath=”/mnt/bak/”
logfile=/mnt/bak/log/`date +%y%m%d`.log
loghead=[`date +%y/%m/%d\ %H:%M:%S`]
runuser=`ps aux | grep $$ | sed -n “1p” | awk ‘{ print $1 }’`
echo -en “\33[2J"
echo -en "\33[0;0H"
echo -en "\33[32m"
echo "$loghead Database Backup Script start by $runuser PID:$$" >> $logfile
echo "--------------------------------------------------"
echo "--- Database Backup Script Start ---"
echo "--------------------------------------------------"
echo -en "\33[37m"
rm -rf "$dstpath$(date +%y%m%d -d'-3 day')"
mkdir -p "$dstpath$(date +%y%m%d)"
for file in $mysqln
do
/usr/local/mysql/bin/mysqldump --opt -u$mysqlu -p$mysqlp $file > $dstpath$(date +%y%m%d)/$file`date +%y$m%d`.sql 2> /dev/null
re1=$?
if [ "$re1" -eq 0 ]
then
echo -n “$loghead” >> $logfile
echo -n “$file” | awk ‘{printf ” %-17s”, $1}’ >> $logfile
echo -n “database Export OK ” >> $logfile
echo -en “$file” | awk ‘{printf “%-17s “, $1}’
echo -en “database Export \33[32mOK\33[37m "
tar -czvf "$dstpath$(date +%y%m%d)/$file`date +%y$m%d`.tgz" -P "$dstpath$(date +%y%m%d)/$file`date +%y$m%d`.sql" > /dev/null 2>&1
re2=$?
if [ "$re2" -eq 0 ]
then
echo “tgz OK” >> $logfile
rm -f “$dstpath$(date +%y%m%d)/$file`date +%y$m%d`.sql”
echo -e “tgz \33[32mOK\33[37m”
else
echo “tgz file fail return $re2″ >> $logfile
echo -e “tgz \33[31mfail\33[37m”
fi
else
echo -n “$loghead” >> $logfile
echo -n “$file” | awk ‘{printf ” %-17s”, $1}’ >> $logfile
echo “database Export fail return $re1″ >> $logfile
echo -en “$file” | awk ‘{printf “%-17s “, $1}’
echo -e “database Export \33[31mfail\33[37m”
fi
done
echo “” >> $logfile