¿Cómo cambiar la ubicación que utiliza MongoDB para almacenar sus datos?

13

Edité el archivo de configuración de MongoDB para almacenar sus datos /home/user/data/mongod.

Pero los datos aún se escriben en el directorio anterior, supuestamente porque no se otorgan los permisos a la nueva carpeta. ¿Cómo puedo darle a MongoDB los permisos necesarios para ese directorio?

deemel
fuente
1
¿Cómo editaste tu configuración? ¿Por qué supones que es un problema con los permisos? ¿Por qué crees que Mongo usa el directorio predeterminado en lugar de arrojar un error? (Esta es una forma de preguntar: ¿ha verificado el archivo de registro de errores?)
Andrea Corbellini

Respuestas:

29

Para cambiar la ubicación utilizada por MongoDB para almacenar sus datos, debe:

  1. Edite /etc/mongodb.confy cambie la línea dbpath=/var/lib/mongodba la ruta que desee, p. Ej.dbpath=/home/user/data/mongodb
  2. Actualice los permisos de su ruta elegida para permitir que el mongodbusuario escriba en ella, por ejemplochown $USER -R /home/user/data/mongodb
  3. Reinicie el servicio MongoDB ejecutando sudo service mongodb restart

Tenga en cuenta que si tiene datos en la ubicación anterior que desea conservar, primero deberá detener el servicio MongoDB, mover manualmente los archivos y luego iniciar el servicio nuevamente.

Para detener el servidor MongoDB use sudo service mongodb stop

David Edwards
fuente
¿Qué archivos necesito mover?
chovy
@chovy Los archivos en el directorio de almacenamiento.
David Edwards
He eliminado todo en/var/lib/mongodb
Chovy
@chovy Entonces, probablemente haya eliminado todos sus datos, si tenía alguno, y no tiene archivos que pueda mover.
David Edwards
Si, esta bien. No necesitaba guardarlo. no estaba seguro de si había archivos que no fueran de datos que necesitaba allí. aparentemente no porque parece funcionar todavía
chovy
1

Necesitas reiniciar el demonio para que los cambios surtan efecto.

sudo service mongodb restart
Cyril ALFARO
fuente
Ti reiniciar el demonio te doy también formas. La forma antigua: "etc / init.d / mongodb restart", la nueva forma: "sudo service mongodb restart"
Cyril ALFARO
1
Recomiendo editar su respuesta para incluir esa información.
Eliah Kagan
1

Si inicia mongodb desde la línea de comandos, puede usar el --dbpathargumento: mkdir mydata && mongod --dbpath mydata puede encontrarse con algún problema relacionado con "el archivo existe" o algo así, es una limitación bien conocida de MongoDb, más sobre esto aquí . Simplemente cambie la unidad de disco y pruebe si ahora no tiene ese problema nuevamente.

Melardev
fuente
1

Me encontré con el mismo problema hoy y resolví el problema usando los siguientes pasos.

  1. Edite el archivo mongod.conf y edite el valor de la variable dbPath.

    sudo -H gedit /etc/mongod.conf
    
  2. Luego use el siguiente comando para iniciar el servicio mongod

    sudo mongod --dbpath "your db path"
    

    Traté de ejecutar el comando anterior sin sudoy obtuve un error. Así que usa sudopara ejecutar el comando.

YashTheRedDevil
fuente
0

mv the / var / lib / mongodb (el directorio donde guardó los datos) a / path y chown mondodb: mongodb / path (el directorio donde desea guardar los datos)

edite el /etc/mongod.conf

servicio mongod restart (si no puede conectarse, verifique la ruta / si no contiene el mongod.lock, si existe, elimínelo y reinicie nuevamente)

usuario485014
fuente
su mongodb: mongodb supongo .. !!
Lakshman Pilaka