使用从 Atlas 快照恢复的 mongodb 在本地运行流星时出现问题

Posted

技术标签:

【中文标题】使用从 Atlas 快照恢复的 mongodb 在本地运行流星时出现问题【英文标题】:Problem running meteor locally with a mongodb restored from Atlas snapshot 【发布时间】:2021-07-10 08:38:28 【问题描述】:

我想在本地运行 localhost 流星以使用生产数据库中的数据进行调试。

我从 Mongo Atlas 下载了每日快照,将其提取到桌面,解压缩到名为“snap”的文件夹中

然后我运行:

mongod --dbpath snap -port 3001

我可以看到 mongodb 现在在 127.0.0.1:3001 运行。

我去本地开始我的流星项目:

meteor --settings settings.json

希望它能以某种方式神奇地在端口 3001 上获取正在运行的数据库,但它没有。

它抱怨:

=> Started proxy.                             
Unexpected mongo exit code 48. Restarting.    
=> Meteor 2.1 is available. Update this project with 'meteor update'.
Unexpected mongo exit code 48. Restarting.    
Unexpected mongo exit code 48. Restarting.    
Can't start Mongo server.                     
MongoDB exited because its port was closed, or was already
taken by a previous instance of MongoDB

Check for other processes listening on port 3001
or other Meteor instances running in the same project.

我应该怎么做才能让 Meteor 使用恢复的数据库启动项目?

【问题讨论】:

【参考方案1】:

假设您的数据库正在运行,您可以使用环境变量 MONGO_URL 使用您自己的数据库在本地运行

$ MONGO_URL=mongodb://localhost:<port>/<dbname> meteor run --settings settings.json

请注意,您需要为数据库设置一个明确的名称,如果您的 Meteor 数据库已经包含数据,那么您需要将其导入此数据库才能访问两者。

此外,我个人会避免设置端口3001,以免将其与与 Meteor 捆绑在一起的数据库混淆。 Mongo 的默认 27017 端口应该没问题。

参考资料:

https://docs.meteor.com/environment-variables.html#MONGO-URL

【讨论】:

以上是关于使用从 Atlas 快照恢复的 mongodb 在本地运行流星时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

sh 将MongoDB备份到S3的简单脚本,不会浪费磁盘空间来存储临时文件。还有一种从最新快照恢复的方法。

sh 将MongoDB备份到S3的简单脚本,不会浪费磁盘空间来存储临时文件。还有一种从最新快照恢复的方法。

使用 mongoose 从 Atlas Mongodb 获取数据到 Angular 应用程序

从 mongodb atlas 复制到本地?

无法使用 MEAN 堆栈连接到 Mongodb.atlas 集群

使用区块链技术的身份管理应用,MongoDB Stitch & MongoDB Atlas