正在从本地迁移到 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 选项卡。
步骤如下。
运行 mongodump
在没有选项的本地系统上。
来自同一系统运行: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
运行 mongodump
在没有选项的本地系统上。
来自同一系统运行:
mongorestore --uri mongodb+srv://<Yorname>:<*******>@cluster0.dvxc9.mongodb.net/Databasename --username <Yourname> -d Databasename 'C:\Users\user\dump\Databasename' -v
我正在尝试将本地 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 选项卡。
步骤如下。
运行
mongodump
在没有选项的本地系统上。来自同一系统运行:
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
运行
mongodump
在没有选项的本地系统上。来自同一系统运行:
mongorestore --uri mongodb+srv://<Yorname>:<*******>@cluster0.dvxc9.mongodb.net/Databasename --username <Yourname> -d Databasename 'C:\Users\user\dump\Databasename' -v