正在从本地迁移到 MongoDb Atlas

Migrating to MongoDb Atlas from Local

我正在尝试将本地 MongoDB 迁移到 Atlas。

我设法 运行 使用本地主机的 mongo 转储命令并且可以看到 ./dump/data.bson

中的文件

但是,当我现在想要将此转储恢复到 Atlas 时,我得到 "Failed: error connecting to db server: no reachable servers"。

这很奇怪,因为我可以使用以下命令从 mongo shell (v4.0) 连接到 Atlas:"mongo mongodb+srv://cluster0-xxxxxx.mongodb.net/test --username Bob" 提示我输入密码并正常连接。

这是给我上述连接错误的 mongo恢复命令:

mongorestore --ssl --host mongodb+srv://cluster0-xxxxx.mongodb.net/test --username Bob --authenticationDatabase admin --dir dump/data --password Test123

感谢您的帮助。

好的,所以我找到了解决方案。

您需要将 collection 导出为 JSON(可以通过 Compass -> Collection(下拉菜单)-> 导出 Collection)。

然后你需要使用 mongoimport(而不是 mongorestore)。完整信息在这里:https://docs.atlas.mongodb.com/import/mongoimport/

我猜 mongorestore 没有工作,因为我的本地是一个独立的数据库,而 Atlas 是一个副本集......虽然我还没有证实这一点。

编辑 我最近再次尝试并感到困惑。所以我把它拼写完整了。

在mongodb目录下,需要运行 mongoimport --uri "connectionURI" --collection "collectionName" --file "filename.json"

你在 atlas 中使用名为 "connect your application" 的选项获得的连接 URI,它应该包括你的密码(你必须转义特殊字符)。

希望对您有所帮助。

尝试将连接字符串的开头从 mongodb+srv:// 更改为 mongodb://

如果您需要上传 .BSON,您需要使用 mongo 恢复, 这样

enter image description here

你需要在路径转储之前写入de命令/ 例如,如果您的系统折叠是

example/example/mydata => hi.bson bye.bson 你应该创建 "dump" 文件

像这样 example/example/dump/mydata => hi.bson bye.bson

和运行命令放在example/example/,因为mongo会搜索“/dump”

还有

你需要说明为什么在de命令末尾带有标志--db的BD

使用

mongorestore --ssl --host <host> --authenticationDatabase admin --dir="<dumpDirectory>" -u <adminUserName> --password <password>

<host>: get from mongo atlas dashboard (click on the cluster name) ex: cluster0-shard-00-00-cbei2.mongodb.net:27017 
<dumpDirectory>: The folder where database is dumped using mongodump
<adminUserName>: admin User for that database
<password>: admin associated password

atlas 站点上对此有明确的说明。当您查看您的集群时,将有一个 Cmd Line Tools 选项卡。

步骤如下。

  1. 运行 mongodump 在没有选项的本地系统上。

  2. 来自同一系统运行:mongorestore --uri mongodb+srv://<USER>:<PASSWORD>@thename.mongo.gives.your.cluster.mongodb.net

您可能需要打开 atlas 防火墙以允许来自本地计算机 IP 的连接(如果您尚未打开的话)。

您可以像这样轻松 import/export:

mongoimport --uri mongodb+srv://<USERNAME>:<PASSWORD>@your-cluster.mongodb.net/<DATABASE_NAME> --collection <COLLECTION> --type <FILETYPE> --file <FILENAME>

mongoexport --uri mongodb+srv://<USERNAME>:<PASSWORD>@your-cluster.mongodb.net/<DATABASE_NAME> --collection <COLLECTION> --type <FILETYPE> --out <FILENAME>

您还可以在 Your Cluster > Cmd Line Tools

上找到这些

=>Windows

  1. 运行 mongodump 在没有选项的本地系统上。

  2. 来自同一系统运行:

     mongorestore --uri mongodb+srv://<Yorname>:<*******>@cluster0.dvxc9.mongodb.net/Databasename --username <Yourname> -d Databasename 'C:\Users\user\dump\Databasename' -v