MongoDB数据导出与导入

最近公司新购买了部服务器,原有的业务需要转入到新的服务器,而旧的服务器操作系统是Window的,需要把数据转移新Centos的服务器。这么一样,就需要把MongoDB的数据导出后,再导到Centos系统了,自己尝试了好几款MongoDB的界面管理工具,要么就是免费的限制了导出与导入的功能,要么就是根本没有这项功能,折腾再三后,还是回归到使用MongoDB的命令更爽。下面我们就来实际的操作吧!

 

环境:Window server 2016 Standard  -> Centos 7.9.2009 ,MongoDB 4.0.6

 

1、导出数据:

从window服务器导出数据:首先,打开CMD,通过命令,进行MongoDB所在的安装目录,输入下面的命令:

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

将输出写入单个存档文件或标准输出 ( stdout)。

您不能将--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 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!我这里因为是迁移数据,所以没用到这个参数

到这里,就结束了,感谢您的阅读,如果写得不对,或有疑问,请在下面的评论区留言哦,谢谢!

 

posted @ 2022-02-22 18:03  鹅城小将  阅读(2512)  评论(0编辑  收藏  举报