mongodb的备份有两种方式:

1.直接拷贝数据目录下的一切文件

2.使用mongodump方式

3.主从复制:http://www.cnblogs.com/huangxincheng/archive/2012/03/04/2379755.html  (这篇详细介绍了主从复制)

下面一一说明:

1.直接拷贝数据目录下的一切文件:

这种方式用来备份整个mongodb的数据库,不能备份单个数据库或者集合或者子集合

在拷贝过程中必须阻止数据文件发生更改。因此需要对数据库加锁,以防止数据写入.

db.fsyncLock()

上面的命令将阻塞写入操作,并将脏数据刷新到磁盘上,确保数据一致。
然后,拷贝数据文件到备份目录下

cp -R /data/db/* /backup

文件复制完成后,对数据库进行解锁,允许写操作

 db.fsyncUnlock()

注意: 在执行db.fsyncLock()和db.fsyncUnlock()时,不能关闭当前的shell窗口,否则可能无法连接而需要重新启动mongod服务。

恢复时,确保mongod没有运行,清空数据目录,将备份的数据拷贝到数据目录下,然后启动mongod

cp -R /backup/* /data/db/
mongod -f mongod.conf

2.使用mongodump方式:

千万不要fsyncLock与mongodump配合使用,如果数据库被锁定了,mongodump将永远挂起。

使用mongodump备份比较慢,在备份复制集时还有些问题,后续会说到。但是,用来备份单个数据库、集合、子集合还是比较好的方法。

/usr/local/mongodb/bin/mongodump -h 127.0.0.1 -d log-idp-mongo -o /databack_data1/backups/${DATE}
/usr/local/mongodb/bin/mongodump -h 127.0.0.1 -d log-hra-mongo -o /databack_data1/backups/${DATE}[root@mongo ~]#
# ./mongodump --help
options:
--help 显示帮助信息
-v [ --verbose ] 打印出更多信息,如时间等等 -vvvvv
--version 打印版本信息
-h [ --host ] arg 指定连接的mongodb主机,复制集时设置为<set name>/s1,s2
--port arg 指定mongodb端口号,也可以这么指定--host hostname:port
--ipv6 启用支持IPv6 support
-u [ --username ] arg 用户名
-p [ --password ] arg 密码
--authenticationDatabase arg user source (defaults to dbname)
--authenticationMechanism arg (=MONGODB-CR)
authentication mechanism
--dbpath arg 直接访问mongod的数据库文件,而不是连接到mongodb服务器。需要锁定数据目录,如果mongod当前在访问相同路径将不能使用。也就是说,mongod运行的情况下不能使用--dbpath,mongod未运行的情况下可以直接指定--dbpath
--directoryperdb 每个db一个单独的目录,需要指定dbpath
--journal 启用journaling,需要指定dbpath
-d [ --db ] arg 指定数据库
-c [ --collection ] arg 指定集合
-o [ --out ] arg (=dump) 指定输出目录,"-"表示标准输出
-q [ --query ] arg json查询
--oplog 使用oplog来生产时间点快照
--repair 尝试恢复崩溃的数据库
--forceTableScan 强制表扫描,不使用$snapshot

常用的是:mongodump -h 主机 -u 用户名 -p 密码 -d 数据库 -c 集合 -o 备份目录

mongodb恢复时采用mongorestore来恢复

# ./mongorestore --help   //相同部分参数意义参加上面的mongodump
-v [ --verbose ]
--version
-h [ --host ] arg
--port arg
--ipv6
-u [ --username ] arg
-p [ --password ] arg
--authenticationDatabase arg
--authenticationMechanism arg (=MONGODB-CR)
--dbpath arg
--directoryperdb
--journal
-d [ --db ] arg
-c [ --collection ] arg
--objcheck 在插入前验证对象,默认启用
--noobjcheck 不在插入前验证对象
--filter arg 插入前过滤
--drop 在插入前删除所有文档
--oplogReplay 在恢复时应用oplog
--oplogLimit arg include oplog entries before the
provided Timestamp (seconds[:ordinal])
during the oplog replay; the ordinal
value is optional
--keepIndexVersion don't upgrade indexes to newest version
--noOptionsRestore don't restore collection options
--noIndexRestore don't restore indexes
--w arg (=) minimum number of replicas per write

恢复整个mongodb的数据库:

mongorestore -p  dump/

恢复到特定的库和集合:

mongorestore --db ttlsa_com --collection posts dump/old_ttlsa_com/old_posts.bson

注意: mongodump和mongorestore版本最好相匹配。

linux下的mongodb的备份与恢复的更多相关文章

  1. MongoDB和Java(1):Linux下的MongoDB安装

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  2. Linux下MySQL数据库的备份与恢复

    Linux下MySQL数据库的备份与恢复 作者:Grey 原文地址: Github 语雀 博客园 基于版本 MySQL5.7 Deepin Linux 15.11 xtrabackup-2.4.18 ...

  3. Linux下安装MongoDB

    MongoDB是一个C++编写的基于分布式文件存储的数据库,是一个介于关系和非关系之间的数据库,当然也属于NoSQL的行列,存储方式和Redis类似,是json格式的kav-value存储方式,只是R ...

  4. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  5. Linux下安装mongodb详细过程

    本次安装mongodb使用yum.repo方式.详细过程请参考,也列出一些安装过程中的错误,欢迎指正. mongodb版本:3.0 先在linux下cd 到 /etc/yum.repos.d/ 新建脚 ...

  6. 在linux下运行mongodb

    一>下载 1.去mongodb官网下拉框中找到 linux =>RHEL 6 => Package Manager: 2.Instructions for installing wi ...

  7. Linux 下安装 Mongodb

    mongodb在linux下面的安装应该是很简单的,但是有一个小点需要注意,这也就是我为什么写这篇博客的原因. 首先到其官网上下载最新稳定版,解压到目录,如/usr/local/mongodb 在mo ...

  8. Linux下安装 mongodb

    1.下载 去官网 https://www.mongodb.com  找到对应版本的mongodb 的下载地址 这样的: https://fastdl.mongodb.org/linux/mongodb ...

  9. 26、linux下安装MongoDB

    26.1.MongoDB介绍: 1.什么是MongoDB: MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能. Mo ...

随机推荐

  1. ORB an efficient alternative to SIFT or SURF

    AbstractFeature matching is at the base of many computer vision problems, such as object recognition ...

  2. 关于Idea热部署,修改代码不需要重启tomcat

  3. progress组件(进度条)

    progress组件:进度条 progress组件的属性: percent:类型:number 设置百分比 (0~100) show-info:类型:布尔 在进度条右侧显示百分比 border-rad ...

  4. Visual Studio使用技巧 +谷歌浏览器使用技巧总结

    一.总结下visual studio常用的使用技巧,有助于提高效率: 1.给代码行打标记:  ctrl + K :给行打标记:ctrl + K + N:切换标记,即使当前页关闭了,也可以适用此快捷键快 ...

  5. 构建嵌入式Linux交叉编译工具链

    开源交叉编译工具链制作方法汇总: 1) 使用crosstool/crosstool-ng生成 2) 使用buildroot生成 ARM交叉编译工具链说明: 1) arm-linux-gcc是一个集合命 ...

  6. Ajax的封装。

    封装 Ajax 因为Ajax 使用起来比较麻烦,主要就是参数问题,比如到底使用GET 还是POST:到 底是使用同步还是异步等等,我们需要封装一个Ajax 函数,来方便我们调用.    封装支持接收来 ...

  7. (转)linux nc命令使用详解

    linux nc命令使用详解 原文:https://www.2cto.com/os/201306/220971.html 功能说明:功能强大的网络工具 语 法:nc [-hlnruz][-g<网 ...

  8. TypeError: list indices must be integers or slices, not str

    错误如下: TypeError: list indices must be integers or slices, not str 错误代码块: aa是一组list套dict数据 函数insert接收 ...

  9. history历史记录在AJAX下出现异常跳转 [解决]

    事情是这样的,在一个历史记录指针应该在[1, 2, 3, 4]的[3]位置的情况下,出现了历史记录指针指向了[4]的情况,而且是在正常后退事件发生之后,(据我所知)没有代码操作的情况发生的. 这是一个 ...

  10. spring切换环境变量——@Profile注解的使用

    在容器中如果存在同一类型的多个组件,也可以使用@Profile注解标识要获取的是哪一个bean,这在不同的环境使用不同的变量的情景特别有用.例如,开发环境.测试环境.生产环境使用不同的数据源,在不改变 ...