On this page
mongodump
在本页面
macOS Sierra and Go 1.6 Incompatibility
在 macOS Sierra 上运行的用户需要 3.2.10 或更高版本的 mongodump。
Synopsis
mongodump是用于创建数据库内容的二进制导出的 Util。 mongodump可以从mongod或mongos实例中导出数据。
mongodump可以是backup strategy与mongorestore的一部分,用于基于查询进行部分备份,从生产环境同步到暂存或开发环境或更改独立存储引擎。但是,对于分片群集和副本集,使用mongodump和mongorestore作为备份策略可能会出现问题。
从系统命令行运行mongodump,而不是mongo shell。
有关备份和恢复策略的mongodump以及mongorestore部分的概述,请参见使用 MongoDB 工具备份和还原。
See also
Behavior
Data Exclusion
mongodump在其输出中排除local
数据库的内容。
mongodump仅在其备份数据中捕获数据库中的文档,不包括索引数据。然后,mongorestore或mongod必须在还原数据后重建索引。
在版本 3.4 中进行了更改:MongoDB 3.4 添加了对read-only views的支持。默认情况下,mongodump仅捕获视图的元数据:它不会创建视图中包含的文档的二进制导出。要在视图中捕获文档,请使用--viewsAsCollections。
Read Preference
Replica Sets
在版本 3.2.0 中更改:连接到副本集时,为--host参数选择一个或多个目标会影响mongodump的读取首选项。
--host "replSet/rep1.example.net:27017,rep2.example.net:27017,rep3.example.net:27017"
--host "rep1.example.net:27017,rep2.example.net:27017,rep3.example.net:27017"
Sharded Clusters
在 3.0.5 版中进行了更改:对于分片为副本集的分片群集,在针对mongos实例运行时,mongodump不再喜欢从辅助成员读取数据。
对于分片群集,请为--host
选项指定mongos的主机名。 mongodump从群集中每个分片副本集的primary副本集成员中读取。
Overwrite Files
mongodump覆盖输出文件(如果它们存在于备份数据文件夹中)。在多次运行mongodump命令之前,请确保不再需要输出文件夹中的文件(默认为dump/
文件夹),或者重命名文件夹或文件。
数据压缩处理
当针对使用WiredTiger存储引擎的mongod实例运行时,mongodump输出未压缩的数据。
Working Set
mongodump会对mongod的性能产生不利影响。如果您的数据大于系统内存,则mongodump会将工作集推出内存。
Required Access
要针对已启用access control的 MongoDB 部署运行mongodump,您必须具有为每个要备份的数据库授予find操作的特权。内置的backup角色提供了执行所有数据库备份所需的特权。
在版本 3.2.1 中进行了更改:backup角色提供了额外的特权来备份使用database profiling运行时存在的system.profile集合。以前,用户需要对此集合具有额外的read
访问权限。
Options
在 3.0.0 版中进行了更改:mongodump删除了--dbpath
以及相关的--directoryperdb
和--journal
选项。要使用mongodump,您必须根据需要对正在运行的mongod或mongos实例运行mongodump。
mongodump
--help
``- 返回有关 mongodump 选项和用法的信息。
--verbose
`,` `-v`
- 增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含该选项(例如
-vvvvv
)来提高-v
形式的详细程度。
- 增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含该选项(例如
--quiet
``- 在安静模式下运行 mongodump ,以尝试限制输出量。
此选项禁止显示:
replication activity
连接接受的事件
连接关闭事件
--version
``- 返回 mongodump 版本号。
--uri
<connectionString>
- 3.4.6 版中的新功能。
指定可解析的URI 连接字符串以连接到 MongoDB 部署。
--uri "mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"
有关连接字符串的组成部分的更多信息,请参见连接字符串 URI 格式文档。
Important
--host
<hostname><:port>
,
-h
<hostname><:port>
- 默认:localhost:27017
指定要连接的mongod的可解析主机名。默认情况下, mongodump 尝试连接到端口号27017
上在 localhost 上运行的 MongoDB 实例。
要连接到副本集,请指定replSetName以及集合成员的种子列表,如下所示:
--host <replSetName>/<hostname1><:port>,<hostname2><:port>,<...>
指定副本集列表格式时, mongodump 始终连接到primary。
您还可以通过指定仅该成员的主机和端口来连接到副本集的任何单个成员:
--host <hostname1><:port>
在 3.0.0 版中进行了更改:如果您使用 IPv6 并使用<address>:<port>
格式,则必须将地址和端口组合的一部分括在方括号(例如[<address>]
)中。
--port
<port>
- 默认:27017
指定 MongoDB 实例在其上侦听 Client 端连接的 TCP 端口。
--ipv6
``- 已在 3.0 版中删除.
启用 IPv6 支持,并允许 mongodump 使用 IPv6 网络连接到 MongoDB 实例。在 MongoDB 3.0 之前,您必须指定--ipv6才能使用 IPv6.在 MongoDB 3.0 和更高版本中,始终启用 IPv6.
--ssl
``- 2.6 版的新功能。
启用与启用了 TLS/SSL 支持的mongod或mongos的连接。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslCAFile
<filename>
- 2.6 版的新功能。
指定包含来自证书颁发机构的根证书链的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
从 3.4 版开始,如果未指定--sslCAFile
或ssl.CAFile
并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。
如果使用 x.509 身份验证,则必须指定--sslCAFile
或ssl.CAFile
。
Warning
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslPEMKeyFile
<filename>
- 2.6 版的新功能。
指定同时包含 TLS/SSL 证书和密钥的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
使用--ssl选项连接到已启用CAFile且未启用allowConnectionsWithoutCertificates的mongod或mongos时,此选项是必需的。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslPEMKeyPassword
<value>
- 2.6 版的新功能。
指定用于解密证书密钥文件的密码(即--sslPEMKeyFile)。仅当证书密钥文件已加密时,才使用--sslPEMKeyPassword选项。在所有情况下, mongodump 都会从所有日志记录和报告输出中删除密码。
如果 PEM 文件中的私钥已加密,并且您未指定--sslPEMKeyPassword选项,则 mongodump 会提示您 Importing 密码。参见TLS/SSL 证书密码短语。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslCRLFile
<filename>
- 2.6 版的新功能。
指定包含证书吊销列表的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslAllowInvalidCertificates
``- 2.6 版的新功能。
绕过服务器证书的验证检查,并允许使用无效的证书。使用allowInvalidCertificates设置时,MongoDB 将使用无效证书记录为警告。
从 MongoDB 3.6.6 开始,如果在使用 x.509 身份验证时指定--sslAllowInvalidCertificates
或ssl.allowInvalidCertificates: true
,则无效的证书仅足以构建 TLS/SSL 连接,而对于身份验证则“不足”。
Warning
对于与mongod和mongos的 TLS/SSL 连接,请尽可能避免使用--sslAllowInvalidCertificates
,并且仅在不可能进行入侵的系统上使用--sslAllowInvalidCertificates
。
如果mongo shell(和其他MongoDB Tools)与--sslAllowInvalidCertificates
选项一起运行,则mongo shell(和其他MongoDB Tools)将不会尝试验证服务器证书。这对过期的mongod和mongos证书以及冒充有效的mongod或mongos实例的外部进程造成了漏洞。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslAllowInvalidHostnames
``- 3.0 版中的新功能。
禁用 TLS/SSL 证书中的主机名验证。允许 mongodump 连接到 MongoDB 实例,即使其证书中的主机名与指定的主机名不匹配也是如此。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslFIPSMode
``- 2.6 版的新功能。
指示 mongodump 使用已安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用--sslFIPSMode选项。
Note
兼容 FIPS 的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参见为 FIPS 配置 MongoDB。
--username
<username>
,
-u
<username>
- 指定用于对使用身份验证的 MongoDB 数据库进行身份验证的用户名。与--password和--authenticationDatabase选项结合使用。
Note
您不能同时指定--username和--uri。
--password
<password>
,
-p
<password>
- 指定用于对使用身份验证的 MongoDB 数据库进行身份验证的密码。与--username和--authenticationDatabase选项结合使用。
在版本 3.0.2 中进行了更改:要提示用户 Importing 密码,请传递不带--password的--username选项,或者像--password ""
一样将空字符串指定为--password值。
Note
您不能同时指定--password和--uri。
--authenticationDatabase
<dbname>
- 指定已在其中创建指定的--username的身份验证数据库。参见Authentication Database。
Note
您不能同时指定--authenticationDatabase和--uri。
如果未指定身份验证数据库,则 mongodump 假定指定要导出的数据库包含用户的凭据。
如果您未指定身份验证数据库或要导出的数据库,则 mongodump 假定admin
数据库拥有用户的凭据。
--authenticationMechanism
<name>
- 默认:SCRAM-SHA-1
在 2.6 版中进行了更改:添加了对PLAIN
和MONGODB-X509
身份验证机制的支持。
在版本 3.0 中进行了更改:添加了对SCRAM-SHA-1
身份验证机制的支持。将默认机制更改为SCRAM-SHA-1
。
指定 mongodump 实例用于对mongod或mongos进行身份验证的身份验证机制。
Value | Description |
---|---|
SCRAM-SHA-1 | RFC 5802使用 SHA1 哈希函数的标准咸化挑战响应身份验证机制。 |
MONGODB-CR | MongoDB 质询/响应身份验证。 (* MongoDB 3.6 中已弃用*) |
MONGODB-X509 | MongoDB TLS/SSL 证书认证。 |
GSSAPI (Kerberos) | 使用 Kerberos 的外部身份验证。此机制仅在MongoDB Enterprise中可用。 |
PLAIN(LDAP SASL) | 使用 LDAP 的外部身份验证。您也可以使用PLAIN 对数据库中的用户进行身份验证。 PLAIN 以纯文本形式传输密码。此机制仅在MongoDB Enterprise中可用。 |
Note
您不能同时指定--authenticationMechanism和--uri。
--gssapiServiceName
``- 2.6 版的新功能。
使用GSSAPI/Kerberos指定服务的名称。仅当服务未使用默认名称mongodb
时才需要。
此选项仅在 MongoDB Enterprise 中可用。
--gssapiHostName
``- 2.6 版的新功能。
使用GSSAPI/Kerberos指定服务的主机名。 仅如果计算机的主机名与 DNS 解析的主机名不匹配。
此选项仅在 MongoDB Enterprise 中可用。
--db
<database>
,
-d
<database>
- 指定要备份的数据库。如果未指定数据库,则mongodump将此实例中的所有数据库复制到转储文件中。
--collection
<collection>
,
-c
<collection>
- 指定要备份的集合。如果未指定集合,则此选项会将指定数据库或实例中的所有集合复制到转储文件中。
--query
<json>
,
-q
<json>
- 提供JSON document作为查询,可以选择限制mongodump的输出中包含的文档。
您必须将查询文档括在单引号('{ ... }'
)中,以确保它不会与 Shell 环境交互。
--queryFile
<path>
- 3.2 版中的新功能。
将包含 JSON 文档的文件的路径指定为查询过滤器,以限制mongodump输出中包含的文档。 --queryFile使您可以创建太大而无法容纳终端缓冲区的查询过滤器。
--readPreference
<string>
- 为 mongodump 指定read preference。
See 读取首选项模式.
连接到mongos或replica set时, mongodump 默认为primary read preference。
否则, mongodump 默认为nearest。
Warning
将primary以外的read preference与mongos连接使用时,可能会导致不一致,重复或丢失文档的情况。
See Read Preference.
--forceTableScan
``- 默认情况下,当扫描具有该索引的集合时, mongodump 使用
_id
索引(例如Views没有任何索引)。指定--forceTableScan以指示 mongodump 扫描集合数据,而不使用_id
索引。
- 默认情况下,当扫描具有该索引的集合时, mongodump 使用
--forceTableScan无法确保时间点快照。使用--oplog创建时间点快照。
您不能将--forceTableScan与--query选项一起使用。
MMAPv1 Only
在--forceTableScan上针对MMAPv1存储引擎运行 mongodump 可能会在输出中导致同一文档的多个版本。
--gzip
``- 3.2 版中的新功能。
压缩输出。如果mongodump输出到转储目录,则新功能将压缩单个文件。文件的后缀.gz
。
如果mongodump输出到存档文件或标准输出流,则新功能将压缩存档文件或输出到流的数据。
要将数据库转储发送到标准输出,请指定“ -
”而不是路径。如果要在保存之前处理输出,请写入标准输出,例如使用gzip
压缩转储。写入标准输出时,mongodump不会写入直接写入文件时写入<dbname>.metadata.json
文件的元数据。
您不能将--archive
选项与--out选项一起使用。
--archive
<file or null>
- 3.2 版中的新功能。
将输出写入单个存档文件或标准输出(stdout
)。
要将转储输出到存档文件,请使用新的--archive
选项和存档文件名运行mongodump。
要将转储输出到标准输出流以便通过管道传输到另一个进程,请使用archive
选项运行mongodump,但“忽略”文件名。
您不能将--archive
选项与--out选项一起使用。
--repair
``
Note
修复数据库时,应使用mongod --repair而不是此选项。有关修复数据库的说明,请参阅意外关闭后恢复独立服务器。
将 mongodump 的行为更改为仅写入有效数据,并排除由于不适当的关机或 mongod 崩溃而可能处于无效状态的数据。
--repair与mongod --repair不同,并且可能会产生大量重复的文档。它仅可用于使用mmapv1
存储引擎的mongod实例。您不能对mongos或对使用wiredTiger
存储引擎的mongod实例运行--repair。
有关修复数据库的说明,请参阅意外关闭后恢复独立服务器。
--oplog
``- 在mongodump输出中创建一个名为
oplog.bson
的文件。oplog.bson
文件位于输出目录的顶层,包含在mongodump操作期间发生的 oplog 条目。该文件提供mongod实例状态的有效时间点快照。要还原到特定的时间点备份,请将通过此选项创建的输出与mongorestore --oplogReplay结合使用。
- 在mongodump输出中创建一个名为
如果没有--oplog,则在转储操作期间如果有写操作,则转储将不会反映单个时间。在更新过程中对数据库所做的更改可能会影响备份的输出。
当针对mongos实例运行mongodump以转储分片群集的全部内容时,--oplog无效。但是,您可以使用--oplog转储单个分片。
--oplog仅适用于维护oplog的节点。这包括副本集的所有成员,以及主/从复制部署中的master节点。
--oplog不转储 oplog 集合。
Note
要将mongodump与--oplog结合使用,您必须创建replica set成员的完整转储。如果使用以下任何选项来限制要转储的数据,则mongodump和--oplog会失败:
See also
--dumpDbUsersAndRoles
``--excludeCollection
string
- 3.0 版中的新功能。
从 mongodump 输出中排除指定的集合。要排除多个集合,请多次指定--excludeCollection。
--excludeCollectionsWithPrefix
string
- 3.0 版中的新功能。
从 mongodump 输出中排除所有具有指定前缀的集合。要指定多个前缀,请多次指定--excludeCollectionsWithPrefix。
--numParallelCollections
int
,
-j
int
- 默认:4
集合数量 mongodump 应该并行导出。
--viewsAsCollections
``- 3.4 版的新功能。
指定时, mongodump 将read-only views导出为集合。对于每个视图, mongodump 将产生一个 BSON 文件,其中包含视图中的文档。如果您mongorestore生成的 BSON 文件,则视图将还原为collection。
如果不包括--viewsAsCollections,则 mongodump 会捕获每个视图的元数据。如果您在mongorestore操作中包含视图的元数据文件,则会重新创建视图。
Examples
mongodump 收藏
以下操作将创建一个转储文件,该文件仅包含名为test
的数据库中名为collection
的集合。在这种情况下,数据库在端口27017
的本地接口上运行:
mongodump --db test --collection collection
mongodump 转储不包含指定集合的数据库
以下操作将转储test
数据库中的所有集合,但users
和salaries
除外:
mongodump --db test --excludeCollection=users --excludeCollection=salaries
具有访问控制的 mongodump
在下一个示例中,mongodump从主机mongodb1.example.net
的端口37017
上运行的数据库创建位于/opt/backup/mongodump-2011-10-24
的数据库转储,并使用用户名user
和密码pass
进行身份验证,如下所示:
mongodump --host mongodb1.example.net --port 37017 --username user --password "pass" --out /opt/backup/mongodump-2011-10-24
输出到存档文件
3.2 版中的新功能。
要将转储输出到存档文件,请使用--archive
选项和存档文件名运行mongodump。例如,以下操作创建一个文件test.20150715.archive
,该文件包含test
数据库的转储。
mongodump --archive=test.20150715.archive --db test
将存档输出到标准输出
3.2 版中的新功能。
要将 Files 输出到标准输出流以便通过管道传输到另一个进程,请使用archive
选项运行mongodump,但是省略文件名:
mongodump --archive --db test --port 27017 | mongorestore --archive --port 27018
Note
您不能将--archive
选项与--out选项一起使用。
压缩输出
要压缩输出转储目录中的文件,请使用新的--gzip
选项运行mongodump。例如,以下操作将 zipfile 输出到默认的dump
目录中。
mongodump --gzip --db test
要压缩mongodump压缩的归档文件输出,请结合使用--gzip
选项和--archive选项,并指定 zipfile 的名称。
mongodump --archive=test.20150715.gz --gzip --db test