最近一段时间使用linux进行Mongo的数据导入导出,说一说遇到的一些坑:
MongoDB官网有推荐的工具(MongoDB Compass)网址为:https://www.mongodb.com/download-center/compass
由于其支持的认证机制中只有scram-sha-256,并没有对应的scram-sha-1(也许是因为是社区版免费的不支持的原因吧),导致你本地安装的,甚至是阿里云购买的mongo不能够通过GUI直连;
所以为决定采用Robo3T图形化的界面,简单清洁,对习惯使用关系数据库的同学来说更加通俗易懂;
查询支持命令和手工点击的方式;
但是如何将mongo以快速的方式导出数据,迁移到本地呢?
在阿里云上距离来说,默认是不支持外网直连的,并且也不推荐本机电脑通过GUI的方式直接生产环境的数据库,那如何将生产的数据导入到本地(尤其是只使用其中一些集合中的数据)?
1、阿里云官方推荐的是,通过阿里的集成工具来进行导入,导出:
对我们个人来说,第一次肯定是要搭建环境,编写脚本,耗时费力;
2、我采用的是,通过登录阿里云内网环境(你购买的云服务器),将该服务器加入mongoDB的访问的白名单
执行Mongo导入导出对应的命令即可:
将本地json数据导入到阿里云对应的mongo库中:
mongoimport --host xx.aliyuncs.com:6717 -u ruichar -p \$1 -d test -c colle_1 --file /opt/mongo/my.json
从阿里云Mongo中导出集合中的数据导本地:
mongoexport --host xx.aliyuncs.com:6717 -u ruichar -p \$1 -d test -c colle_1 --out /opt/mongo/export_test.json
参数解释:
--host Mongo的主机地址
6717 Mongo的主机地址开放的端口号
-u 登录Mongo的用户名
-p 登录Mongo的密码(注意假设我的密码是$1,由于出现特殊字符,需要在执行命令时进行转义:\$1)
-d 要操作的数据库,此处为 test
-c 要操作的集合,此处为colle_1
--file 要导入的文件名
--out 要导出的文件名
对于全量备份和回复,参考对应的命令即可,此处不再详述;
3,尽量不要采用外网直连Mongo,存在数据安全泄漏的风险;GUI工具对查询操作很方便,但是对导入导出操作很麻烦;