参考 > 参考 > MongoDB软件包组件 > mongodump
macOS Sierra和Go 1.6不兼容
在macOS Sierra上运行的用户需要3.2.10或更高版本 mongodump
。
MongoDB 4.4中即将进行的工具迁移
从MongoDB 4.4开始,mongodump
文档迁移到MongoDB数据库工具-mongodump。有关即将发布的mongodump
(工具版本100.0.0)版本的更多信息,请参见该页面
。
本页上的文档仅适用于MongoDB 4.2版本mongodump
。mongodump
可以按照以下“ 可用性”部分中的说明下载MongoDB 4.2版本
。
该mongodump
工具是MongoDB工具包的一部分。请查阅所用平台的
安装指南,以获取有关如何在MongoDB安装过程中安装工具包的说明。
该工具包也可以从
MongoDB下载中心获得,可以单独tools
下载,也可以包含在
TGZ
或ZIP
下载中,具体取决于平台。在Windows上,MSI
安装程序包括所有工具作为默认安装的一部分。
小费
如果从下载中心下载TGZ
或ZIP
文件,则可能需要更新PATH
环境变量以包括安装这些工具的目录。有关
更多信息,请参见所用平台的安装指南。
对于独立或副本集,mongodump
可以作为备份策略的一部分,其中
mongorestore
包括基于查询的部分备份,从生产到暂存或开发环境的同步或更改独立存储引擎的备份。
有关mongodump
结合
mongorestore
部分备份和恢复策略的概述,请参阅:
mongodump
并且不能作为正在进行分片事务的4.2+分片群集的备份策略的一部分,因为使用创建的备份
不能保持分片事务的原子性保证。mongorestore
mongodump
对于具有正在进行中的分片事务的4.2+分片群集,请使用以下协调的备份和还原过程之一,该过程 确实维护了跨分片事务的原子性保证:
要连接到在端口27017上运行的本地MongoDB实例并使用默认设置导出内容,请在mongodump
不使用任何命令行选项的情况下运行
:
要指定MongoDB实例的主机和/或端口,您可以:
在中指定主机名和端口:--uri connection string
在中指定主机名和端口--host
:
要连接到副本集以导出其数据,您可以:
在中指定副本集名称和成员:--uri connection string
在中指定副本集名称和成员--host
:
默认情况下,mongodump
从副本集的主数据库读取。要覆盖默认值,可以指定读取首选项:
如果指定读取的首选项标签,请包括以下
readPreferenceTags
选项:
您可以使用--readPreference
命令行选项指定读取首
选项。如果仅指定读取首选项模式,则命令行选项采用字符串:
或者,命令行选项可以使用带引号的文档
来指定模式,可选的读取首选项标签集和可选的
maxStalenessSeconds:'{ mode: <mode>, tagSets: [ <tag1>, ... ], maxStalenessSeconds:<num>}'
要连接到分片群集以导出其数据,您可以:
在中指定mongos
实例
的主机名--uri connection string
默认情况下,mongodump
从分片副本集的主数据库读取。要覆盖默认值,可以指定读取首选项:
如果指定读取的首选项标签,请包括以下
readPreferenceTags
选项:
您可以使用--readPreference
命令行选项指定读取首
选项。如果仅指定读取首选项模式,则命令行选项采用字符串:
或者,命令行选项可以使用带引号的文档
来指定模式,可选的读取首选项标签集和可选的
maxStalenessSeconds:'{ mode: <mode>, tagSets: [ <tag1>, ... ], maxStalenessSeconds: <num>}'
也可以看看
默认情况下,mongodump
使用read preference
primary
。要覆盖默认值,可以在
命令行选项或中指定
读取首--readPreference
选项。--uri connection string
从4.2版开始,如果您在URI字符串和--readPreference
选项中指定读取首选项,则该--readPreference
值将覆盖URI字符串中指定的读取首选项。
在早期版本中,这两个选项不兼容。
mongodump
local
在其输出中排除数据库的内容。
mongodump
输出仅捕获数据库中的文档,不包括索引数据。mongorestore
或mongod
必须在还原数据后重建索引。
在版本3.4中进行了更改: MongoDB 3.4添加了对只读视图的支持
。默认情况下,
mongodump
仅捕获视图的元数据:它不会创建视图中包含的文档的二进制导出。要捕获视图中的文档,请使用--viewsAsCollections
。
从4.2版开始,元数据文件mongodump
使用扩展JSON v2.0(规范)格式。要解析这些文件以进行还原,请使用
mongorestore
支持扩展JSON v2.0(规范或轻松模式)格式的4.2+版本。
小费
如果一般情况下,使用相应的版本mongodump
和mongorestore
。也就是说,要还原使用特定版本创建的数据文件mongodump
,请使用的相应版本mongorestore
。
mongodump
如果备份文件文件夹中存在输出文件,则它们将被覆盖。在mongodump
多次运行命令之前,请确保不再需要输出文件夹中的文件(默认为dump/
文件夹),或者重命名文件夹或文件。
当针对mongod
使用WiredTiger存储引擎的实例
运行时,
mongodump
输出未压缩的数据。
要mongodump
针对启用了访问控制的MongoDB部署
运行,您必须具有find
为每个要备份的数据库授予操作权限的特权。内置backup
角色提供了执行所有数据库备份所需的特权。
在版本3.2.1中更改:该backup
角色提供了其他特权,可以备份system.profile
使用数据库概要分析运行时存在的集合。以前,用户需要
read
访问此集合。
mongodump
¶--help
¶返回有关mongodump选项和用法的信息。
--verbose
,
-v
¶增加标准输出或日志文件中返回的内部报告的数量。-v
通过多次包含选项来增加详细程度(例如)-vvvvv
。
--version
¶返回mongodump版本号。
--uri
=<connectionString>
¶3.4.6版中的新功能。
指定可解析的URI 连接字符串(用引号引起来)以连接到MongoDB部署。
有关连接字符串的组成部分的信息,请参阅“ 连接字符串URI格式”文档。
注意
对于TLS / SSL选项,请使用命令行选项代替TLS / SSL的 URI选项(从4.2开始可用)。
重要
以下命令行选项不能与--uri
option 一起使用:
--host
--port
--db
--username
--password
(如果
URI连接字符串还包含密码)--authenticationDatabase
--authenticationMechanism
而是将这些选项指定为--uri
连接字符串的一部分。
--host
=<hostname><:port>
,
-h
=<hostname><:port>
¶默认值:本地主机:27017
指定mongod
要连接的主机名称。默认情况下,mongodump尝试连接到端口号为localhost上运行的MongoDB实例27017
。
要连接到副本集,请指定replSetName
集合成员的
和种子列表,如下所示:
指定副本集列表格式时,mongodump始终连接到primary。
您还可以通过仅指定该成员的主机和端口来连接到副本集的任何单个成员:
如果使用IPv6并使用<address>:<port>
格式,则必须将地址和端口组合的一部分括在方括号(例如[<address>]
)中。
--port
=<port>
¶默认值:27017
指定MongoDB实例在其上侦听客户端连接的TCP端口。
--ipv6
¶在3.0版中删除。
启用IPv6支持,并允许mongodump使用IPv6网络连接到MongoDB实例。在MongoDB 3.0之前,您必须指定--ipv6
使用IPv6。在MongoDB 3.0和更高版本中,始终启用IPv6。
--ssl
¶启用与mongod
或mongos
已启用TLS / SSL支持的连接。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslCAFile
=<filename>
¶指定.pem
包含来自证书颁发机构的根证书链的文件。.pem
使用相对或绝对路径指定文件的文件名
。
从3.4版开始,如果未指定--tlsCAFile
/ net.tls.CAFile
(或它们的别名--sslCAFile
/ net.ssl.CAFile
),并且您没有使用x.509身份验证,则在连接到启用TLS / SSL的服务器时将使用系统范围的CA证书存储。
要使用x.509身份验证,--tlsCAFile
或者net.tls.CAFile
必须指定,除非使用--tlsCertificateSelector
或
--net.tls.certificateSelector
。或者,如果使用ssl
别名,
--sslCAFile
或net.ssl.CAFile
必须指定,除非使用
--sslCertificateSelector
或net.ssl.certificateSelector
。
警告
版本3.2及更早版本:对于TLS / SSL连接(--ssl
),以
mongod
和mongos
,如果mongodump没有运行
--sslCAFile
,mongodump不会尝试验证服务器证书。这会造成过期mongod
和mongos
证书以及伪装成有效mongod
或
mongos
实例的外部进程的漏洞。如果可能发生入侵,请确保始终指定CA文件来验证服务器证书。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslPEMKeyFile
=<filename>
¶指定.pem
同时包含TLS / SSL证书和密钥的文件。.pem
使用相对或绝对路径指定文件的文件名。
使用--ssl
选项连接到mongod
或mongos
已
CAFile
启用而未
启用时,此选项是必需的allowConnectionsWithoutCertificates
。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslPEMKeyPassword
=<value>
¶指定用于解密证书密钥文件的密码(即
--sslPEMKeyFile
)。--sslPEMKeyPassword
仅当证书密钥文件已加密时才使用该选项。在所有情况下,mongodump都会从所有日志记录和报告输出中删除密码。
如果PEM文件中的私钥已加密并且您未指定该--sslPEMKeyPassword
选项,则mongodump将提示您输入密码。请参阅
TLS / SSL证书密码。
有关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将使用无效证书记录为警告。
从MongoDB 4.0开始,如果在使用x.509身份验证时指定
--sslAllowInvalidCertificates
或
(或在MongoDB 4.2中为别名或
),则无效的证书仅足以建立TLS / SSL连接,但不足以进行身份验证。net.ssl.allowInvalidCertificates: true
--tlsAllowInvalidateCertificates
net.tls.allowInvalidCertificates: true
警告
尽管可用,但请避免使用该
--sslAllowInvalidCertificates
选项。如果必须使用
--sslAllowInvalidCertificates
,请仅在不可能进行入侵的系统上使用该选项。
如果mongo
Shell(和其他
MongoDB Tools)与该--sslAllowInvalidCertificates
选项一起运行
,则
mongo
Shell(和其他
MongoDB Tools)将不会尝试验证服务器证书。这会造成过期mongod
和mongos
证书以及伪装成有效mongod
或mongos
实例的外部进程
的漏洞
。如果仅需要禁用TLS / SSL证书中的主机名验证,请参阅--sslAllowInvalidHostnames
。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslAllowInvalidHostnames
¶禁用TLS / SSL证书中的主机名验证。即使其证书中的主机名与指定的主机名不匹配,也允许 mongodump连接到MongoDB实例。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--username
=<username>
,
-u
=<username>
¶指定用于向使用身份验证的MongoDB数据库进行身份验证的用户名。与--password
和
--authenticationDatabase
选项结合使用。
注意
您不能同时指定--username
和--uri
。
--password
=<password>
,
-p
=<