Mysql备份脚本 带压缩 显示压缩率 日志
时间:2008-04-25 来源:huzi1986
Mysql备份脚本 带压缩 显示压缩率 日志
March 21st, 2008
#!/bin/sh
#
# Copyright (C), 2007 bug All Rights Reserved
# Title : Database Backup Script
# Author : BUG
# File : db_bak.sh
# Version : 1.1.0
# Date : 2008-03-21
# Email : [email protected]
# License : General Public License (GPL) v2
# Description : Database Backup Script
#
initial() {
echo -en “\33[2J”
echo -en “\33[0;0H”
echo -en “\33[32m”
echo “————————————————————”
echo “— Database Backup Script —”
echo “————————————————————”
echo -en “\33[37m”
stty -echo
umask 077
mysqln=`echo ’show databases;’ | /usr/local/mysql/bin/mysql -psjldafhkg | sed -n ‘3,$p’`
mysqlu=“root”
mysqlp=“********”
binpath=“/usr/local/mysql/bin”
dstpath=“/pri/bak/sql_bak/”
runuser=`ps aux | grep $$ | sed -n “1p” | awk ‘{ print $1 }’`
mkdir -p $dstpath/`date +%y%m%d`
exec 3>>$dstpath/`date +%y%m%d`/db_bak.log
}initialecho -e “\n[`date +%y/%m/%d\ %H:%M:%S`] Database Backup Script start by $runuser PID:$$” >&3if [ -f “$dstpath/`date +%y%m%d`/lock” ]
then
echo -e “\33[33mIt’s has completed by `cat $dstpath/\`date +%y%m%d\`/lock`!!!\33[37m”
echo “[`date +%y/%m/%d\ %H:%M:%S`] It’s has completed by `cat $dstpath/\`date +%y%m%d\`/lock`!!!” >&3
else
echo -e “Database\tExport\tCompress\tSql\tTgz\tRate”
echo -e “\33[32m————————————————————\33[37m”
cd $dstpath/`date +%y%m%d`
for db in $mysqln
do
echo -n “$db”
$binpath/mysqldump --opt -u$mysqlu -p$mysqlp $db > $dstpath/`date +%y%m%d`/$db.sql 2> /dev/null
RETVAL1=$?
if [ $RETVAL1 -eq 0 ]
then
sqlsize=`du -k $db.sql | cut -f1`
echo -n “[`date +%y/%m/%d\ %H:%M:%S`]” >&3
echo -n “$db” | awk ‘{printf ” %-17s”, $1}’ >&3
echo -n “OK ” >&3
echo -en “\r\t\t \33[32mOK\33[37m\t”
tar -czvf $db.tgz $db.sql > /dev/null 2>&1
RETVAL2=$?
if [ $RETVAL2 -eq 0 ]
then
tgzsize=`du -k $db.tgz | cut -f1`
echo “OK” >&3
rm -f $dstpath/`date +%y%m%d`/$db.sql
echo -en “ \33[32mOK\33[37m”
echo -en “\33[33m”
echo -en “$sqlsize” | awk ‘{printf “%12dKB”, $1}’
echo -en “$tgzsize” | awk ‘{printf “%6sKB”, $1}’
echo “$sqlsize $tgzsize” | awk ‘{printf “%8.0f%”,$2/$1*100}’
echo -e “\33[37m”
else
echo “Compress fail return $RETVAL2″ >&3
echo -e “ \33[31mfail\33[37m”
fi
else
echo -n “[`date +%y/%m/%d\ %H:%M:%S`]” >&3
echo -n “$db” | awk ‘{printf ” %-17s “, $1}’ >&3
echo “Export fail return $RETVAL1″ >&3
echo -en “\r\t\t \33[31mfail\33[37m”
fi
done
echo “`date +%H:%M:%S`”>$dstpath/`date +%y%m%d`/lock
fi
This entry was posted on Friday, March 21st, 2008 at 10:06 pm and is filed under MySQL, Shell. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.