63

我们最近将一些数据移植到 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

我收到以下消息:

10 月 7 日星期一 10:03:42 为副本集 127.0.0.1 启动新的副本集监视器,开发种子:27017
10 月 7 日星期一 10:03:42 成功连接到种子开发:27017 副本集 127.0.0.1
10 月 7 日星期一:03:42 警告:节点:开发:27017 不是集合的一部分:127.0.0.1 ismaster:{ ismaster:true,maxBsonObjectSize:16777216,ok:1.0}
10 月 7 日星期一 10:03:44 副本集监视器副本设置 127.0.0.1 开始,地址为 127.0.0.1/
10 月 7 日星期一 10:03:44 [ReplicaSetMonitorWatcher] 开始无法连接到 [127.0.0.1/development:27017] 连接失败设置 127.0.0.1/development:27017

我确认我可以使用连接到 mongo 数据库mongo -u -p ip/development

我们的最终目标是从生产数据库中转储数据并将其存储在临时数据库中。这两个数据库都位于同一个盒子上,如果这有区别的话,但出于测试目的,我只是想获得开发测试数据的备份。

4

9 回答 9

86

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
于 2013-10-07T19:17:55.840 回答
39

您可以与 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

试试这个它会工作。

于 2019-06-03T07:10:25.683 回答
20


这对我有用。

参考: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
于 2017-03-07T08:37:41.360 回答
3
mongodump --host remotehostip:port --db dbname -u username -p password
于 2016-12-30T12:22:23.607 回答
2

这是从节点服务器导出集合到本地机器的示例:

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”
于 2017-04-06T06:42:31.337 回答
1

使用它来使用 URI 获取转储:

mongodump --uri=mongodb+srv://john:xxxxxxxxxxxxxxx@cluster0-jdtjt.mongodb.net/sales
于 2020-09-16T05:34:37.390 回答
0

您还可以使用 gzip 备份一个集合并即时压缩备份

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

或者在文件名中带有日期:

mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz
于 2018-03-28T10:21:07.247 回答
0

这对我来说就像一个带有远程 Windows Server 的单一集合的魅力。

mongodump --host <remote_ip> --port <mongo_port> --db <remote_db_name>  --authenticationDatabase <remote_auth_db> --username <remote_mongo_username> --password <remote_db_pwd> --out <local_DB_backup_folder> --collection <remote_collection_name>
于 2020-06-30T20:41:05.690 回答
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 "*.*"
于 2022-01-20T18:57:35.550 回答