1、把以下shell代码保存为backup_mysql
#!/bin/sh
# Use mysqldump --help get more detail.
#
# 定义变量,请根据具体情况修改
# 定义脚本目录
scriptsDir=`pwd`
# 定义用于备份数据库的用户名和密码
user=root
userPWD=123456
# 定义备份数据库名称
dbNames=(database1 database2 database3)
# 定义备份目录
dataBackupDir=/home/test/backup
# DATE=`date -I`
DATE=`date -d "now" +%Y%m%d`
echo `date -d "now" "+%Y-%m-%d %H:%M:%S"`> $eMailFile
for dbName in ${dbNames[*]}
do
# 定义备份文件名
dumpFile=$dataBackupDir/db/$dbName-$DATE.sql.gz
# 使用mysqldump备份数据库,请根据具体情况设置参数
mysqldump -u$user -p$userPWD $dbName | gzip > $dumpFile
done
2、在crontab里加入以下脚本
00 00 * * 0 /home/test/backup_mysql.sh
这里只有简单的备份功能,还可以加入备份日志、发送邮件、发送备份失败短信等与备份有关的功能
下面是shell定期备份数据库脚本
#!/bin/sh
#name backdb.sh
TIMESTR=`date +%Y%m%d_%HH`
HOST="hostname"
BACKUPDSTDIR="/path_to_backup/backup"
BACKUPDSTDEV="/back_device_name"
/usr/bin/find ${BACKUPDSTDIR}-mtime +14-type f -exec rm -f {}\;
MAXAVAILABLE=5000000
AVAILABLE=`df -k ${BACKUPDSTDEV} | grep "${BACKUPDSTDEV}" | awk '{print $4}'`
if[ ${AVAILABLE}-lt ${MAXAVAILABLE}];then
echo "NO ENOUGH disk space at ${BACKUPDSTDEV}, backup is SKIPPED!"
exit 1
fi
#logdserv=***.***.***.***
#destdir=/server's back dir
/usr/bin/mysqldump -uroot -proot's passwd --all-databases --opt > ${BACKUPDSTDIR}/${TIMESTR}_${HOST}.sql
gzip ${BACKUPDSTDIR}/${TIMESTR}_${HOST}.sql
#ncftpput -E -u data -p mydata! $logdserv $destdir $tarfn
#/usr/bin/ncftpput -E -u data -p mydata! $logdserv $destdir /backup/mysqlbackup/${TIMESTR}_${HOST}.sql.gz
转载于:https://blog.51cto.com/lucifer119/1306074