2010-10-07 26 views
36

Soy nuevo en MongoDB y tengo dificultades para hacer una copia de seguridad de mi base de datos local y restaurarla en mi servidor. Encontré el enlace en el sitio web de Mongo: http://www.mongodb.org/display/DOCS/Import+Export+Tools pero todavía tengo problemas con la restauración.Mongorestore de una base de datos que me causa problemas

Cuando hago mi copia de seguridad que llamo

mongodump --db Gen 

Entonces veo que todas las colecciones son volcado en /bin/dump/Gen carpeta

que copiar y pegar desde el local al servidor en la misma carpeta de la llamada

mongorestore --db Gen --drop --dbpath dump/Gen 

Pero me sale el siguiente: Error : root directory must be a dump of a single database when specifying a db name with --db

+0

lo que si cambia de directorio en el vertedero/Gen y ejecución de nuevo con '--dbpath .' – luckytaxi

+0

te refieres a mongodump --db Gen --dbpath dump/Gen? no funciona ... – VinnyG

Respuesta

41

autorización I averiguar lo que estoy haciendo mal:

que estaba haciendo

mongorestore --db Gen --drop --dbpath dump/Gen 

¡Pero sin el --dbpath funciona bien!

mongorestore --db Gen --drop dump/Gen 

¡Gracias a todos!

+1

Merece la pena señalar por qué, '--dbpath' establece la ruta de la ** base de datos en vivo **, no los datos volcados. Puede hacer eso para eludir la conexión a la base de datos. –

+6

Solo para el registro, el '-drop' es importante: sin él, los' ya existentes '_id' no se reemplazan. Eso significa que no se agregarán los cambios a los objetos que ya existen en la base de datos a la que está restaurando. – drevicko

+0

es el 'Gen' mongodb en realidad se cayó? En mi caso, en la restauración, puedo ver los registros anteriores que se agregaron después de tomar el volcado. ¿Puedes resolver mi problema aquí ... http://stackoverflow.com/questions/22424347/drop-whole-database-within-a-single-command-of-restoring-the-dump-of-mongodb – codeofnode

5

Creo que la estructura de su carpeta puede estar en mal estado cuando intenta moverla. Por ejemplo, esto funciona para mí:

$ ./mongodump --db Gen 
$ ./mongorestore --db Gen --drop dump/Gen/ 

¿Puede usted no trate de mover el directorio de descarga, y la restauración de/bin/dump/Gen?

El directorio que especifique debe tener archivos .bson en ella, por ejemplo,

$ ls /bin/dump/Gen 
foo.bson bar.bson baz.bson 
+0

Hola Kristina, si lo hago en mi computadora local, funciona bien, el db se restaura y no me da ningún error. El directorio que muevo tiene los archivos .bson. No puedo hacer la restauración ya que mis dbs solo son visibles en local, no puedo encontrar la manera de "abrir" mi servidor (win2008) para poder verlo desde afuera, creo que voy a comenzar otra pregunta para este uno. – VinnyG

+0

Bien. La instrucción if anterior a este error es literalmente "if (is_directory (p))" donde p es un archivo/directorio en dump/Gen. ¿Estás seguro de que no hay subdirectorios allí? – kristina

3

Una nota adicional para el que no quiere ser molestado por el error "directorio raíz debe ser un volcado de una sola base de datos cuando se especifica un nombre db con --db"

Al especificar --db y sin --collection (restauración de una base de datos completa): - la ruta de acceso debe ser una ruta de directorio - el directorio no debe contener ningún otro archivo que no sea .bson o .json. Me tomó un tiempo darse cuenta de que la carpeta oculta Svn (si se utiliza SVN) se hace un lío el guión

+0

También tuve este problema, pero en mi caso Mongo creó el archivo mongo.lock en esta carpeta mientras yo intentaba restaurarlo antes, ' he eliminado el archivo y todo funcionó como un amuleto. – realnero

-1

Ejemplo:

./mongorestore -d db -c mycollection dump/db 

elevará el siguiente error

ERROR: ERROR: root directory must be a dump of a single collection 
ERROR:  when specifying a collection name with --collection 

se puede eliminar la opción -c para transferir este error. Debido a dump/db, especifique el db, pero no la recopilación.

+1

Esto no soluciona nada. El error es hablar de la opción -d, no de la opción -c – WattsInABox

3

Esto es lo que terminó trabajando para mí (mydb es el nombre de mi base de datos):

mongorestore --drop -db mydb mydbbackup/mydb/ 

Después de mi mongodump:

mongodump -d mydb -o mydbbackup 
Cuestiones relacionadas