阿里云大概在2015年底推出了云MongoDb,这一下子解放了我们这些基于MongoDb开发应用的工程师很多麻烦事。以前,为了搭建MongoDb,要创建好几个ECS,然后自己用脚本建立集群,还要自己备份到OSS。阿里云的云MongoDb是3个node的集群,最小的instance大概价格在300+人民币/月,应该算比较合理。
要使用阿里云云MongoDb,第一步就要迁移数据,我们也可以假设源数据库在非阿里云的平台上。
阿里云提供了一个DTS工具,但是我使用了每次都在第二步罗列collections供我选择的时候报错,非常沮丧;另外使用这种方法需要暂时把源数据库暴露在公网上,因此有一些安全的风险在,特别是那些没有密码运行mongodb千万不要冒险,现在刷mongodb的病毒很猖狂。
我采用的迁移方法是使用Mongo自带的mongodump和mongorestore工具,另外需要暂时用一台阿里云ECS,因为阿里云的云MongoDb是不允许阿里云外的服务器访问的,所以必须要另外一台ECS作为桥接,如下图所示:
具体步骤如下:
- 第一步:申请一台ECS,并安装mongodb-org-server, mongodb-org-shell, 及mongodb-org-tools,具体安装过程建mongo官网;
- 第二步:从源MongoDb获取数据到本地。不加特别的设置,运行完毕后,mongodump就会在当前目录下创建一个dump目录,并把把数据下载到以指定的数据库的名字为名的目录下,比如:./dump/myDatabase
# mongodump的具体命令请参考mongo的帮助文档
mongodump -h [源MongoDb地址,比如:10.10.10.10:27017] -d [需要下载的数据库名]
- 第三步:将本地数据迁移到阿里云云MongoDb
-
首先要到阿里云的云MongoDb控制台中获取地址,如下图:
- 然后在ESC上运行下列命令:
-
mongorestore --host [上图中查得的地址] --authenticationDatabase admin -u root
顺利的话,MongoDb就迁移完成了。