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 :远 ...
随机推荐
- Cypress系列(14)- 环境变量详解
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 前言 环境变量,其实就是根据环境的变化, ...
- [C#.NET 拾遗补漏]04:你必须知道的反射
阅读本文大概需要 3 分钟. 通常,反射用于动态获取对象的类型.属性和方法等信息.今天带你玩转反射,来汇总一下反射的各种常见操作,捡漏看看有没有你不知道的. 获取类型的成员 Type 类的 GetMe ...
- 将XML转换为JSON并强制数组
string xml = @"<person id='1'> <name>Alan</name> <url>http://www.google ...
- Python--编码转换
# -*- coding:gbk -*- # 即使设置文件编码为gbk,下方定义的字符串s1依旧为unicode # 获取默认编码格式 import sys print(sys.getdefaulte ...
- c常用函数-strchr和strrchr
strchr和strrchr strrchr函数用于查找指定字符在一个字符串中最后一次出现的位置,然后返回指向该位置的指针 strchr函数用于查找指定字符在一个字符串中第一次出现的位置,然后返回指向 ...
- python基础--程序交互、格式化输出、流程控制、break、continue
在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 (1) 程序交互 #!/usr/bin/env python # -*- coding: ...
- IP地址和端口
IP地址是网络中计算机的唯一标识.没有IP地址,计算机无法接入互联网. IPv4地址32bit,用点分十进制表示,如202.38.64.3 IPv6地址128bit,用冒号分割十六进制表示,如2001 ...
- 安卓开发,Service 服务
Service 服务 是一种应用组件,可长时间后台运行,不提供用户界面.如音乐播放器/下载程序.不能自己运行. 使用Service的方式: (一)startService(): 调用者和服务之间没有联 ...
- 007.OpenShift管理应用部署
一 REPLICATION CONTROLLERS 1.1 RC概述 RC确保pod指定数量的副本一直运行.如果pod被杀死或被管理员显式删除,复制控制器将自动部署相应的pod.类似地,如果运行的po ...
- Area.js下载
因为vant AddressEdit 地址编辑的必要组件area.js网站经常进不去,所以存在这里,area.js 代码如下: export default { province_list: { 11 ...