MongoDB数据导出与导入
最近公司新购买了部服务器,原有的业务需要转入到新的服务器,而旧的服务器操作系统是Window的,需要把数据转移新Centos的服务器。这么一样,就需要把MongoDB的数据导出后,再导到Centos系统了,自己尝试了好几款MongoDB的界面管理工具,要么就是免费的限制了导出与导入的功能,要么就是根本没有这项功能,折腾再三后,还是回归到使用MongoDB的命令更爽。下面我们就来实际的操作吧!
环境:Window server 2016 Standard -> Centos 7.9.2009 ,MongoDB 4.0.6
1、导出数据:
从window服务器导出数据:首先,打开CMD,通过命令,进行MongoDB所在的安装目录,输入下面的命令:
1 | mongodump -h 127.0.0.1 -d polygonImageMark -o c:/mongo/1m/ |
执行后,CMD会有如下的提示,如下图所示:
执行完成后,可以在C:/mongo/lm/ 目录中,看到以数据库 polygonImageMark_20210414 为名称的目录以及相应的数据文件:
参数
到了这里,我们想要的数据便都已经导出了。接下来,我们再来具体了解一下,这个导出命令 mongodump ,以及它常用的参数有下面的这些:
参数 | 作用 | 示例 |
--host | 导出数据的主机名称,或IP地址,以及端口号 | --host <主机名1><:端口> |
--port | 端口号可以上面的host中写明,也可以单独写 | --host mongodb1.example.net --port 37017 |
--db / -d | 指定MongoDB中数据库的名称 | --db TestDb 或 -d TestDb |
--collection | 指定需要导出的集合的名称,可以针对特定的集合导出数据 | --collection users |
--username / -u | 指定数据库中,有相应权限的用户名 | --username root 或 -u |
--password / -p | 指定数据库中,对应用户名的密码 | --password "123456" 或 -p |
--out / -o | 指定备份的文件存放的路径 | --out c:/mongo/ 或 -o c:/mongo/ |
--authenticationDatabase | 指定--username已在其中创建指定的身份验证数据库,后面为数据库名称 | --authenticationDatabase orderdb |
--query |
提供JSON 文档作为查询,可选择限制mongodump,您必须将查询文档用单引号 ( ) 括起来,以确保它不会与您的 shell 环境交互。'{ ... }' 作为过滤数据时使用 |
--query '{json data ...}' |
--gzip | 压缩输出。如果输出到转储目录,则会压缩成单个文件。后缀为.gz | --gzip |
--archive |
将输出写入单个存档文件或标准输出 ( 您不能将--archive 选项与 --out 选项一起使用 |
--archive = test.20150715.gz |
示例:
导出 test 数据库存,压缩存储为 test.20150715.gz 文件
mongodump --archive = test.20150715.gz --gzip --db = test
示例:
使用 “用户” 导出 host 为 mongodb1.example.net ,端口为 37017 的所有数据库的集合,并存储到 /opt/backup/mongodump-2011-10-24 的文件目录
mongodump --host mongodb1.example.net --port 37017 --username 用户 --password "pass" --out /opt/backup/mongodump-2011-10-24
2、导入数据
使用xftp工具,把需要上传的备份文件上传到Centos服务器,我这里是把文件夹改名为 LesionMark了。
接下来,通过 Xshell 连接服务器 通过下面的命令,执行导入操作即可:
/usr/bin/mongorestore -h 127.0.0.1 -d yourDbName /backup/data/path
其中 /usr/bin/mongorestore 是执行导入数据的程序的位置,可能跟你的服务器的实际情况有差别,这个时候,可以通过 find / -name mongorestore 查找它的具体位置;
参数:
-h 为主机的名称 或者 ip地址,我这里是服务器本机,所以直接用 127.0.0.1
-d 这个是指定导入的数据库名称,如果数据库不存在,则会自动新建数据库,然后再自动导入
后面的 /root/LesionMark 则是需要导入的数据备份文件所在的目录
--drop 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!我这里因为是迁移数据,所以没用到这个参数
到这里,就结束了,感谢您的阅读,如果写得不对,或有疑问,请在下面的评论区留言哦,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