如何将数据库从一个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