先贴出我的shell脚本 backupdb.sh
#!/bin/bash
#定义备份数据库名
dbname=dbname
#定义备份数据库的用户名和密码
dbuser=root
dbpasswd=root
#数据库备份路径
backuppath=/home/db_backup/sqlzip/
#数据库备份日志文件存储的路径
logfile=/home/db_backup/logs/db_backup.log
#获取当前日期,用作数据库名
now=`date +%Y-%m-%d`
#拼接文件名
dumpfile=db-$now
#使用下面函数备份数据库
back_db(){
echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile}
mysqldump --skip-opt -u${dbuser} -p${dbpasswd} --default-character-set=utf8 --quick --force --routines --add-drop-database --add-drop-table ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}
echo "mysqldump --skip-opt -u${dbuser} -p${dbpasswd} --default-character-set=utf8 --quick --force --routines --add-drop-database --add-drop-table ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}"
echo $(date +%Y-%m-%d%t%A%t%T)" Beginning zip ${backuppath}${dumpfile}.sql" >>${logfile}
tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${dumpfile}.sql 2>> ${logfile}
echo "backup file name:"${dumpfile}".tar.gz" >>${logfile}
echo -e "-------"$(date +%Y-%m-%d%t%A%t%T)" Ending database "${dbname}" backup-------\n" >>${logfile}
}
#删除过期文件
rm_oldfile(){
find /home/db_backup/sqlzip/ -type f -mtime +3 -exec rm {} \;
}
cd ${backuppath}
back_db
rm_oldfile
我们一般在win编辑器里面写脚本代码,但是写完之后 并不能马上运行。需要转换一下
用以下命令进行转换
sed -i 's/\r//' ./backupdb.sh
在把我的shell脚本加入到crontab进行管理
59 23 * * * /home/sh/backupdb.sh > /dev/null
这样我们就每天都能收到一个备份的数据库文件。