mongodumpmongorestorebsondumpmongoimportmongoexportmongostatmongotopmongofilesMongoDB工具 >MongoDB数据库工具 > mongorestore
该mongorestore程序将由创建的二进制数据库转储mongodump或标准输入中的数据加载到mongodor mongos实例中。
运行mongorestore系统命令行,而不是mongo外壳。
也可以看看
mongodump 提供相应的二进制数据导出功能。
从MongoDB 4.4开始,mongorestore现已与MongoDB服务器分开发布,并使用其自己的版本控制(初始版本为)100。以前,mongorestore该版本与MongoDB Server一起发布,并使用了匹配的版本控制。
有关MongoDB 4.2或更早版本的
文档mongorestore,请参阅该工具版本的MongoDB服务器文档:
本文档的版本100的mongorestore。
mongorestore版本100支持以下版本的MongoDB Server:
虽然mongorestore在早期版本的MongoDB服务器上可以使用,但不能保证任何此类兼容性。
mongorestore100以下平台支持该版本:
| x86_64 | 的ARM64 | PPC64LE | s390x | |
|---|---|---|---|---|
| 亚马逊2 | ✓ | |||
| 亚马逊2013.03+ | ✓ | |||
| Debian 10 | ✓ | |||
| Debian 9 | ✓ | |||
| Debian 8 | ✓ | |||
| RHEL / CentOS 8 | ✓ | ✓ | ||
| RHEL / CentOS 7 | ✓ | ✓ | ✓ | |
| RHEL / CentOS 6 | ✓ | ✓ | ||
| SUSE 12 | ✓ | |||
| Ubuntu 20 | ✓ | |||
| Ubuntu 18 | ✓ | ✓ | ✓ | ✓ |
| Ubuntu 16 | ✓ | ✓ | ✓ | ✓ |
| Windows 8及更高版本 | ✓ | |||
| Windows Server 2012及更高版本 | ✓ | |||
| macOS 10.12或更高版本 | ✓ |
运行mongorestore系统命令行,而不是mongo外壳。
例如,要从dump目录还原到mongod在port上运行的本地
实例27017:
作为mongorestore从恢复dump/目录中,它会创建数据库和集合根据需要和记录其进展:
您还可以从dump/目录中还原一个或多个特定集合
。例如,以下操作从目录中的相应数据文件恢复单个集合dump/
:
如果dump/目录不包含指定名称空间的相应数据文件,则不会还原任何数据。例如,以下内容指定dump/目录中没有对应数据的集合名称空间:
的mongorestore输出以下消息:
有关更多示例,请参见示例。
有关选项和参数的更多信息,请参见 选项。
mongorestore可以创建新数据库或将数据添加到现有数据库。但是,mongorestore仅执行插入操作,不执行更新。也就是说,如果将文档还原到现有数据库,并且collection和现有文档的值_id字段与要还原的文档相同,
mongorestore则不会覆盖这些文档。
mongorestore重新创建由记录的索引
mongodump。
注意
对于featureCompatibilityVersion(fCV)设置为"4.0"或更早的MongoDB安装,将创建索引
。error if an index key in an existing document exceeds the
limit
为避免此问题,请考虑使用哈希索引或对计算值建立索引。如果要在还原数据后解决索引问题,可以通过将mongod
实例的failIndexKeyTooLong参数设置为false 来禁用目标数据库上的默认索引键长度验证。
在一般情况下,使用相应的版本mongodump
和mongorestore。也就是说,要还原使用特定版本创建的数据文件mongodump,请使用的相应版本mongorestore。
system.profile集合¶mongorestore不还原system.profile收集数据。
mongorestore自动创建符合FIPS的连接到一个mongod/ mongos被
配置为使用FIPS模式。
如果在--writeConcern选项和
--uri连接字符串选项中都指定了写入关注
,则该
--writeConcern值将覆盖URI字符串中指定的写入关注。
要将数据还原到已启用访问控制的MongoDB部署中,该restore角色提供必要的特权,以便从备份中还原数据(如果数据不包括system.profile
收集数据并且您mongorestore未--oplogReplay选择该
选项便可以运行)。
如果备份数据包括system.profile收集数据或mongorestore使用该--oplogReplay选项运行
,则
需要其他特权:
system.profile |
如果备份数据包括 内置角色 |
--oplogReplay |
要与之一起运行 仅授予必须 |
有关mongorestore作为备份和恢复策略一部分使用的概述,请参阅
使用MongoDB工具备份和还原。
mongodump并且不能作为正在进行分片事务的4.2+分片群集的备份策略的一部分,因为使用创建的备份
不能保持分片事务的原子性保证。mongorestore
mongodump
对于具有正在进行中的分片事务的4.2+分片群集,请使用以下协调的备份和还原过程之一,该过程 确实维护了跨分片事务的原子性保证:
mongorestore¶--help¶返回有关mongorestore的选项和用法的信息。
--verbose, -v¶增加标准输出或日志文件中返回的内部报告的数量。-v通过多次包含选项来增加详细程度(例如)-vvvvv。
--version¶返回mongorestore发行版号。
--uri=<connectionString>¶指定可解析的URI 连接字符串(用引号引起来)以连接到MongoDB部署。
有关连接字符串的组成部分的信息,请参阅“ 连接字符串URI格式”文档。
注意
对于TLS / SSL选项,请使用命令行选项代替TLS / SSL的 URI选项(从4.2开始可用)。
--host=<hostname><:port>, -h=<hostname><:port>¶默认值:本地主机:27017
指定mongod要连接的主机名称。默认情况下,mongorestore尝试连接到端口号为localhost上运行的MongoDB实例27017。
要连接到副本集,请指定replSetName集合成员的
和种子列表,如下所示:
指定副本集列表格式时,mongorestore始终连接到primary。
您还可以通过仅指定该成员的主机和端口来连接到副本集的任何单个成员:
如果使用IPv6并使用<address>:<port>格式,则必须将地址和端口组合的一部分括在方括号(例如[<address>])中。
另外,当与选项一起使用时,您也可以直接在URI连接字符串中指定主机名
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--host--uri
--port=<port>¶默认值:27017
指定MongoDB实例在其上侦听客户端连接的TCP端口。
另外,当与选项一起使用时,您也可以直接在URI连接字符串中指定端口
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--port--uri
--ssl¶启用与mongod或mongos已启用TLS / SSL支持的连接。
另外,当与选项一起使用时,您也可以直接在URI连接字符串中配置TLS / SSL支持
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--ssl--uri
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslCAFile=<filename>¶指定.pem包含来自证书颁发机构的根证书链的文件。.pem使用相对或绝对路径指定文件的文件名
。
另外,当与选项一起使用时,您也可以.pem直接在URI连接字符串中指定文件
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--sslCAFile--uri
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslPEMKeyFile=<filename>¶指定.pem同时包含TLS / SSL证书和密钥的文件。.pem使用相对或绝对路径指定文件的文件名。
使用--ssl选项连接到mongod或mongos已
CAFile启用而未
启用时,此选项是必需的allowConnectionsWithoutCertificates。
另外,当与选项一起使用时,您也可以.pem直接在URI连接字符串中指定文件
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--sslPEMKeyFile--uri
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslPEMKeyPassword=<value>¶指定用于解密证书密钥文件的密码(即
--sslPEMKeyFile)。--sslPEMKeyPassword仅当证书密钥文件已加密时才使用该选项。在所有情况下,mongorestore都会从所有日志记录和报告输出中删除密码。
如果PEM文件中的私钥已加密并且您未指定该--sslPEMKeyPassword选项,则mongorestore将提示您输入密码。请参阅
TLS / SSL证书密码。
另外,当与选项一起使用时,也可以直接在URI连接字符串中指定密码
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--sslPEMKeyPassword--uri
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslCRLFile=<filename>¶指定.pem包含证书吊销列表的文件。.pem使用相对或绝对路径指定文件的文件名。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslAllowInvalidCertificates¶绕过服务器证书的验证检查,并允许使用无效的证书。使用该
allowInvalidCertificates设置时,MongoDB将使用无效证书记录为警告。
警告
尽管可用,但请避免使用该
--sslAllowInvalidCertificates选项。如果必须使用--sslAllowInvalidCertificates,请仅在不可能进行入侵的系统上使用该选项。
在不验证服务器证书的情况下连接到mongod或
mongos实例具有潜在的安全风险。如果仅需要禁用TLS / SSL证书中的主机名验证,请参阅--sslAllowInvalidHostnames。
另外,当与选项一起使用时,您也可以直接在URI连接字符串中禁用证书验证
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--sslAllowInvalidCertificates--uri
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslAllowInvalidHostnames¶禁用TLS / SSL证书中的主机名验证。允许 mongorestore连接到MongoDB实例,即使其证书中的主机名与指定的主机名不匹配也是如此。
另外,当与选项一起使用时,也可以直接在URI连接字符串中禁用主机名验证
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--sslAllowInvalidHostnames--uri
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--username=<username>, -u=<username>¶指定用于向使用身份验证的MongoDB数据库进行身份验证的用户名。与--password和
--authenticationDatabase选项结合使用。
另外,当与选项一起使用时,您也可以直接在URI连接字符串中指定用户名
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--username--uri
--password=<password>, -p=<password>¶指定用于对使用身份验证的MongoDB数据库进行身份验证的密码。与--username和
--authenticationDatabase选项结合使用。
要提示用户输入密码,请传递--username
不带选项--password或将空字符串指定为
--password值,如中所示--password=""。
另外,当与选项一起使用时,也可以直接在URI连接字符串中指定密码
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--password--uri
--authenticationDatabase=<dbname>¶指定在其中--username创建指定内容的认证数据库。请参阅身份验证数据库。
另外,当与选项一起使用时,您也可以直接在URI连接字符串中指定身份验证数据库
。一起使用
和选项并指定有冲突的信息将导致错误。--urimongorestore--authenticationDatabase--uri