通过脚本执行备份操作,使用crontab实现定时功能,并删除指定天数前的备份
备份
1、创建数据库备份临时目录和存放目录
// 临时目录
/data/backup/mongodb_bak/mongodb_bak_now
// 存放目录
/data/backup/mongodb_bak/mongodb_bak_list
2、创建mongodb备份脚本
// 使用vim新建文件
vim /home/crontab/mongodb_bak.sh
脚本内容如下:
#!/bin/sh
DUMP=/usr/local/mongodb/bin/mongodump #mongodump备份文件执行路径
OUT_DIR=/data/backup/mongodb_bak/mongodb_bak_now #临时备份目录
TAR_DIR=/data/backup/mongodb_bak/mongodb_bak_list #备份存放路径
DATE=`date +%Y_%m_%d_%H_%M_%S` #获取当前系统时间
DB_USER=user #数据库账号
DB_PASS=password #数据库密码
DAYS=30 #DAYS=30代表删除30天前的备份,即只保留最近30天的备份
TAR_BAK="mongodb_bak_$DATE.tar.gz" #最终保存的数据库备份文件名
cd $OUT_DIR
rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
$DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE #备份全部数据库
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #压缩为.tar.gz格式
find $TAR_DIR/ -mtime +$DAYS -delete #删除30天前的备份文件
3、修改文件属性使其可执行
chmod +x /home/crontab/mongodb_bak.sh
4、修改crontab添加任务
crontab -e
在后面添加这句(表示每天凌晨1:00执行备份)
0 1 * * * /home/crontab/mongodb_bak.sh
定时任务扩展:
前五位分别是分、时、日、月、周,最后为要执行的任务
操作符:
星号表示取值范围内的所有数字
斜杠表示每过多少个数字
横杠表示从多少到多少
逗号表示选择多个数字
示例:
1、每分钟执行:* * * * *
2、每过2分钟执行:*/2 * * * *
3、第3到第5分钟执行:3-5 * * * *
4、第3和第5分钟执行:3,5 * * * *
5、重启crond使其生效
service crond reload
6、加入开机自启
chkconfig --level 35 crond on
为做演示每分钟备份一次,备份目录有这些文件就大功告成了恢复
1、全部恢复
mongorestore –-drop path
2、单个恢复
mongorestore -–drop -d dataname path
-–drop 恢复数据之前删除原来数据库数据,避免数据重复
-d 后面跟要恢复的数据库名称
path 数据库备份目录
crontab命令
// 启动服务
service crond start
// 关闭服务
service crond stop
// 重启服务
service crond restart
// 重新载入
service crond reload
// 加入开机自启
chkconfig --level 35 crond on
// 查看crontab文件
crontab -l
// 编辑crontab文件
crontab -e
// 删除crontab文件
crontab -r