如何将mLab中的MongoDB数据库迁移至Digital Ocean适配Parse使用?
解决mLab到DigitalOcean MongoDB迁移+Parse Server配置指南
我之前也踩过类似的mLab迁移坑,尤其是和Parse Server配合的时候,给你梳理一套稳扎稳打的流程:
一、先确保DigitalOcean上的MongoDB可外部访问
迁移前得先把DO的MongoDB配置好,不然连都连不上:
- 登录DO的MongoDB服务器,修改MongoDB配置文件(一般在
/etc/mongod.conf):把net.bindIp改成0.0.0.0,允许外部IP连接;如果开了复制集,也要确保配置正确。 - 用防火墙开放27017端口:
sudo ufw allow 27017/tcp,然后重启MongoDB服务:sudo systemctl restart mongod。 - 在MongoDB shell里创建对应数据库和权限用户:
这步很重要,Parse Server需要有读写权限的用户才能正常工作。mongosh use <你的Parse数据库名> db.createUser({ user: "parse_user", pwd: "你的强密码", roles: [{ role: "readWrite", db: "<你的Parse数据库名>" }] }) exit
二、用mongodump+mongorestore迁移数据(最靠谱的方法)
放弃那些第三方工具的坑,官方工具最稳:
- 导出mLab数据:在本地或者Heroku终端执行(如果本地没装Mongo工具,Heroku的Parse Server一般自带):
执行完会生成一个mongodump --uri="mongodb://<mLab用户名>:<mLab密码>@dsxxxxxx.xxxx.com:12345/<你的数据库名>"dump文件夹,里面就是全量数据备份。 - 恢复到DigitalOcean MongoDB:
- 如果你担心直接暴露27017端口不安全,可以先建立SSH隧道:
这样本地访问ssh -L 27017:localhost:27017 root@<你的DO服务器公网IP>localhost:27017就相当于连接DO的MongoDB。 - 然后执行恢复命令:
如果不用隧道,直接替换成DO的公网IP即可:mongorestore --uri="mongodb://parse_user:你的强密码@localhost:27017/<你的数据库名>" ./dump/<你的数据库名>mongorestore --uri="mongodb://parse_user:你的强密码@<DO公网IP>:27017/<你的数据库名>" ./dump/<你的数据库名>
- 如果你担心直接暴露27017端口不安全,可以先建立SSH隧道:
三、生成标准MongoDB URI并配置Parse Server
迁移完成后,直接生成你需要的格式:
mongodb://parse_user:你的强密码@<DO公网IP>:27017/<你的数据库名>
- 登录Heroku后台,找到你的Parse Server应用,进入「Settings」→「Config Vars」,把原来的
DATABASE_URI(或者Parse Server对应的数据库环境变量)替换成上面的新URI。 - 重启Heroku应用:
heroku restart,让配置生效。
四、验证迁移结果
- 用
mongosh连接新的DO数据库,检查数据是否完整:mongosh "mongodb://parse_user:你的强密码@<DO公网IP>:27017/<你的数据库名>" db.getCollectionNames() # 看看集合是否和mLab一致 db.<某个集合>.countDocuments() # 核对数据量 - 测试Parse Server的API接口,比如调用一个查询接口,确认能正常读取和写入数据。
踩坑提示
- Studio 3T授权问题:暂时用
mongosh或者官方MongoDB Compass(免费版)替代,足够满足迁移和验证需求。 - mLab备份恢复:其实mLab的备份就是
mongodump生成的文件,直接用mongorestore恢复即可,不用纠结mLab的特殊工具。 - Node.js连接失败:大概率是DO的MongoDB没开放27017端口,或者密码里有特殊字符(比如@、:),需要用URL转义(比如把@换成%40)。
内容的提问来源于stack exchange,提问作者21.kaw
相关产品推荐
相关产品推荐

