使用mongodump和mongodb地图集

Ike*_*nna 9 mongodb

由于某种原因,我无法使用连接字符串连接到地图集,而不是使用mongo使用mongodump.我尝试过所有类型的字符串.

因此,当我用mongodump替换mongo或者我得到时,我得到"不允许位置参数"

当我将主机从"mongo:// replset1:27017,replset2:27017,replset3:271017/test?replicaSet = replicaSetName"更改为--host replicaSetName/replset1:27017时,"失败:错误连接到db:无法访问的服务器" ,复制集:27017,replset3:27017

任何人都知道这里的问题是什么.

记住我可以使用mongo客户端建立连接.

小智 24

目前,mongoDB Atlas在群集的"命令行工具"部分中为"mongodump"提供了复制和粘贴选项.首次登录您的mongoDB Atlas集群.接下来,在屏幕左侧确保选择"Clusters".然后,您将看到两个选项"概述"和"安全性",确保选择"概述".在"概述"的正下方,您应该看到"沙盒".在"Sandbox"下,您应该看到您的群集名称是可点击的链接,请单击它.然后,您将看到许多可选的链接,单击"命令行工具".在这里,您将看到"mongodump"的复制和粘贴选项.

  • 这有所帮助,但现在它位于“群集”->“集合”按钮旁边的下拉选择->命令行工具下 (4认同)

小智 12

截至 2021 年 2 月,使用 mongoDB v4.4;您可以使用

mongodump --uri mongodb+srv://<USERNAME>:<PASSWORD>@cluster-name.mongodb.net/<DATABASE> 
Run Code Online (Sandbox Code Playgroud)

注意:如果不起作用,请尝试省略数据库名称。

  • 我收到“并行转储最多 0 个集合”错误。省略数据库名称解决了问题并成功了!谢谢你! (2认同)

小智 11

如果您有 srv 字符串。
你可以简单地做mongodump --uri=mongodb+srv://xxx:yyy@cluster0-whatever.mongodb.net
这似乎对我来说是直接的工作:)


Luk*_*ták 10

正如 @charliecode 提到的,MongoDB Atlas 实际上向您展示了如何使用 mongodump/mongorestore/mongoexport/mongoimport 的正确方法。在 Atlas GUI 中访问您的集群,打开命令行工具(隐藏在更多选项下),向下滚动直到您看到:

mongodump --uri mongodb+srv://<username>:<PASSWORD>@made-up-url.5a45j.mongodb.net/<DATABASE>

不过我建议稍微改变一下。在 URI 中省略<password>,因为您的密码很可能包含一些特殊字符,并且直接在命令中使用非编码密码既烦人又不安全。之后 mongodump 将提示您输入密码。

mongodump --uri mongodb+srv://<username>@made-up-url.5a45j.mongodb.net/<DATABASE>

无痛。


raz*_*or7 6

就我而言,我终于以这种方式得到了:

# mongodump -d DB-NAME -u SUPERUSER -p "SUPERUSER-PASSWORD" -o "PATH/TO/DUMP/FOLDER" --authenticationDatabase AUTH-DB --ssl --port 27017 -h "REPLICA-SET-NAME/CLUSTER-SHARD-00-00,CLUSTER-SHARD-00-01,CLUSTER-SHARD-00-02"

哪里:

  • DB-NAME:要备份的数据库的名称
  • SUPERUSER:具有所有特权的用户名,即您创建集群时使用的用户名
  • 超级用户密码:不言自明;)
  • PATH / TO / DUMP / FOLDER:要保存转储的位置
  • AUTH-DB:用于身份验证的数据库,默认情况下称为“ admin”
  • REPLICA-SET-NAME:副本集的名称,格式为“ cluster-name-shard-0”
  • CLUSTER-SHARD:群集分片的名称IE:“ cluster-name-shard-00-00-kb2rd.mongodb.net,cluster-name-shard-00-01-kb2rd.mongodb.net,cluster-name-shard- 00-02-kb2rd.mongodb.net”

  • 谢谢!我试图使其工作了许多小时。我在很多地方都读到我必须在转储之前停止复制,并且我不想这样做,因此在找到此答案之前,我几乎将其撤消了。奇怪的是,我尝试了非常相似的版本,但无法弄清为什么它们不起作用。太糟糕了,这些错误没有帮助,在某些情况下甚至会引起误解。 (3认同)
  • 如果您在没有 -p/--password 的情况下传递命令,那么您将在 shell 中提示您输入密码。否则,您将密码存储在 .bash_history 或类似文件中 (2认同)

red*_*g20 5

每次当我从 mongo atlas 转储数据库时,我都会使用此命令。希望这可以帮助。快乐编码...:)

mongodump -d $dbName -u $username -p $password \
-o . --authenticationDatabase admin --ssl --port 27017 \
-h $hostname
Run Code Online (Sandbox Code Playgroud)


小智 1

我遇到了同样的错误,但以下解决方法对我有用。看来您可以通过备份隧道连接到数据库的最新快照。基本上它的作用是允许在指定端口上模拟 MongoDB 服务器。这意味着您可以定期连接它,例如使用“mongodump”。

链接到官方文档 - https://docs.atlas.mongodb.com/restore-queryable-backup/