首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mongo自动备份脚本与恢复

mongo自动备份脚本与恢复

作者头像
拓荒者
发布2019-06-18 18:53:14
发布2019-06-18 18:53:14
1.2K00
代码可运行
举报
文章被收录于专栏:运维经验分享运维经验分享
运行总次数:0
代码可运行

mongo自动备份脚本与恢复

一、创建MongoDB备份目录

代码语言:javascript
代码运行次数:0
运行
复制
  1. mkdir -p /data/mongodb_bak/mongodb_bak_now
  2. mkdir -p /data/mongodb_bak/mongodb_bak_list

二、新建MongoDB数据库备份脚本(/data/mongodb_bak/MongoDB_bak.sh) 脚本如下:

代码语言:javascript
代码运行次数:0
运行
复制
  1. #!/bin/bash
  2. #backup MongoDB
  3. #mongodump命令路径
  4. #DUMP=/usr/local/mongodb/bin/mongodump
  5. DUMP=/usr/bin/mongodump
  6. #临时备份目录
  7. OUT_DIR=/data/mongodb_bak/mongodb_bak_now
  8. #备份存放路径
  9. TAR_DIR=/data/mongodb_bak/mongodb_bak_list
  10. #获取当前系统时间
  11. DATE=`date +%Y_%m_%d`
  12. #数据库账号
  13. DB_USER=user
  14. #数据库密码
  15. DB_PASS=123
  16. #DAYS=15代表删除15天前的备份,即只保留近15天的备份
  17. DAYS=15
  18. #最终保存的数据库备份文件
  19. TAR_BAK="mongodb_bak_$DATE.tar.gz"
  20. cd $OUT_DIR
  21. rm -rf $OUT_DIR/*
  22. mkdir -p $OUT_DIR/$DATE
  23. #备份全部数据库 要用root权限的账号
  24. $DUMP -h 15.62.32.112:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE
  25. #备份单个数据库
  26. #$DUMP -h 127.0.0.1:27017 -d myleguan -u $DB_USER -p $DB_PASS  -o $OUT_DIR/$DATE
  27. #压缩为.tar.gz格式
  28. tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
  29. #删除15天前的备份文件
  30. find $TAR_DIR/ -mtime +$DAYS -delete
  31. exit 

三、修改文件属性,使其可执行

代码语言:javascript
代码运行次数:0
运行
复制
chmod +x MongoDB_bak.sh

四、修改/etc/crontab,添加计划任务

代码语言:javascript
代码运行次数:0
运行
复制
  1. vi /etc/crontab
  2. #每星期六晚上20:30开始执行MongoDB数据库备份脚本
  3. 30 20 * * 6 root /data/mongodb_bak/MongoDB_bak.sh 

附录:MongoDB数据库恢复

代码语言:javascript
代码运行次数:0
运行
复制
  1. #恢复全部数据库
  2. mongorestore -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" --noIndexRestore --dir /data/mongodb_bak/mongodb_bak_now/2016_12_17/
  3. #恢复单个数据库
  4. mongorestore -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" --noIndexRestore -d dbname --dir /data/mongodb_bak/mongodb_bak_now/2016_12_17/dbname

部分参数说明 --drop参数:恢复数据之前删除原来的数据,避免数据重复 --noIndexRestore参数:恢复数据时不创建索引 --dir参数:数据库备份目录 -d参数:后面跟要恢复的数据库名称

#!/bin/bash

#backup MongoDB

#mongodump命令路径

DUMP=/usr/bin/mongodump

#临时备份目录

OUT_DIR=/data/mongodb_bak/mongodb_bak_now

#备份存放路径

TAR_DIR=/data/mongodb_bak/mongodb_bak_list

#获取当前系统时间

DATE=`date +%Y_%m_%d`

#数据库账号

DB_USER=myleguan

#数据库密码

DB_PASS=myleguan

#DAYS=15代表删除15天前的备份,即只保留近15天的备份

DAYS=1

#最终保存的数据库备份文件

TAR_BAK="mongodb_bak_$DATE.tar.gz"

cd $OUT_DIR

rm -rf $OUT_DIR/*

mkdir -p $OUT_DIR/$DATE

#备份全部数据库 #$DUMP -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase "admin" -o $OUT_DIR/$DATE

$DUMP -h 127.0.0.1:27017 -d myleguan -u $DB_USER -p $DB_PASS  -o $OUT_DIR/$DATE

#压缩为.tar.gz格式

tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE

#删除15天前的备份文件

find $TAR_DIR/ -mtime +$DAYS -delete

exit

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档