最近公司新购买了部服务器,原有的业务需要转入到新的服务器,而旧的服务器操作系统是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会有如下的提示,如下图所示:

mongodb导出 mongodb数据导入和导出_mongodb

   

执行完成后,可以在C:/mongo/lm/ 目录中,看到以数据库 polygonImageMark_20210414

mongodb导出 mongodb数据导入和导出_数据_02

  

参数

到了这里,我们想要的数据便都已经导出了。接下来,我们再来具体了解一下,这个导出命令  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了。

 

mongodb导出 mongodb数据导入和导出_数据库_03

 

 

 接下来,通过 Xshell 连接服务器 通过下面的命令,执行导入操作即可:

/usr/bin/mongorestore -h 127.0.0.1 -d yourDbName /backup/data/path

 

mongodb导出 mongodb数据导入和导出_mongodb_04

 

 

其中 /usr/bin/mongorestore 是执行导入数据的程序的位置,可能跟你的服务器的实际情况有差别,这个时候,可以通过 find / -name mongorestore 查找它的具体位置;

参数:

-h 为主机的名称 或者 ip地址,我这里是服务器本机,所以直接用 127.0.0.1

-d 这个是指定导入的数据库名称,如果数据库不存在,则会自动新建数据库,然后再自动导入

后面的 /root/LesionMark 则是需要导入的数据备份文件所在的目录

--drop 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!我这里因为是迁移数据,所以没用到这个参数