如何将数据库从一个MongoDB服务器复制到另一个?

我在不同的服务器上有两个mongodbs,都以--auth 。 现在我想复制一个数据库从一台服务器到另一台。

 > mongo > use admin > db.copyDatabase("mydb","mydb","another_server") 

表明:

 { "errmsg" : "", "ok" : 0 } 

和:

 > db.getLastError() null 

似乎没有错误,但副本不成功。 什么是正确的命令使用?

如果您正在使用–auth ,则需要在其中包含用户名/密码…

另外,运行该命令时,您必须位于“目标”服务器上。

 db.copyDatabase(<from_db>, <to_db>, <from_hostname>, <username>, <password>); 

如果这一切都不起作用,你可能想尝试一些东西,比如创build你想要复制的数据库的奴隶。

除了贾斯汀·jenkins(Justin Jenkins)的回答之外,你还可以使用ssh隧道,如果你没有将mongodb暴露给networking(仅限本地主机)

我使用屏幕来切换“任务”。 为了我的方便,ssh隧道和mongo在单独的屏幕标签中执行。

步骤1:创build一个隧道

 ssh username@yourdomainOrIP -L 27018:localhost:27017 ...Enter your password 

第2步 :

 mongo use admin db.copyDatabase(<fromdb>,<todb>,"localhost:27018",<username>,<password) 

Mongo版本3.2开始,可以使用mongodump/mongorestore

 mongodump --host <from_host> --db <from_db> --archive | mongorestore --host <to_host> --archive 

其他信息可以在以下urlfind:

https://docs.mongodb.com/manual/reference/program/mongodump/ https://docs.mongodb.com/manual/reference/program/mongorestore/

为了让远程Mongo可达,你可以创build一个ssh隧道给它:

 ssh -fN -L 27017:localhost:27117 <remote_host> 

在这种情况下,命令可以是:

 mongodump --port 27117 --db <from_db> --archive | mongorestore --archive