MongoDB 逻辑还原工具mongorestore
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的更多相关文章
- MongoDB 逻辑备份工具mongodump
mongodump是官方提供的一个对数据库进行逻辑导出的备份工具,导出文件为BSON二进制格式,无法使用文本编辑工具直接查看.mongodump可以导出mongod或者mongos实例的数据,从集群模 ...
- mysql逻辑备份与还原工具mysqldump
(一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所 ...
- MySQL数据备份之逻辑备份工具mysqldump
#前言:我们知道对数据进行备份很重要,出现非正常操作可以进行对数据进行恢复,下面我们就来使用一下mysql数据库自带的一个逻辑备份工具mysqldump 1.简单概述 #mysqldump:mysql ...
- mysql多线程备份与还原工具mydumper
(一)mydumper介绍 之前我们已经学过如何使用mysqldump备份恢复数据库:<mysql逻辑备份与还原工具mysqldump>,就目前来说,mysqldump是使用最广泛的MyS ...
- MongoDB 提供的工具
MongoDB 提供的工具 官网 https://www.mongodb.com/ 工具 MongoDB 提供了一些工具,: MongoDB Compass: MongoDB数据库可视化工具(类似PL ...
- 官方出品,比 mydumper 更快的逻辑备份工具
mysqldump 和 mydumper 是我们常用的两个逻辑备份工具. 无论是 mysqldump 还是 mydumper 都是将备份数据通过 INSERT 的方式写入到备份文件中. 恢复时,myl ...
- MongoDB【第二篇】MongoDB逻辑与物理存储结构
基本的操作 一.常用的命令和基础知识 1.进入MongoDB sehll 首先我们进入到MongoDB所在目录执行 cd /work/app/mongodb/bin/ #启动 ./mongo 为了方便 ...
- 数据库备份还原工具EMS SQL Angel for SQL Server发布1.3版本
EMS公司,是专门从事企业数据库以及内置于多层次客户服务器结构自动化开发.其EMS SQL Angel for SQL Server工具,便是SQL Servers数据库数据备份还原工具,并且还能使用 ...
- mongodb备份还原
备份:mongodump mongodump常用参数 --db:指定导出的数据库 --collection:指定导出的集合 --excludeCollection:指定不导出的集合 --host :远 ...
随机推荐
- python—列表,元组,字典
——列表:(中括号括起来:逗号分隔每个元素:列表中的元素可以是数字,字符串,列表,布尔值等等) (列表元素可以被修改) list(类) (有序的) [1]索引取值:切片取值:for循环:whi ...
- 使用WPF实现的 喜马拉雅FM 资源下载工具
因为喜马拉雅pc网站上没有提供下载功能,之前有个同事问我有没有办法将资源下载到本地,当然通过浏览器F12也能找到下载地址,但挺麻烦.正好最近想学wpf,周末在家也没事,于是对着百度撸了下代码.当然只能 ...
- 【Spring注解驱动开发】使用@Scope注解设置组件的作用域
写在前面 Spring容器中的组件默认是单例的,在Spring启动时就会实例化并初始化这些对象,将其放到Spring容器中,之后,每次获取对象时,直接从Spring容器中获取,而不再创建对象.如果每次 ...
- TCP协议“三次握手”与“四次挥手”详解(上)
在使用TCP协议进行数据的传输之前,客户端与服务器端需要建立TCP Connection,即建立连接,之后两端才能进行数据的传输. 下面堆TCP连接“三次握手”的过程进行说明. 1.相关概念 首先,我 ...
- 带你轻松了解C# Lock 关键字
相信绝大多数.NET玩家和我一样,常常使用Timer这个对象,而在WPF中使用DispatcherTimer的人也是很多,DispatcherTimer是在UI线程跑的.我们的程序中大多数都会充斥很多 ...
- 如何优雅的用js动态的添加html代码?
把想要的结构写在HTML里,用一个display:none的标签来包裹. 一般而言,会使用: 不设置为type="text/javascript"的script标签 textare ...
- [NOI Online #3]魔法值
题目 点这里看题目. 分析 我们不难想到,对于系数进行一下的拆分: \[\begin{aligned} f(u,j)&=\bigoplus_{(u,v)\in E} f(v,j-1)\ ...
- c++ vector基本函数、排序、查找用法
vector用法目录: 1.基本用法 2.vector的删除操作 3.vector的sort排序 4.翻转vector中的所有元素 5.find()函数的用法 6.vector实战(这里写的是我在最开 ...
- QTabWidget 中 关于Tab 关闭和添加的基本教程!
QTabWidget是PyQt5 中使用较为广泛的容器之一,经常会在日常使用的软件中用到它:QTabwidget是由几个标签组成,每个标签可以当作一个界面,下面就是应用Qtabwidget的一个简单例 ...
- 使用numpy生成二维正态分布
参考资料: https://www.zhihu.com/question/39823283?sort=created https://www.zhihu.com/question/288946037/ ...