1. 什么是mongodump
mongodump是MongoDB官方提供的一个用于备份数据库的工具,它能将MongoDB中的数据以二进制格式导出到指定目录中。备份后的数据可以用mongorestore工具进行恢复。
mongodump工具的优点:
简单易用,无需安装插件或扩展
备份速度快
可备份特定集合或整个数据库
2. 安装mongodump
mongodump属于MongoDB自带的工具,因此安装MongoDB后即可使用mongodump。
安装MongoDB官方步骤:
到MongoDB官网下载对应版本的MongoDB
解压下载文件并将MongoDB的bin目录添加至环境变量中
运行mongod命令开启MongoDB服务
3. 使用mongodump备份MongoDB数据
3.1 备份指定数据库
若要备份MongoDB中的指定数据库,可以使用如下命令:
mongodump --db my_database --out /data/my_backup/
其中:
--db
参数后的值指定要备份的数据库名称
--out
参数后的值指定备份数据的输出目录
备份成功后,可以在输出目录下看到生成的备份文件:
drwxr-xr-x 4 root root 4096 Jan 17 16:20 my_database
备份技巧:
若要备份多个数据库,可以多次使用上述命令
备份数据时,最好使用绝对路径指定输出目录
3.2 备份指定集合
若要备份MongoDB中的指定集合,可以使用如下命令:
mongodump --db my_database --collection my_collection --out /data/my_backup/
其中:
--collection
参数后的值指定要备份的集合名称
3.3 备份整个MongoDB实例
若要备份整个的MongoDB实例,可以使用如下命令:
mongodump --out /data/my_backup/
备份成功后,可以在输出目录下看到生成的备份文件:
drwxr-xr-x 4 root root 4096 Jan 17 16:20 my_database
drwxr-xr-x 4 root root 4096 Jan 17 16:20 my_another_database
4. mongodump命令常用选项
以下是mongodump命令的部分常用选项:
选项 | 说明 |
---|---|
--host |
指定MongoDB所在主机地址,默认为本机 |
--port |
指定MongoDB所使用的端口,默认为27017 |
--username,--password |
指定MongoDB管理员账号和密码 |
--gzip |
备份时产生gzip压缩格式的输出文件 |
5. 使用mongorestore恢复MongoDB数据
使用mongodump备份MongoDB数据的好处在于备份数据的格式为MongoDB独有格式,因此无需对数据进行额外的处理就可以直接使用mongorestore进行恢复。
恢复备份的MongoDB数据,可以使用如下命令:
mongorestore /data/my_backup/
恢复成功后,可以在指定的数据库或集合中看到之前备份的数据:
mongodb://localhost:27017/my_database 此处需替换成指定的MongoDB地址和端口号
+ my_collection.bson
+ my_collection.metadata.json
6. 对mongodump命令的一些常见问题
6.1 mongodump操作提示没有权限
出现原因:
当前使用的用户无备份系统数据的权限。
解决办法:
使用管理员账户进行备份操作。
6.2 mongodump备份集合为空
出现原因:
该集合中无数据,或者mongo实例的可读性级别过高(在MongoDB4.x中,如果将ReadConcern设置为“majority”,则mongodump命令只能备份包含大量数据的集合)。
解决办法:
在已知集合中存在数据的情况下,切换到该集合所在的数据库并重新备份。如果仍然无法备份,则检查mongo实例的可读性级别设置。
7. 结论
mongodump是MongoDB提供的一个非常方便的备份数据工具,可以用于备份单个数据库、单个集合或整个MongoDB实例。备份数据文件产生的格式是二进制文件,无需经过额外的处理就可以直接使用mongorestore工具进行恢复。对于备份MongoDB数据的场景,mongodump是一个值得推荐的选择。