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 :远 ...
随机推荐
- python3 主机实时监控系统
主机实时监控系统(可在局域网访问) 一.思路: 前端: 1.管理员登录(编写一个管理员登录界面) 技术:html+css 2.资源数据显示(用于显示主机资源数据情况) 插件:echarts+jquer ...
- RocketMQ系列(三)消息的生产与消费
前面的章节,我们已经把RocketMQ的环境搭建起来了,是一个两主两从的异步集群.接下来,我们就看看怎么去使用RocketMQ,在使用之前,先要在NameServer中创建Topic,我们知道Rock ...
- 智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台
背景 从传统运维到容器化的 Docker Swarm 编排,从 Docker Swarm 转向 Kubernetes,然后在 Kubernetes 运行 SpringCloud 微服务全家桶,到最终拥 ...
- Canvas绘制圆点线段
最近一个小伙遇到一个需求,客户需要绘制圆点样式的线条. 大致效果是这样的: 思路一:计算并使用arc填充 他自己实现了一种思路,然后咨询我有没有更好的思路. 先看看他的思路是如何实现的,大致代码如下: ...
- 两条命令实现nodejs快速安装
操作系统: debian, ubuntu, fedora 当前版本: v14.4.0 一键安装命令: curl -sL https://deb.nodesource.com/setup_14.x | ...
- cubic-bezier() 函数
2020-03-13 cubic-bezier() 函数 ubic-bezier() 函数定义了一个贝塞尔曲线(Cubic Bezier). 贝塞尔曲线曲线由四个点 P0,P1,P2 和 P3 定义. ...
- Java 多线程基础(五)线程同步
Java 多线程基础(五)线程同步 当我们使用多个线程访问同一资源的时候,且多个线程中对资源有写的操作,就容易出现线程安全问题. 要解决上述多线程并发访问一个资源的安全性问题,Java中提供了同步机制 ...
- ArchLinux的安装
ArichLinux安装教程 Arch Linux 于 2002 年发布,由 Aaron Grifin 领头,是当下最热门的 Linux 发行版之一.从设计上说,Arch Linux 试图给用户提供简 ...
- PAT 1043 Is It a Binary Search Tree (25分) 由前序遍历得到二叉搜索树的后序遍历
题目 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following proper ...
- turtle 画国旗
代码实现: import turtle import time import os def draw_square(org_x, org_y, x, y): turtle.setpos(org_x, ...