tutorial - ¿Cómo copio una base de datos de un servidor MongoDB a otro?
mongodb ventajas y desventajas (3)
Tengo dos mongodbs en un servidor diferente, ambos comienzan con --auth
. Ahora quiero copiar un db de un servidor a otro.
> mongo
> use admin
> db.copyDatabase("mydb","mydb","another_server")
Muestra:
{ "errmsg" : "", "ok" : 0 }
Y:
> db.getLastError()
null
Parece que no hay error, pero la copia no es exitosa. ¿Cuál es el comando correcto para usar?
A partir de la versión 3.2
de Mongo
, puedes hacerlo usando mongodump/mongorestore
:
mongodump --host <from_host> --db <from_db> --archive | mongorestore --host <to_host> --archive
Información adicional se puede encontrar en:
https://docs.mongodb.com/manual/reference/program/mongodump/ https://docs.mongodb.com/manual/reference/program/mongorestore/
Para hacer que mongo remoto sea accesible, puedes crear un túnel ssh para él:
ssh -fN -L 27017:localhost:27117 <remote_host>
En este caso, el comando podría ser:
mongodump --port 27117 --db <from_db> --archive | mongorestore --archive
Además de la respuesta de Justin Jenkins, tenga en cuenta que también puede usar un túnel ssh si no tiene mongodb expuesto a la red (solo localhost)
Uso la pantalla para cambiar entre "tareas". para mi conveniencia, el túnel ssh y el mongo se ejecutan en pestañas de pantalla separadas.
paso 1: crea un túnel
ssh username@yourdomainOrIP -L 27018:localhost:27017
...Enter your password
paso 2 :
mongo
use admin
db.copyDatabase(<fromdb>,<todb>,"localhost:27018",<username>,<password)
Si está utilizando --auth , tendrá que incluir su nombre de usuario / contraseña allí ...
También debe estar en el servidor de "destino" cuando ejecuta el comando.
db.copyDatabase(<from_db>, <to_db>, <from_hostname>, <username>, <password>);
Si todo eso no funciona, es posible que desee intentar algo así como crear un esclavo de la base de datos que desea copiar ...