- linux版本为Centos6.8
- mysql版本为5.6
需求:编写一个Shell脚本,每天凌晨2:10分开始备份数据库
思路分析
设置数据库的备份路径
将数据库备份到备份路径
压缩成.tar.gz文件
删除10天前的文件,保持磁盘大小
步骤实行
- 进入 /usr/sbin/目录下创建 mysql_db_backup.sh
- 赋予可执行权限 chmod 744 mysql_db_backup.sh
- 以下为代码
#!/bin/bash
#完成数据库的定时备份
#备份的路径
BACKUP=/data/backup/db
#当前的时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#输出变量调试
#echo $DATETIME
echo "=======开始备份========"
echo “=======备份的路径是 $BACKUP/$DATETIME..tar.gz”
#主机
HOST=localhost
#用户名
DB_USER=root
#密码
DB_PWD=root
#备份数据库名
DATEBASE=haoDB
#创建备份的路径
#如果备份的路径文件夹存在,就使用,否则就创建
[ ! -d "$DACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库的指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATEBASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
echo "当前路径为=$(pwd)"
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
#rm -rf $BACKUP/$DATETIME
rm -rf $BACKUP/$DATETIME
#删除10天前的备份文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "=========备份文件成功========"
测试
在/usr/sbin下运行 ./mysql_db_backup.sh
查看/data/目录下的文件
解压tar.gz文件
tar -zxvf 2018_12_07_135744.tar.gz
查看sql文件
备份成功
将shell脚本交给crontab -e 每天2:10分定时运行
成功运行
注意
\crontab中的* * * * * 分别代表:
- 一小时当中的第几分钟 范围:0-59
- 一天当中的第几小时 范围:0-23
- 一月当中的第几天 范围:1-31
- 一年当中的第几月 范围 :1-12
- 一周当中的星期几 : 0-7(0和7都代表星期日)