mongorestore是官方提供用来还原导入由mongodump导出生成的二进制备份文件的工具,通常与mongodump配合使用,关于mongodump工具的使用可以参考另一篇博文:MongoDB 逻辑备份工具mongodump

主要概要说明与mongodump一致,本文同样基于MongoDB 4.2 社区版本。

主要选项

通过执行选项--help选项获得:

mongorestore --help
Usage:
mongorestore <options> <directory or file to restore> Restore backups generated with mongodump to a running server.

选项分为几个大类:

  • general options:通用选项
  • connection options:连接选项
  • ssl options:安全连接选项
  • authentication options:验证选项
  • kerberos options:基于kerboeros验证选项
  • namespace options:命名空间选项
  • uri options:mongodb uri连接串选项
  • input options:输入选项
  • restore options:还原选项
  • verbosity options:显示选项

general options(通用选项)

--help      # 打印工具使用方式,选项说明。
--version # 打印工具版本并退出。

connection options(连接选项)

-h, --host=<hostname>   # 指定连接的实例主机名或者IP地址。
--port=<port> # 指定连接的实例端口号。
  • Standalone(单实例)

只指定选项--host

mongorestore --host="192.168.196.128:27017" dump/

同时指定选项--host--port

mongorestore --host="192.168.196.128" --port=27017 dump/
  • Replica Set(副本集)

对于副本集的连接,mongorestore总是连接副本集的主节点Primary。

mongorestore --host="dbabdSet/192.168.196.128:27017,192.168.196.128:27018,192.168.196.128:27019" dump/

也可以单独指定副本集的Primary节点进行连接(同单实例的连接方式)。

ssl options(安全连接选项)

--ssl
--sslCAFile=<filename>
--sslPEMKeyFile=<filename>
--sslPEMKeyPassword=<password>
--sslCRLFile=<filename>
--sslAllowInvalidCertificates
--sslAllowInvalidHostnames
--sslFIPSMode

关于ssl安全加密协议连接,本文不过多的赘述,详情可以参考官方文档:https://docs.mongodb.com/manual/reference/program/mongorestore/#cmdoption-mongorestore-ssl

authentication options(验证选项)

主要用于验证连接实例的用户的合法性。

-u, --username=<username>                   # 指定连接用户
-p, --password=<password> # 指定连接用户密码
--authenticationDatabase=<database-name> # 指定连接用户验证数据库
--authenticationMechanism=<mechanism> # 指定连接验证机制

注意:

如果需要在导入时显示指示输入密码,而不是直接写在选项中,则在指定--username选项的同时,不指定--password或者为--password选项指定一个空值,如:--password ""

kerberos options(kerboeros验证选项)

该选项主要是基于kerberos验证机制的连接验证选项,kerberos只有MongoDB企业版才支持,本文基于社区版本,有关kerberos可以参考官方文档:https://docs.mongodb.com/manual/core/kerberos/

namespace options(命名空间选项)

主要是指定需要导入还原的数据库和集合。

-d, --db=<database-name>                            # 指定从BSON文件需要还原的数据库名
-c, --collection=<collection-name> # 指定从BSON文件需要还原的集合名
--excludeCollection=<collection-name> # 指定还原时需要排除的集合名,如多个可以多次指定
--excludeCollectionsWithPrefix=<collection-prefix> # 指定还原时需要排除的集合名前缀
--nsExclude=<namespace-pattern> # 指定还原时需要排除的命名空间,可以理解为数据库和集合组合过滤,如 "test.myCollection", "reporting.*", "dept*.bar"
--nsInclude=<namespace-pattern> # 指定还原时需要包含的命名空间,可以理解为数据库和集合组合过滤
--nsFrom=<namespace-pattern> # 指定接受命名空间进行匹配还原,使用最少匹配原则
--nsTo=<namespace-pattern> # 指定接受命名空间进行匹配还原重命名,使用最少匹配原则

注意:

选项-d-c指定备份文件需要还原成的数据库名和集合名,如果实例中没有对应数据库或集合,则创建并还原导入数据,当指定这两个选项时,还原文件必须为BSON格式的文件,这两个选项在未来更新的版本将会被废弃,建议使用选项--nsInclude替代。

对于选项--nsInclude指定的命名空间在备份文件当中没有对应的数据库或集合,则数据不会被还原导入。

选项--nsFrom--nsTo主要是为了在还原时改变备份文件中的数据库和集合原来的命名空间,一般这两个选项结合着使用。

input options(输入选项)

影响mongorestore导入时的行为选项。

--objcheck                                           # 指定在还原插入对象时进行校验合法性
--oplogReplay # 指定还原后回放oplog达到完整基于时间点的还原
--oplogLimit=<seconds>[:ordinal] # 指定oplog还原开始的时间戳
--oplogFile=<filename> # 指定需要进行回放的oplog文件
--archive=<filename> # 指定需要进行还原的归档文件,如果不指定值,则该选项值默认获取标 准输入值
--restoreDbUsersAndRoles # 指定还原数据库中关于用户名和角色定义
--dir=<directory-name> # 指定还原的目录,'-' 为标准输入
--gzip # 指定对采用压缩格式保存的导入文件进行解压

