mongodb自动备份与恢复

通过脚本执行备份操作,使用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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。