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. 重学 Java 设计模式:实战桥接模式(多支付渠道「微信、支付宝」与多支付模式「刷脸、指纹」场景)

    作者:小傅哥 博客:https://bugstack.cn - 编写系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么你的代码那么多ifelse 同类的业务.同样的功能, ...

  2. (九)DVWA之SQL Injection--SQLMap&Fiddler测试(High)

    一.测试需求分析 测试对象:DVWA漏洞系统--SQL Injection模块--ID提交功能 防御等级:High 测试目标:判断被测模块是否存在SQL注入漏洞,漏洞是否可利用,若可以则检测出对应的数 ...

  3. akka-typed(4) - EventSourcedBehavior in action

    前面提到过,akka-typed中较重要的改变是加入了EventSourcedBehavior.也就是说增加了一种专门负责EventSource模式的actor, 最终和其它种类的actor一道可以完 ...

  4. MongoDB知识点总结

    一:MongoDB 概述    一.NoSQL 简介 1. 概念:NoSQL(Not Only SQL的缩写),指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数 ...

  5. [原创][开源] SunnyUI.Net 字体图标

    SunnyUI.Net, 基于 C# .Net WinForm 开源控件库.工具类库.扩展类库.多页面开发框架 Blog: https://www.cnblogs.com/yhuse Gitee: h ...

  6. C语言视频教程下载(百万年薪程序员录制,免费公开)

    <C/C++语言高性能服务开发基础>您可以自由下载.传播.发布或其它商业用途. 视频文件共13.6G,提供了QQ群文件和百度网盘两种方法,建议采用QQ群文件下载,速度较快. 一.下载方法 ...

  7. pycharm安装破解方法

    1.pycharm专业版官方下载链接:http://www.jetbrains.com/pycharm/download/#section=windows正常下载并安装 2.从https://gith ...

  8. startActivityForResult调用另外一个Activity获取返回结果

    startActivityForResult(intent,requestCode)可以调用另外一个Activity,并返回结果. 换头像案例 activity_main.xml <?xml v ...

  9. 基于docker-compose搭建gitlab

    安装及配置 修改docker-compose文件 vim docker-compose.yml gitlab: image: 'gitlab/gitlab-ce:latest' restart: al ...

  10. 10 种常用 Matplotlib 图的 Python 代码

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 喜欢的朋友欢迎关注小编,除了分享技术文章之外还有很多福利,私信“资料”可以 ...