注意:

如果备份文件为归档文件类型并且进行了压缩,则在还原时需要同时指定选项--archive--gzip

restore options(还原选项)

主要为mongorestore还原导入选项。

--drop                                               # 指定导入集合数据时先删除原集合
--dryRun # 指定进行预导入,不进行真正的还原导入操作
--writeConcern=<write-concern> # 指定导入数据时的写入优先级,如--writeConcern majority, --writeConcern '{w:3, wtimeout: 500, fsync: true, j: true}'
--noIndexRestore # 指定还原不导入索引
--convertLegacyIndexes # 指定导入时移除失效索引,并且重建索引
--noOptionsRestore # 阻止mongorestore对已还原的集合执行收集选项操作
--keepIndexVersion # 阻止mongorestore还原时升级已存在的索引版本
--maintainInsertionOrder # 指定还原导入时插入文档的顺序性
-j, --numParallelCollections= # 指定还原导入集合并行度,默认值:4
--numInsertionWorkersPerCollection= # 指定还原导入每个集合插入操作并行度,默认值:1
--stopOnError # 指定还原导入时出现错误后中止执行,少量文档还是有可能插入
--maintainInsertionOrder # 指定还原导入时出现错误后立刻中止执行
--bypassDocumentValidation # 指定跳过文档的合法性校验
--preserveUUID # 指定还原导入时保持集合原始的UUIDS

注意:

--drop选项指定在还原导入集合时先删除原先实例中存在的同名集合,该选项不会在运行实例中删除备份文件中没有的数据库或集合。

--maintainInsertionOrder选项从版本4.2开始引入,如果指定该选项,mongorestore在还原导入文档时以实际导出时的插入顺序一致,这其中包括批量写文档的顺序以及在批量中文档的插入顺序,在早期版本中只能保证批量写文档的顺序。如果指定该选项同时也指定了选项--stopOnError和设置选项--numInsertionWorkersPerCollection = 1,默认值:false。

--numParallelCollections选项指定还原时插入集合的并行数,默认值:4。

--numInsertionWorkersPerCollection选项指定还原导入当前集合的插入工作进程数,默认值:1。

--stopOnError选项指定在mongorestore还原导入时一出错就中止,默认情况下, 当mongorestore遇到主键重复或文档较验失败等错误时,导入进程并不会中止。

verbosity options(显示选项)

指定导出时log输出的显示的详细级别。

-v, --verbose=<level>  # 指定日志输出详细级别,如:-vvvvv 或 指定数值
--quiet # 指定不输出任何日志信息

使用示例

还原所有数据库

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck --dir /data/mongodump/full/

还原指定数据库

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck --nsInclude=dbabd.* --dir /data/mongodump/full/

还原指定数据库和指定集合

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck --nsInclude=dbabd.orders --dir /data/mongodump/full/

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck -d dbabd --dir /data/mongodump/full/dbabd/orders.bson

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck -d dbabd -c orders --dir /data/mongodump/full/dbabd/orders.bson

指定排除一个或多个集合进行还原

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck --excludeCollection=orders --dir /data/mongodump/full/

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck --nsExclude=dbabd.orders --dir /data/mongodump/full/

还原压缩格式的备份

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck --gzip --nsInclude=dbabd.orders --dir /data/mongodump/gzip/

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck --gzip -d dbabd --dir /data/mongodump/gzip/dbabd/orders.bson.gz

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --objc
heck --gzip -d dbabd -c orders --dir /data/mongodump/gzip/dbabd/orders.bson.gz

还原以归档文件形式存在的备份

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin -
-objcheck --nsInclude=dbabd.orders --archive=/data/mongodump/dbabd_orders.archive

还原集合时如果存在先清除原集合

mongorestore -h"192.168.196.128:27017" -uroot --authenticationDatabase admin --drop --objc
heck --dir /data/mongodump/full/

注意

mongorestore在还原导入过程中只执行插入操作,并不执行更新操作,如果还原导入已存在的实例中的数据库或集合有已存在相同_id的文档,mongorestore并不会覆盖。

mongorestore不导入system.profile集合数据。

对于开启了访问控制机制的实例,mongorestore要执行还原导入操作的话至少需要具有restore角色权限。

总结

本文简要梳理了MongoDB逻辑备份还原工具mongorestore的使用,mongorestore主要是与mongodump进行搭配,面对的问题也与mongodump如出一辙,在较大数据量的实例还原消耗的时间过长,同时重建索引也比较令人头疼。

参考

https://docs.mongodb.com/database-tools/mongorestore

