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. Finer Resolution Observation and Monitoring -Global Land Cover更精细的分辨率观测和监测-全球土地覆盖

    http://data.ess.tsinghua.edu.cn/ 全球土地覆盖数据是了解人类活动与全球变化之间复杂互动的关键信息来源.FROM-GLC(全球土地覆盖的精细分辨率观测和监测)是首个使用陆 ...

  2. #1114-JSP指令

    JSP 指令 JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言. 语法格式如下: <%@ directive attribute = "value"%& ...

  3. USACO2018 DEC (Gold) (dp,容斥+哈希,最短路)

    \(T1\) 传送门 解题思路 傻逼\(dp\)..直接\(ST\)表处理最大值\(O(n^2)\)艹过了. 代码 #include<bits/stdc++.h> using namesp ...

  4. [CSP-S模拟测试]:f(Trie树+二分答案+meet in middle+two pointers)

    题目传送门(内部题67) 输入格式 第一行,三个整数$n$.$k$.$p$.第二行,$n$个自然数,表示$\{a_i\}$. 输出格式 输出一行,两个自然数,表示$f(res)$.$res$. 样例 ...

  5. 如何删除eclipse的subclipse插件记住的SVN用户名和密码

    如何删除eclipse的subclipse插件记住的SVN用户名和密码找到auth目录,将其以及子目录.子文件都删除.路径在:C:\Users\Administrator\AppData\Roamin ...

  6. 在Ubuntu18.04下安装Java 11

    一直以来,本人都使用第三方软件包"ppa:linuxuprising/java"安装Java JDK,最近一次安装时发现无法成功.这是由于现在无法直接从Oracle官网下载Java ...

  7. SpringMVC开发中遇到的异常1:No primary or default constructor found for interface java.util.List

    Request processing failed; nested exception is java.lang.IllegalStateException: No primary or defaul ...

  8. 虚拟主机支持apk

    扩展名中填写.apk MIME类型中填写apk的MIME类型  application/vnd.android.package-archive

  9. linux shell的一些配置

    alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias ...

  10. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_01 Collection集合_5_迭代器的代码实现

    迭代器的类型和collection一样.都是String类型的 判断集合内是不是有元素 取出第一个元素 多次next获取所有的值 没有元素,再去取就会抛出异常. 适应while for循环的格式了解一 ...