作者:YOUDI(Kevin.U)
一,设置Linux的定时器:
crontab –e
0 3 * * * /www/cron/mysqlbackup.sh
每天三点执行备份脚本.
脚本如下:
#!/bin/sh
# Name:mysqlbackup.sh
# PS:MySQL DataBase Backup,Use mysqlhotcopy script.
# Write by:i.Stone
# Last Modify:2007-11-15
#
# 定义变量,请根据具体情况修改
# 定义脚本所在目录
scriptsDir=`pwd`
# 数据库的数据目录
dataDir=/data/var/
# 数据备份目录
tmpBackupDir=/backup/sql/var/
backupDir=/backup/sql/backup/
# 用来备份数据库的用户名和密码
mysqlUser=hotcopyer
mysqlPWD=123456
# 如果临时备份目录存在,清空它,如果不存在则创建它
cd /backup/sql/
if [[ -e $tmpBackupDir ]]; then
rm -rf $tmpBackupDir/*
else
mkdir $tmpBackupDir
fi
# 如果备份目录不存在则创建它
if [[ ! -e $backupDir ]];then
mkdir $backupDir
fi
# 清空MySQLBackup.log
if [[ -s MySQLBackup.log ]]; then
cat /dev/null >MySQLBackup.log
fi
# 得到数据库备份列表,在此可以过滤不想备份的数据库
for databases in `find $dataDir -type d | /
sed -e "s///data//var" | /
sed -e "s/test//"`; do
if [[ $databases == "" ]]; then
continue
else
# 备份数据库
/data/mysql5/bin/mysqlhotcopy --noindices "$databases" $tmpBackupDir
dateTime=`date "+%Y.%m.%d %H:%M:%S"`
echo "$dateTime Databasedatabases backup success!" >>MySQLBackup.log
fi
done
# 压缩备份文件
#date=`date -I`
#cd $tmpBackupDir
# tar czf $backupDir/mysql-$date.tar.gz ./
day=`date +"%Y%m%d"`
/usr/local/bin/rar m -m5 -r var.rar var/
/bin/mv var.rar all.bin.$day.rar
dateTime=`date "+%Y.%m.%d %H:%M:%S"`
echo "$dateTime Databases compressed su如何ccess!" >> MySQLBackup.log
恢复:
mkdir var
cd var
rar e ../all.bin.$day.rar
myisamchk –r *
完成