MongoDB使用自带的命令行工具进行备份和恢复的教程

所属分类: 数据库 / MongoDB 阅读数: 63
收藏 0 赞 0 分享

要备份一个数据库,

mongorestore -d db /path/to/back_up

例如:

mongodump -d bookstore -o /data01/db_backup/

该命令会dump出该DB所有的collection
从备份文件夹恢复数据

mongorestore -d bookstore /data01/db_backup/bookstore

只备份或回复指定的collection
以bookstore DB 中statistics 表为例

mongodump -d bookstore -c statistics -o /data01/db_backup/

然后restore时指定该collection对应的bson文件

mongorestore -d bookstore -c statistics /data01/db_backup/bookstore/statistics.bson

通过条件查询dump
还可以通过一个query来dump中一个collection中符合条件的某些记录, 例如

mongodump -d bookstore -c novel_sources -q "{\"tag\": \"tag_11\"}" -o /data01/db_backup/

要注意的是如果query中有$符号,需要转义,例如

mongodump -d qunimei -c collection_name -q "{\"date\": {\"\$gte\": \"2015-03-25\"}}" -o /path/to/dump

注意事项
mongorestore并不会覆盖已有的记录,而是重复添加(如果可以的话)。
当数据量很大的时候,该方法耗时很大。
直接备份数据文件

mongo 127.0.0.1:27017/db_to_back --eval "db.fsyncLock()"
rsync -avh --delete /path/to/your/mongofile /path/to/backup/folder/
mongo 127.0.0.1:21001/turbo --eval "db.fsyncUnlock()"

关键是第一行和第三行的两个命令,对于db.fsyncLock(),mongodb的文档说明

db.fsyncLock()

Forces the mongod to flush all pending write operations to the disk and locks the entire mongod instance to prevent additional writes until the user releases the lock with the db.fsyncUnlock() command. db.fsyncLock() is an administrative command.
将mongod 未完成的写操作写入数据文件并阻止新的写入操作,知道运行db.fsyncUnlock()命令,因此拷贝数据文件前后要执行这两个命令。

与其他备份恢复工具的对比

mongodb自带的备份工具还有bsondump、mongoexport,恢复工具还有mongoimport ,几者之间的具体区别是:

bsondump、mongoexport、mongodump备份工具的对比:

1、bsondump可以指定备份的格式为json和debug模式,这个命令虽然附带,但很少用到 ;

2、mongoexport 可以导出json或csv格式的文件,可以指定查询过滤器或指定输出的域,不过此工具导出的json,csv可能对某些数据类型不兼容,因此可能不能全部数据导出,mongodump就可以全部兼容 ;

3、mongodump支持过滤 ,而且在导出速度和压缩率方面mongodump是最快最好的 。所以,若无csv或debug等特殊格式的备份需求,一般都使用 mongodump 作为备份工具 。

mongorestore与mongoimport 恢复工具的对比:

1、 mongoimport 可以接受json,csv,tsv格式的文件,每行为一个对象 。同mongoexport一样,其在恢复过程中同样存在兼容性的问题,所以有恢复不完整的概率 ;

2、mongorestore,速度较慢,比mongoimport慢2.5倍左右,但是根据mongodump导出的数据,可以完整导入数据。在restore过程中,索引根据之前dump的结果重新创造。

更多精彩内容其他人还在看

MongoDB 3.4 安装以 Windows 服务方式运行的详细步骤

这篇文章主要介绍了MongoDB 3.4 安装以 Windows 服务方式运行的详细步骤,需要的朋友可以参考下
收藏 0 赞 0 分享

MongoDB如何查询耗时记录的方法详解

查询操作是我们日常操作数据库经常会遇到的一个功能,下面这篇文章主要给大家介绍了关于MongoDB如何查询耗时记录的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

MongoDB开源数据库开发工具dbKoda

这篇文章主要介绍了MongoDB开源数据库开发工具dbKoda的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

MongoDB 查询操作的实例详解

这篇文章主要介绍了MongoDB 查询操作的实例的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
收藏 0 赞 0 分享

java操作mongoDB查询的实例详解

这篇文章主要介绍了java操作mongo查询的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
收藏 0 赞 0 分享

windows7下使用MongoDB实现仓储设计

本文给大家介绍了本人在物联网环境下基于MongoDB实现的仓储的配置信息及具体的使用示例,非常的实用,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

关于Mongodb 认证鉴权你需要知道的一些事

最近因为mongodb被黑了,早先我就疑惑过怎么这东西开启服务就能用了,后来找了各方资料,知道MongoDB默认是没有鉴权的,所以这篇文章主要给大家介绍了关于Mongodb认证鉴权你需要知道的一些事,需要的朋友可以参考下。
收藏 0 赞 0 分享

MongoDB TTL索引的实例详解

这篇文章主要介绍了 MongoDB TTL索引的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
收藏 0 赞 0 分享

MongoDB如何对数组中的元素进行查询详解

MongoDB在文档上支持数组,其次数组上可以实现嵌套,以及数组元素也可以文档。所以下面这篇文章主要给大家介绍了关于MongoDB如何对数组中元素进行查询的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

Mac中mongoDB的安装与卸载步骤详解

mongoDB是一个非常不错的数据库,最近也正在学习mongoDB,在使用一个数据库前必不可少的就是安装和卸载,所以下面这篇文章主要给大家介绍了关于Mac系统中mongoDB安装与卸载的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享
查看更多