本分脚本:

!/bin/bash
#备份文件执行路径 which mongodump
DUMP=
#临时备份目录
OUT_DIR=
#本分存放目录
TAR_DIR=
#获取当前系统时间==> 2016_04_11 
DATE=`date +%Y_%m_%d`
#数据库账号
DB_USER=
#数据库密码
DB_PASS=
#保留最近N天的备份
DAYS=
#最后保存的数据库备份名称
TAR_BAK=“mongod_bak_$DATE.tar.gz” #进入临时备份目录
cd $OUT_DIR
#删除临时备份目录中的文件 #rm -rf $OUT_DIR/*
mv $OUT_DIR/* /tmp/ 
#本次临时备份目录
mkdir -p $OUT_DIR/$DATE
#备份全部数据库
#mongoexport -d foobar -c persons -o D:/persons.json
#mongodump --host 127.0.0.1:27017 -d foobar -o d:/foobar $DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE
#压缩
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
#删除N天前的备份文件
find $TAR_DIR/ -mtime +$DAYS -delete

恢复脚本:

#!/bin/bash
###########################
#恢复mongodb 数据库
#author:similarface
#date:2016-04-26
#email:similarface@outlook.com
###########################
#恢复数据库的名称 如果不书写恢复的数据库名称 会删除数据库的所有dbs然后恢复,给了就会重新生成加dateflag的库
RECONVERDBNAME=cube_test_
#恢复命令
RECONVERYBIN=/usr/local/mongodb/bin/mongorestore
#备份目录
BACKUPBASEDIR=/BAK/mongodbak/current
#存放的老数据
BACKUPBASEOLDDIR=/BAK/mongodbak/olddata/
#解压所文件的目录
BACKUPBASEEXTRACT=/BAK/mongodbak/extract/ for file in $BACKUPBASEDIR/*
do
if test -f $file
then
#压缩文件的文件名 去除了绝对路径
tarfilename=${file##*/}
#获取时间标签 mongod_bak_DATE.tar.gz 就是这儿的DATE的值
dateflag=${tarfilename:11:10}
#解压文件到指定的目录
tar -xf $file -C ${BACKUPBASEEXTRACT}
if [[ $? -eq 0 ]];then
echo "解压缩成功,备份文件有效!"
else
echo "解压缩失败,备份文件有可能无效,请检查!"
exit 0
fi
#获取解压缩的绝对路径
gunzipdir=${BACKUPBASEEXTRACT}/home/davy/mongoBak/${dateflag}/
#进行数据库的恢复
if [ -z "$RECONVERDBNAME" ];then
${RECONVERYBIN} --drop ${gunzipdir} 2> /tmp/mongoright${dateflag}.log >>/tmp/mongoerr${dateflag}.err
else
${RECONVERYBIN} --db ${RECONVERDBNAME}${dateflag} ${gunzipdir}/cube_test 2> /tmp/mongoright${dateflag}.log >>/tmp/mongoerr${dateflag}.err
fi
if [[ $? -eq 0 ]];then
echo "数据库恢复成功,查看恢复日志/tmp/mongoright${dateflag}.log."
else
echo "数据库恢复失败,查看错误日志/tmp/mongoerr${dateflag}.err."
fi
rm -rf ${BACKUPBASEEXTRACT}/*
if [[ $? -eq 0 ]];then
echo "清除压缩文件成功."
else
echo "清除压缩文件失败\n."
fi
#将恢复后的文件放在olddata下去
mv ${BACKUPBASEDIR}/* ${BACKUPBASEOLDDIR}
fi
done

Mongodb之备份恢复脚本的更多相关文章

  1. mongodb数据库备份恢复-windows系统

    备份语法: mongodump命令脚本语法如下: >mongodump -h dbhost -d dbname -o dbdirectory -h: MongDB所在服务器地址,例如:127.0 ...

  2. Mongodb数据备份恢复

    Mongodb数据备份恢复 一.MongoDB数据库导入导出操作 1.导出数据库 twangback为备份的文件夹 命令: mongodump -h 127.0.0.1[服务器IP] -d advie ...

  3. mongodb 的备份恢复导入与导出

    导入导出 use hndb; db.s.save({name:'李四',age:18,score:80,address:'郑州'}); db.s.save({name:'李三',age:8,score ...

  4. mongodb数据库备份恢复

    MongoDB数据文件备份与恢复   备份与恢复数据对于管理任何数据存储系统来说都是非常重要的.   1.冷备份与恢复——创建数据文件的副本(前提是要停止MongoDB服务器),也就是直接copy  ...

  5. Centos 8 上定时备份Gitlab ,脚本实现定时备份,备份恢复

    定时备份 要求 为了能够备份和恢复,请确保你的系统上安装了Rsync yum install rsync -y 配置备份目标机器免密认证 执行ssh-keygen -t rsa 生成私钥和公钥 ssh ...

  6. postgresql 和 mysql 数据库备份恢复以及时区问题

    概要 postgesql 12 备份/恢复脚本 时区设置 mysql 5.6 备份/恢复脚本 时区设置 概要 postgresql 和 mysql 是最常用的 2 种开源关系数据库, 很多项目也会优先 ...

  7. 010.MongoDB备份恢复

    一 MongoDB备份 1.1 备份概述 mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoi ...

  8. Mongodb的备份,恢复,导入与导出(cmd命令行实现)

    要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下命令均在cmd ...

  9. MongoDB学习(三)数据导入导出及备份恢复

    这几天想着公司要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下 ...

随机推荐

  1. hdu 1423 最长上升递增子序列

    #include <iostream> #include <cstdio> #include <cstring> using namespace std; ; in ...

  2. C#中Hashtable的用法 转

    原文发布时间为:2009-04-14 -- 来源于本人的百度文章 [由搬家工具导入] 一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Coll ...

  3. .NET设计模式系列文章《转》

    原文发布时间为:2008-11-02 -- 来源于本人的百度文章 [由搬家工具导入] http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911 ...

  4. linux下創建啓動圖標

    Linux下如何为刚安装好的Eclipse在桌面建一个启动图标?(QtCreator 也可以类似去做). 首先:gedit    /usr/share/applications/eclipse.des ...

  5. 【Visual Studio】以管理员的身份运行软件

  6. error: expected class-name before '{' token(转)

    错误原因 1. 头文件引用的类中,结尾可能少了;  ,, 例如:class Cwj{}          忘记了以;结尾哦. 2. 引用的头文件的顺序先后相互冲突:例如:Msg类中包含了#includ ...

  7. Oracle SQL优化进阶学习

    引言 对于下面的Oracle分页如何优化该段语句: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM task_log order by ...

  8. java获取整数的各位数值

    第一种是取模运算 int qian =input/1000; //千位除以1000 int bai = input/100%10;//百位除以100%10 int shi = input%100/10 ...

  9. Codeforces Round #450 (Div. 2) C. Remove Extra One【*模拟链表/一个数比前面所有数大就是个record。删掉一个数,让record的个数尽量多。】

    C. Remove Extra One time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  10. codevs——1220 数字三角形(棋盘DP)

     时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或 ...