工具 mongorestore

注意:从 MongoDB 4.4 之后,这些工具并没有随安装包一起发布,需要的用户自行下载,下载地址:https://www.mongodb.com/try/download/database-tools 

mongorestore 程序从 mongodump 创建的二进制数据库转储或标准输入中加载数据中的数据。

工具语法

用法:

mongorestore <options> <connection-string> <directory or file to restore>

将 mongodump 生成的备份还原到运行中的 MongoDB 服务器。

使用 -d 指定数据库,从目标目录中还原单个数据库、或使用 -d 和 -c 从单个 .bson 文件还原单个集合。

连接字符串必须以 mongodb:// 或 mongodb+srv:// 开头。

更多信息请参见 http://docs.mongodb.com/database-tools/mongorestore 

常规选项

  • --help  打印帮助信息

  • --version, -v  打印工具的版本信息且退出

  • --config=<filename>  新选项,100.3.0 版本。指定 YAML 配置文件的完整路径,该文件包含以下选项的敏感值:

    • --password

    • --uri

    • --sslPEMKeyPassword

推荐使用这种方式为 mongotop 指定密码,配置文件的格式如下:

password: <password>
uri: mongodb://mongodb0.example.com:27017
sslPEMKeyPassword: <password>

注意,向 password: 字段指定密码并在 uri: 字段中提供包含冲突密码的连接字符串将导致错误。

请务必使用适当的文件系统权限保护此文件。

冗余选项

  • -v, --verbose:<level>  更详细的日志输出(包含多个次数以获得更多详细信息,如 -vvvvv,或指定一个数值,如 --verbose=N)

  • --quiet  以安静模式运行 mongotop,尝试限制输出量。该选项抑制:

    • 数据库命令的输出

    • 复制活动

    • 连接接受事件

    • 连接关闭事件

连接选项

  • -h=<host><:port>, --host=<hostname><:port>

默认值:localhost:27017

指定 MongoDB 部署的可解析主机名。默认情况下,mongotop 会尝试连接到运行在 localhost 上、端口号为 27017 的 MongoDB 实例。

要连接到副本集,请指定 replSetName 和副本集成员的种子列表,如下所示:

--host=<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>

当指定副本集列表格式时,mongotop 总是连接到主服务器。

你也可以只指定副本集中任何一个成员的主机和端口,从而连接到该成员:

--host=<hostname1><:port>

如果使用 IPv6 并使用 <address>:<port> 格式,则必须用括号(例如 [<address>])括起地址和端口组合的部分。

或者,也可以直接在 URI 连接字符串中直接指定主机名。在提供连接字符串的同时使用 --host 的同时提供连接字符串,并指定相互冲突的信息将导致错误。

如果连接到一个副本集,而该副本集的主无法连接的副本集,mongotop 会返回错误信息。

  • --port=<port>

默认值:27017

指定 MongoDB 实例侦听客户端连接的 TCP 端口。

或者,也可以直接在 URI 连接字符串中直接指定端口。在提供连接字符串的同时使用 --port 的同时提供连接字符串并指定相互冲突的信息将导致错误。

ssl 选项

  • --ssl  连接到已启用 ssl 的一个或多个 mongod 或 mongos

  • --sslCAFile=<filename>  包含证书颁发机构颁发的根证书链的 .pem 文件

  • --sslPEMKeyFile=<filename>  包含证书和密钥的 .pem 文件

  • --sslPEMKeyPassword=<password>  用于解密 sslPEMKeyFile 的密码(如有必要)

  • --sslCRLFile=<filename>  包含证书吊销列表的 .pem 文件

  • --sslFIPSMode  使用已安装的 openssl 库的 FIPS 模式

  • --sslAllowInvalidCertificates  绕过服务器证书的验证检查,允许使用无效证书。使用 allowInvalidCertificates 设置时,MongoDB 会将使用无效证书记录为警告。

  • --sslAllowInvalidHostnames  禁用 TLS/SSL 证书中的主机名验证。允许 mongotop 连接到 MongoDB 实例,即使其证书中的主机名与指定的主机名不匹配。

  • --tlsInsecure  绕过对服务器证书链和主机名的验证

认证选项

  • --u=<username>, --username=<username>  认证用户名

  • --p=<password>, --password=<password>  认证密码

  • --authenticationDatabase=<database-name>  保存用户证书的数据库

  • --authenticationMechanism=<mechanism>  使用的身份验证机制

  • --awsSessionToken=<aws-session-token>  会话令牌,以通过 AWS IAM 进行身份验证

