当前位置:  NOSQL>mongodb

如何进行MongoDB自动备份增量备份和恢复

 
分享到:
    发布时间:2017-2-21  


    本文导语: 如何进行MongoDB自动备份增量备份和恢复Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成...

如何进行MongoDB自动备份增量备份和恢复



如何进行MongoDB自动备份增量备份和恢复

Mongodb复制集由一组Mongod实例进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成员存储相同的数据集,提供数据的高可用

mongodb复制集简介

Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成员存储相同的数据集,提供数据的高可用。

MongoDB数据库导入导出的备份操作

1、导出数据库 twangback为备份的文件夹

命令:

    mongodump -h 127.0.0.1【服务器IP】 -d adview 【数据库名】-o  D:Mongodbdata wangback【自己定义备份存储文件夹】

例如:

    mongodump -h 127.0.0.1 -d twang-o twangback

-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

-d:需要备份的数据库实例,例如:twang

-o:备份的数据存放位置,例如:D:Mongodbdata,当然该目录需要提前建立,在备份完成后,系统自动在data目录下建立一个twangback目

录,这个目录里面存放该数据库实例的备份数据。

2、导入数据库从文件夹twangback

【注意:】导入请删除原有的文件

命令:

    mongorestore -h localhost -d twang【数据库名】

    mondodbback wang wangback wang【备份的路径

例如:

mongorestore-hlocalhost-dtwangD:Mongodbdata wangback wang

-h:MongoDB所在服务器地址

-d:需要恢复的数据库实例,例如:twang,当然这个名称也可以和备份时候的不一样,比如test2

--directoryperdb:备份数据所在位置,例如:D:Mongodbdata wangback wang

MongoDB 增量备份方案

MongoDB本身不支持增量备份,所以这里介绍几种我找到的,或者是自己使用代码实现的方法

我的环境:集群环境,

如果是分片集群,只好各【分片集群】和【配置服务器集群】分开备份处理,因为使用了Oplog 

所以不适合单机环境

一、 Delay server + Oplog replay(延迟节点+Oplog 重现)

【MongoDB The.Definitive.Guide 2nd.pdf】P363中介绍的使用mongooplog 工具来做增量备份的方法

应该 也属于此类方法。

二、使用mongosync 同步工具,    它的功能有:

    1.    全量同步

    2.    增量同步

    3.    全量和增量同步,实时同步

    4.    可批量同步某个库/表

    优点:  切换快,(如果使用了增量备份,那备份机必须是集群,因为用到oplog )


Mongodb在linux下面使用shell脚本写的定时备份代码


定时备份脚本如下:

#!/bin/bash
sourcepath='/app/mongodb-linux-x86_64-2.4.1'/bin
targetpath='/backup/mongobak'
nowtime=$(date +%Y%m%d) 
start()
{
  ${sourcepath}/mongodump --host 127.0.0.1 --port 27017 --out ${targetpath}/${nowtime}
}
execute()
{
  start
  if [ $? -eq 0 ]
  then
    echo "back successfully!"
  else
    echo "back failure!"
  fi
} 
if [ ! -d "${targetpath}/${nowtime}/" ]
then
 mkdir ${targetpath}/${nowtime}
fi
execute
echo "============== back end ${nowtime} =============="

mongodb数据恢复方法:mongorestore

mongorestore --help

#命令帮助

mongorestore -h  192.168.0.2 -u "root" -p "123"  d:mydb

#从备份目录d:mydb下恢复数据库到192.168.0.1上

#整库恢复使用admin库下的用户进行认证

mongorestore -h  192.168.0.2 -u "mydb_user" -p "123"  -d mydb  d:Usermydb --drop

#从备份目录d:Usermydb下恢复集合到192.168.0.1上mydb库的User集合,如果存在则先删除再恢复

#指定数据库名则需使用指定库下的用户进行认证.

  • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:如何进行MongoDB自动备份增量备份和恢复
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号