mysql备份及恢复
#定义有备份的数据库名
dbname=zhdatabase1
#定义备份数据库时使用的用户名和密码
dbuser=root dbpasswd=root
#数据库备份的路径
backuppath=/root/backup/mysql/
#数据库备份日志文件存储的路径
logfile=/root/backup/log/mysql.log
#以当前的时间作为备份的数据库命名。
dumpfile=$(date +%y%m%d%H%M)
#这个函数用来备份数据库
back_db() {
#将备份的时间、数据库名存入日志
echo "——"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup——–" >>${logfile}
#备份数据库,如果有错误信息也记入日志。 默认utf8编码
/usr/bin/mysqldump -u${dbuser} -p${dbpasswd} –default-character-set=utf8 ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}
#开始压缩数据文件
echo $(date +%Y-%m-%d%t%A%t%T)" Beginning zip ${backuppath}${dumpfile}.sql" >>${logfile}
#将备份数据库文件库压成ZIP文件,并删除先前的SQL文件。如果有错误信息也记入日志。
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}
}
#cat ${logfile} | mutt -s "Blog数据库备份" -a ${dumpfile}.tar.gz [email protected] }
#这个函数用来删除90天前的数据,注意,这个脚本会删除当前目录下所有的早于七天前的文件
rm_oldfile() {
#查找出当前目录下90天前生成的文件,并将之删除
find /root/backup/mysql -type f -mtime +90 -exec rm {} /;
}
#切换到数据库备份的目录。如果不做这个操作,压缩文件时有可能会错误
cd ${backuppath}
#运行备份数据函数
back_db
#运行删除文件函数
#添加自动运行计划任务(每周日,每周四,00:00执行脚本)
#crontab -e
#00 00 * * 00,04 /root/backup/script/backup_mysql.sh
- 1楼Wentasy昨天 19:25
- 学习了。