来自远程服务器的Mongodump

时间:2013-10-07 15:15:55

标签: mongodb

我们最近将一些数据移植到MongoDB,现在正在考虑运行每日备份,最好是从cron作业,并将其中一个备份恢复到辅助mongo数据库。

我们的系统设置如下:

有三台服务器:服务器1有开发mongo数据库,服务器2有两个mongo数据库,一个用于登台数据,一个用于生产,第三个服务器是我们运行所有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启动新的副本集监视器,发展种子:27017
  10月7日星期一10:03:42成功连接到种子发展:27017为副本集127.0.0.1
  星期一10月7日10: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 -u -p ip/development

连接到mongo数据库

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

8 个答案:

答案 0 :(得分:51)

mongo客户端可以解析MongoDB connection string 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

答案 1 :(得分:13)


  

这对我有用。

     

参考: 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

答案 2 :(得分:2)

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

尝试一下,它将起作用。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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”

答案 5 :(得分:1)

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

[{
   
    user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06141",
    points_total:300,
    rank:1
},
{
  
    user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06142",
    points_total:200,
    rank:2
},
{
   
    user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06144",
    points_total:150,
    rank:3
}]

答案 6 :(得分:0)

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

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

或者文件名中包含日期:

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

答案 7 :(得分: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>