kerberos 选项

  • --gssapiServiceName=<service-name>  使用 GSSAPI/Kerberos 验证时要使用的服务名称(默认值:mongodb)

  • --gssapiHostName=<host-name>  使用 GSSAPI/Kerberos 验证时要使用的主机名(默认:<远程服务器地址>)

命名空间选项

  • --d=<database-name>, --db=<database-name>  使用的数据库,例如:mongorestore --db=reporting dump/test/salaries.bson

  • --c=<collection-name>, --collection=<collection-name>  使用的集合,例如:mongorestore --db=reporting --collection=employeesalaries dump/test/salaries.bson

  • --excludeCollection=<collection-name>  已删除;还原时要跳过的集合(可多次指定,以排除其他集合)

  • --excludeCollectionsWithPrefix=<collection-prefix>  已删除;在还原过程中跳过具有给定前缀的集合(可多次指定以排除其他前缀)

  • --nsExclude=<namespace-pattern>  排除匹配的命名空间

  • --nsInclude=<namespace-pattern>  包含匹配的命名空间

  • --nsFrom=<namespace-pattern>  重命名匹配的命名空间,必须有匹配的 nsTo

  • --nsTo=<namespace-pattern>  重命名匹配的命名空间,必须有匹配的 nsFrom

输入选项

  • --objcheck  在插入前验证所有对象

  • --oplogReplay  重放 Oplog 以进行时间点还原

  • --oplogLimit=<seconds>[:ordinal]  仅包含所提供时间戳之前的 oplog 条目

  • --oplogFile=<filename>  用于重放 oplog 的 oplog 文件

  • --archive=<filename>  从指定的存档文件中恢复转储。 如果指定的标志没有值,则从 stdin 读取归档文件

  • --restoreDbUsersAndRoles  恢复指定数据库的用户和角色定义

  • --dir=<directory-name>  输入目录,使用"-"表示 stdin

  • --gzip  解压压缩输入

恢复选项

  • --drop  在导入前删除每个集合

  • --dryRun  无需导入任何内容即可查看摘要。

  • --writeConcern=<write-concern>  写关注选项,例如 --writeConcern majority, --writeConcern '{w: 3, wtimeout: 500, fsync: true, j: true}'

  • --noIndexRestore  不还原索引

  • --convertLegacyIndexes  删除无效的索引选项并改写原有选项值(例如 true 变为 1)。

  • --noOptionsRestore  不恢复集合选项

  • --keepIndexVersion  不更新索引版本

  • --maintainInsertionOrder  按照文件在输入源中出现的顺序恢复文件。默认情况下,插入将以任意顺序执行。设置此标志还可以启用 --stopOnError 的行为,并将 NumInsertionWorkersPerCollection 限制为 1。

  • --j, --numParallelCollections:  并行恢复的收藏数量

  • --numInsertionWorkersPerCollection:  每个集合同时运行的插入操作数

  • --stopOnError  在插入过程中遇到任何错误后停止。默认情况下,mongorestore 会尝试继续处理文档验证和 DuplicateKey 错误,但启用此选项后,工具会停止。即使启用了该选项,遇到错误后仍可能插入少量文档;使用 --maintainInsertionOrder 可以在出现错误后立即停止。

  • --bypassDocumentValidation  绕过文件验证

  • --preserveUUID  保留原始收藏 UUID(默认为关闭,需要删除)

  • --fixDottedHashIndex  启用后,虚线字段上的所有哈希索引将创建为目标上的单个字段升序索引

工具用法

以下是一些常见的 mongorestore 命令示例,展示了不同的用法:

(1)还原整个数据库:

mongorestore --host <hostname> --port <port> --dir <backup_directory>

(2)还原指定数据库:

mongorestore --host <hostname> --port <port> --db <database_name> --dir <backup_directory>

(3)还原指定集合:

mongorestore --host <hostname> --port <port> --db <database_name> --collection <collection_name> --dir <backup_directory>

(4)还原指定查询条件的文档:

mongorestore --host <hostname> --port <port> --db <database_name> --collection <collection_name> --query '{"field": "value"}' --dir <backup_directory>

(5)还原指定数据库,并使用 gzip 进行解压缩:

mongorestore --host <hostname> --port <port> --db <database_name> --gzip --dir <backup_directory>

(6)还原指定数据库,并排除指定集合:

mongorestore --host <hostname> --port <port> --db <database_name> --excludeCollection <collection_name> --dir <backup_directory>

(7)还原指定数据库,并指定用户名和密码:

mongorestore --host <hostname> --port <port> --db <database_name> --username <username> --password <password> --dir <backup_directory>
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号