从远程服务器进行Mongodump

64
我们最近将一些数据迁移到了MongoDB,现在正在考虑每天从cron作业运行备份,并将其中一个备份恢复到辅助Mongo数据库。
我们的系统设置如下:
服务器1:开发Mongo数据库。 服务器2:两个Mongo数据库,一个用于暂存数据,另一个用于生产。 服务器3:我们从中运行所有cron作业/批处理脚本的地方。
我查看了Mongo文档,并登录到我们的cron作业服务器并尝试运行以下命令:(出于安全考虑已更改用户名、主机和密码,我实际上没有连接到localhost)
mongodump --host 127.0.0.1/development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1

我收到了以下信息:
Mon Oct 7 10:03:42为127.0.0.1的副本集监视器启动,种子为development:27017
Mon Oct 7 10:03:42成功连接到127.0.0.1的种子开发:27017,用于副本集
Mon Oct 7 10:03:42警告:节点development:27017不是集合的一部分:127.0.0.1 ismaster: {ismaster:true, maxBsonObjectSize:16777216, ok:1.0}
Mon Oct 7 10:03:44副本集127.0.0.1的监视器已启动,地址为127.0.0.1/
Mon Oct 7 10:03:44 [ReplicaSetMonitorWatcher]开始,无法连接到[127.0.0.1/development:27017]连接失败,设置为127.0.0.1/development:27017
我确认可以使用mongo -u -p ip/development连接到mongo数据库。
我们的最终目标是从生产数据库中转储数据并将其存储在staging数据库中。这两个数据库都位于同一台机器上,如果有区别,但出于测试目的,我只是尝试获取开发测试数据的备份。

3
尝试将 --host 127.0.0.1/development 替换为 --host 127.0.0.1 -d development,这可能会解决你的问题。 - Leonid Beschastny
当我使用 mongo -u -p 连接时,我只是在主机后面添加了数据库名称。显然,这不是处理它的适当方式,至少对于 mongodump 来说是这样。有了这个更改,转储工作得非常完美。 - awestover89
12个回答

88

mongo客户端可以解析MongoDB连接字符串URI,因此您可以传递单个连接字符串URI来替代单独指定所有连接参数。

在您的情况下,您试图将连接URI作为host传递,但是127.0.0.1/development不是有效的主机名。这意味着您应该单独指定database参数而不是host

mongodump --host 127.0.0.1 -d development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1

6
使用--authenticationDatabase admin来针对特定表进行身份验证。 - Tono Nam
您能否也为mongorestore命令添加arg结构? - tourist
@sbk mongorestore --host <ip> --port <port> --db <db_name> --authenticationDatabase <auth_db> --username <user-name> --password <pwd> collection <coll_name> <db_backup_folder> - Murugan Durai

53

你可以使用mongodump命令加上--uri选项来操作。

mongodump --uri "mongodb://usersname:password@127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" --out "C:\Umesh"

所有的集合将存储在out文件夹内,它将创建一个以您的数据库名称命名的目录,并且所有集合都是bson格式,元数据将以json格式存储。

用于还原:

mongorestore --uri "mongodb://usersname:password@127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" -d dbname mongodbumppath

试一试,它会起作用的。


21


这对我起作用了。

参考: https://docs.mongodb.com/manual/reference/program/mongodump


语法 1:

mongodump --host <hostname:port> --db <database> --username <username> --password <password> --out <path>

语法2:

mongodump -h <hostname:port> -d <database> -u <username> -p <password> -o <path>



示例 1:

mongodump --host 127.0.0.1:27017 --db db_app --username root --password secret --out /backup/db/app-17-03-07

例子 2:

mongodump -h 127.0.0.1:27017 -d db_app -u root -p secret -o /backup/db/app-17-03-07

3
mongodump --host remotehostip:port --db dbname -u username -p password

2
以下是将集合从Node服务器导出到本地机器的示例:

以下是将集合从Node服务器导出到本地机器的示例:

Host : xxx.xxx.xxx.xx
Port :27017
Username:”XXXX”
Password :”YYYY”
AuthDB : “admin”
“DB”: “mydb”

D:\mongodb-backup>mongodump -h xxx.xxx.xxx.xxx –port 27017 -u “XXXX” -p “YYYY” –authenticationDatabase “admin” –db “mydb”

1
使用此方法获取URI转储:
mongodump --uri=mongodb+srv://john:xxxxxxxxxxxxxxx@cluster0-jdtjt.mongodb.net/sales

0

您还可以使用gzip对一个集合进行备份并在备份时压缩数据

mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz

或者在文件名中包含日期:

mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz

0

如果有人需要的话,我在这里发布一下。

使用mongodump连接时,我遇到了无法连接的问题。最终我安装了VS Code Mongo扩展程序,它为我生成了字符串。命令看起来像这样:

mongodump -o dump_destination --uri "mongodb://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<DATABASENAME>?authSource=admin&readPreference=primary&ssl=true"

0
在 Mac 上,这是对我有效的(但一定要使用您自己的真实凭据):
brew tap mongodb/brew
brew install mongodb-community@5.0
brew services start mongodb/brew/mongodb-community

mongodump --uri "mongodb://usersname:password@127.0.0.1:27100/dbname" --out "/Users/some_username/code/mongodb_dumps/dump/"
cd /Users/some_username/code/mongodb_dumps/
mongorestore --nsInclude "*.*"

0
mongodump --host hostip -d dbname --port portnumber --username username --password password --authenticationDatabase admin -o ./path/of/backupfolder

注意:"./path/of/backupfolder" 路径在您的客户端中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接