https://docs.mongodb.com/manual/reference/program/mongorestore/#cmdoption-mongorestore-ssl

https://docs.mongodb.com/manual/core/kerberos

https://www.cnblogs.com/dbabd/p/13139556.html

☆〖本人水平有限,文中如有错误还请留言批评指正!〗☆

MongoDB 逻辑还原工具mongorestore的更多相关文章

  1. MongoDB 逻辑备份工具mongodump

    mongodump是官方提供的一个对数据库进行逻辑导出的备份工具,导出文件为BSON二进制格式,无法使用文本编辑工具直接查看.mongodump可以导出mongod或者mongos实例的数据,从集群模 ...

  2. mysql逻辑备份与还原工具mysqldump

    (一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所 ...

  3. MySQL数据备份之逻辑备份工具mysqldump

    #前言:我们知道对数据进行备份很重要,出现非正常操作可以进行对数据进行恢复,下面我们就来使用一下mysql数据库自带的一个逻辑备份工具mysqldump 1.简单概述 #mysqldump:mysql ...

  4. mysql多线程备份与还原工具mydumper

    (一)mydumper介绍 之前我们已经学过如何使用mysqldump备份恢复数据库:<mysql逻辑备份与还原工具mysqldump>,就目前来说,mysqldump是使用最广泛的MyS ...

  5. MongoDB 提供的工具

    MongoDB 提供的工具 官网 https://www.mongodb.com/ 工具 MongoDB 提供了一些工具,: MongoDB Compass: MongoDB数据库可视化工具(类似PL ...

  6. 官方出品,比 mydumper 更快的逻辑备份工具

    mysqldump 和 mydumper 是我们常用的两个逻辑备份工具. 无论是 mysqldump 还是 mydumper 都是将备份数据通过 INSERT 的方式写入到备份文件中. 恢复时,myl ...

  7. MongoDB【第二篇】MongoDB逻辑与物理存储结构

    基本的操作 一.常用的命令和基础知识 1.进入MongoDB sehll 首先我们进入到MongoDB所在目录执行 cd /work/app/mongodb/bin/ #启动 ./mongo 为了方便 ...

  8. 数据库备份还原工具EMS SQL Angel for SQL Server发布1.3版本

    EMS公司,是专门从事企业数据库以及内置于多层次客户服务器结构自动化开发.其EMS SQL Angel for SQL Server工具,便是SQL Servers数据库数据备份还原工具,并且还能使用 ...

  9. mongodb备份还原

    备份:mongodump mongodump常用参数 --db:指定导出的数据库 --collection:指定导出的集合 --excludeCollection:指定不导出的集合 --host :远 ...

随机推荐

  1. iOS-Swift版本自定义CStextView的实现

    CSTextView继承自UITextView,并为其增加了placeHolder属性,支持代码和SB方式创建:demo实现了CSTextView的自动排版 效果图 CSTextView地址: htt ...

  2. node实现批量修改图片尺寸

    前言 大家在工作中肯定有没有遇到过图片尺寸和我们要求的尺寸不一致的情况吧?通常我们会在网上找一下找在线的或者下载一个小工具,再或者通过ps的批处理解决.但是,作为程序猿,当然还是通过代码来解决这种小问 ...

  3. 使用VBS实现SSH远程登录并自动执行命令

    set ws=createobject("wscript.shell")ws.run "Putty所在路径\putty.exe -ssh -pw 你的密码 用户名@192 ...

  4. 【 哈希和哈希表】Three Friends【进制哈希】

    Three Friends 传送门:链接 (UPC)或  链接(大视野) 题目描述 Three friends like to play the following game. The first f ...

  5. WPS2016ProPlus_normal 安装包+序列号

    WPS OFFICE 2016 安装 链接:https://pan.baidu.com/s/1dfjNFDxcl1n2fvYTt9c86A 提取码: ij8e 下载解压:.txt是序列号,.exe是安 ...

  6. Spring Cloud 系列之 Dubbo RPC 通信

    Dubbo 介绍 官网:http://dubbo.apache.org/zh-cn/ Github:https://github.com/apache/dubbo 2018 年 2 月 15 日,阿里 ...

  7. 利用Azure Functions和k8s构建Serverless计算平台

    题记:昨晚在一个技术社区直播分享了"利用Azure Functions和k8s构建Serverless计算平台"这一话题.整个分享分为4个部分:Serverless概念的介绍.Az ...

  8. cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据

    cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据unique(b,e),删除连续性的,删除重复的数据,比如如果有两个连续的5,5,则留下一个.uniqu ...

  9. react 的一个插件

    Reactjs code snippets  (vs code  编辑器里面的一个插件    支持 react 得简写) rcc     和 rfc    可以快速生成react代码 下面网址是个re ...

  10. 并发编程之详解InheritableThreadLocal类原理

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 在Java并发编 ...