注意:从 MongoDB 4.4 之后,这些工具并没有随安装包一起发布,需要的用户自行下载,下载地址:https://www.mongodb.com/try/download/database-tools
mongodump 是一种二进制导出数据库内容的实用程序。mongodump 可以从以下设备导出数据:
独立部署
复制集
分片集群
mongodump 可以连接到 mongod 和 mongos 实例。
用法:
mongodump <options> <connection-string>
将运行中的 MongoDB 服务器的内容导出到 .bson 文件。用 -d 指定一个数据库,用 -c 指定一个数据集,以便只转储该数据库或数据集中的数据。
连接字符串必须以 mongodb:// 或 mongodb+srv:// 开头。
更多信息请参见 http://docs.mongodb.com/database-tools/mongodump/
--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 的一个或多个 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 进行身份验证
--gssapiServiceName=<service-name> 使用 GSSAPI/Kerberos 验证时要使用的服务名称(默认值:mongodb)
--gssapiHostName=<host-name> 使用 GSSAPI/Kerberos 验证时要使用的主机名(默认:<远程服务器地址>)
--d=<database-name>, --db=<database-name> 使用的数据库
--c=<collection-name>, --collection=<collection-name> 使用的集合
--q, --query: 查询过滤器,作为 v2 扩展 JSON 字符串,例如'{"x":{"$gt":1}}'
--queryFile: 包含查询过滤器(v2 扩展 JSON)的文件路径
--readPreference=<string>|<json> 指定首选项模式(如 "nearest")或首选项 json 对象(如"{mode: "nearest", tagSets: [{a: "b"}], maxStalenessSeconds: 123}')
--forceTableScan 强制进行表扫描(请勿使用 $snapshot 或 hint _id)。已被弃用,因为这是 WiredTiger 的默认行为
--o=<directory-path>, --out=<directory-path> 输出目录,或 '-' 表示 stdout(默认值:'dump')。
--gzip 使用 Gzip 压缩档案或集合输出
--oplog 使用 oplog 获取时间点快照
--archive=<file-path> 转存到指定路径。如果指定的标志没有值,存档将写入 stdout
--dumpDbUsersAndRoles 转储指定数据库的用户和角色定义
--excludeCollection=<collection-name> 要从转储中排除的集合(可多次指定以排除其他集合)
--excludeCollectionsWithPrefix=<collection-prefix> 从转储中排除所有具有给定前缀的集合(可多次指定以排除其他前缀)
--j, --numParallelCollections: 并行转储的集合数
--viewsAsCollections 将视图作为普通集合转储,并将其生成的数据一起转储,省略标准集合
以下是一些常见的 mongodump 命令示例,展示了不同的用法:
(1)备份整个数据库到指定目录:
mongodump --host <hostname> --port <port> --out <backup_directory>
(2)备份指定数据库到指定目录:
mongodump --host <hostname> --port <port> --db <database_name> --out <backup_directory>
(3)备份指定集合到指定目录:
mongodump --host <hostname> --port <port> --db <database_name> --collection <collection_name> --out <backup_directory>
(4)备份指定查询条件的文档到指定目录:
mongodump --host <hostname> --port <port> --db <database_name> --collection <collection_name> --query '{"field": "value"}' --out <backup_directory>
(5)备份指定数据库,并使用gzip进行压缩:
mongodump --host <hostname> --port <port> --db <database_name> --gzip --out <backup_directory>
(6)备份指定数据库,并排除指定集合:
mongodump --host <hostname> --port <port> --db <database_name> --excludeCollection <collection_name> --out <backup_directory>
(7)备份指定数据库,并只备份指定索引:
mongodump --host <hostname> --port <port> --db <database_name> --collection <collection_name> --index <index_name> --out <backup_directory>
(8)备份指定数据库,并指定用户名和密码:
mongodump --host <hostname> --port <port> --db <database_name> --username <username> --password <password> --out <backup_directory>