问题:如何将MongoDB数据库从cloud9导出到mlab?

因此,我使用 Node.js、mongoDB、express 在 cloud9 上创建了一个 Web 应用程序。我按照说明在云 9 中设置了 MongoDB。

完成应用程序后,我将其部署到 Heroku,并在 mlab (mongolab) 中创建了一个新数据库。这工作正常。

但是,我在 cloud9 上托管的数据库中插入了很多虚拟数据。 我想将此虚拟数据从 cloud9 中的数据库复制到 mlab 中的数据库。 我该怎么做?


我做了一些研究。

根据 mongodb 文档,我应该使用 db.copyDatabase():

db.copydatabase(fromdb,todb,fromhost,用户名,密码,机制)

它说我应该在目标实例中运行这个命令,即接收复制数据的实例。

我假设这意味着我应该通过以下方式连接到托管在 mlab 上的数据库:mongo dsblahblah.mlab.com:59220/blahblah -u -p

然后运行 db.copyDatabase 命令,对吗?

但是我应该为 fromdb 参数使用什么?这是托管在 cloud9 中的数据库。但是这个数据库的 url 是什么?

帮助。和ELI5。

解答

Nathan Loyer 有正确的答案,虽然它当然比这更复杂。如果您像我一样并不真正知道自己在做什么,那么这里有一个对我有用的详细解释,以及我在底部获取此信息的资源,以防任何更新并使您过时。

请注意,您需要为要迁移的每个集合执行此操作。您可能只有一个或几个系列,所以这并不麻烦。如果你想移动一个完整的数据库,可以调整这些指令,但这取决于你。

  1. 确定您要移动的集合。为此,在 Cloud9 中,在适当的目录中,在命令行中运行以下命令,并记住或记下您识别的数据库和集合。 (如果您不确定集合,可以执行 db.(collection).find() 来输出它拥有的数据列表)
mongo
show dbs
use (the name of the appropriate db, not in parentheses though)
show collections
  1. 从您的数据库中导出数据。这相对容易。只需使用 ctrl+c 退出 mongo,然后在命令行中使用以下代码,其中数据已填写且没有括号:
mongoexport --db (your db name) --collection (your collection name) --outs (a filename: mongodb.org recommends "traffic.json", no quotes)
  1. 现在您需要将数据导入 mLabs。转到 mLabs,选择您的数据库,然后选择“工具”菜单。您应该在“JSON”下看到一个用于导入的预制代码。使用来自 mLab 的数据库用户凭据再次填写空白,但不要运行它。它应该看起来像:
mongoimport -h ds12345.mlab.com:12121 -d databasename -c <collection> -u <user> -p <password> --file <input file, possibly traffic.json?>
  1. 为了成功通过导入,您应该检查您的 Cloud9 和 mLabs 实例是否在相同(或至少非常相似的版本)上运行。在 cloud9 中,只需在控制台中输入“mongo”,然后查看它的内容。您可能在 2.6 或 3.2 上。在 mLab 上,它几乎出现在每一页上。只需查找“mongod 版本:xxxxx”。你可能在 3.4.7 上。我将它作为 Cloud9 3.2 和 mLab 3.4 运行,它运行良好。 (如果您的 Cloud9 低于版本 3,请备份任何重要的内容(使用 git?)并按照https://community.c9.io/t/updating-mongodb/3914的说明进行更新)

您需要做的另一件事是停止 Cloud9 中的所有进程,包括从根目录运行的 Mongod。这是您需要从中运行 mongoimport 的地方(而不是从工作区中某个目录内的命令行,我告诉您从那里运行 mongoexport)。需要明确的是:您的命令行应该显示“用户名:~$”,而不是“用户名:~/workspace/filedirectories/maybeafewofthem (possively master) $”。

由于您是从根目录运行的,因此您还需要确保正确引用了您传递的文件名。它不会像“traffic.json”那么简单。它应该类似于“workspace/directoryName/traffic.json”。 (如果您的导出成功,您应该会看到 traffic.json 文件在您的文件周围浮动。)

就是这样。运行第 3 步中的代码,并在 mLabs 中检查它是否正确处理。很好走。

资源:

http://docs.mlab.com/connecting/

http://docs.mlab.com/migrating/

https://docs.mongodb.com/manual/reference/program/mongoexport/

https://docs.mongodb.com/manual/reference/program/mongoimport/

Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