Cambiando el directorio de la tienda de datos MongoDB

Hasta ahora no he especificado un directorio de datos MongoDB y solo he tenido una partición primaria de 30 GB.

Me quedé sin espacio y agregué un nuevo disco duro. ¿Cómo puedo transferir mis datos (aparentemente en /var/lib/mongodb/ ) y configurar MongoDB para que todo se ejecute en el nuevo disco sin afectar a mi instalación existente?

La respuesta corta es que el parámetro --dbpath en MongoDB le permitirá controlar qué directorio MongoDB lee y escribe sus datos.

mongod –dbpath / usr / local / mongodb-data

Comenzaría mongodb y colocaría los archivos en /usr/local/mongodb-data .

Según su distribución y la instalación de MongoDB, también puede configurar el archivo mongod.conf para hacerlo automáticamente:

 # Store data in /usr/local/var/mongodb instead of the default /data/db dbpath = /usr/local/var/mongodb 

Los paquetes oficiales de 10gen Linux ( Ubuntu / Debian o CentOS / Fedora ) se envían con un archivo de configuración básico que se coloca en /etc/mongodb.conf , y el servicio MongoDB lo lee cuando se inicia. Podrías hacer tu cambio aquí.

Lo resolvió en 2 minutos de inactividad 🙂
Simplemente mueva su carpeta, agregue enlace simbólico y luego ajuste los permisos.

 sudo service mongod stop sudo mv mongodb /new/disk/mongodb/ sudo ln -s /new/disk/mongodb/ /var/lib/mongodb sudo chown mongodb:mongodb /new/disk/mongodb/ sudo service mongod start # test if mongodb user can access new location: sudo -u mongodb -s cd /new/disk/mongodb/ # resolve other permissions issues if necessary sudo usermod -a -G  mongodb 

Cree un archivo llamado mongod.cfg en la carpeta MongoDB si no lo tiene. En mi caso: C: \ Users \ ivanbtrujillo \ MongoDB

Luego, edite mongod.cfg con el bloc de notas y agregue una línea con lo siguiente (nuestro dbpath personalizado):

 dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db 

En este archivo, debe especificar también el trayecto de registro. Mi archivo mongod.cfg es:

 logpath=C:\Users\ivanbtrujillo\MongoDB\log\mongo.log dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db 

Si usa mongoDB como un servicio de Windows, debe cambiar esta clave y especificar el archivo mongod.cfg.

Para instalar mongodb como un servicio de Windows, ejecute este comando:

 **"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" –install** 

Abra regedit.exe y vaya a la siguiente ruta:

 HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\services\MongoDB 

El servicio MongoDB no funciona, tenemos que editar la clave de ImagePath, eliminar su contenido y poner lo siguiente:

 **"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" --logpath="C:\Users\ivanbtrujillo\MongoDB\log\mongo.log" –service** 

Indicamos que mongo es su archivo de configuración y su ruta de acceso.

Luego, cuando inicias el servicio de mongodb, funciona.

Aquí hay un tutorial completo para instalar mongoDB en Windows: http://ivanbtrujillo.herokuapp.com/2014/07/24/installing-mongodb-as-a-service-windows/

Espero eso ayude,

Copie los contenidos de /var/lib/mongodb a /data/db . Los archivos que debe buscar deben tener nombres como your_db_name.ns y your_dbname.n donde n es un número que comienza con 0. Si no ve dichos archivos en /var/lib/mongodb , búsquelos en su sistema de archivos.

Una vez copiado, use --dbpath=/data/db al iniciar MongoDB a través del comando mongod .

El siguiente comando funcionará para usted, si desea cambiar la ruta predeterminada. Simplemente escriba esto en el directorio bin de mongodb.

 mongod --dbpath=yourdirectory\data\db 

En caso de que desee mover datos existentes también, simplemente copie todas las carpetas del directorio data \ db existente al nuevo directorio antes de ejecutar el comando.

Y también detener los servicios de mongodb existentes que se están ejecutando.

Esto es lo que hice, espero que sea útil para cualquier otra persona:

Pasos:

  1. Detenga sus servicios que están usando mongodb
  2. Stop mongod – mi forma de hacerlo fue con mi archivo rc /etc/rc.d/rc.mongod stop , si utilizas algo más, como systemd, deberías revisar tu documentación sobre cómo hacerlo
  3. Cree un nuevo directorio en el disco duro nuevo – mkdir /mnt/database
  4. Asegúrese de que mongodb tenga privilegios para leer / escribir desde ese directorio (generalmente chown mongodb:mongodb -R /mnt/database/mongodb ) – gracias @DanailGabenski.
  5. Copie la carpeta de datos de su mongodb a la nueva ubicacióncp -R /var/lib/mongodb/ /mnt/database/
  6. Elimine la carpeta de base de datos anteriorrm -rf /var/lib/mongodb/
  7. Crear un enlace simbólico a la nueva carpeta de base de datosln -s /mnt/database/mongodb /var/lib/mongodb
  8. Comience mongod/etc/rc.d/rc.mongod start
  9. Verifique el registro de su mongod y haga un poco de comprobación de cordura (intente mongo para conectarse a su base de datos para ver si todo está bien)
  10. Comience sus servicios que paró en el punto 1

No hay necesidad de decir que debe tener cuidado cuando hace esto, especialmente con rm -rf pero creo que esta es la mejor manera de hacerlo.

Nunca intente copiar el directorio de la base de datos mientras mongod se está ejecutando, ya que puede haber servicios que lo escriban / lean, lo que cambiará el contenido de su base de datos.

Si se instala a través de apt-get en Ubuntu 12.04, no olvide chown -R mongodb:nogroup /path/to/new/directory . Además, cambie la configuración en /etc/mongodb.conf .

Como recordatorio, el paquete mongodb-10gen ahora se inicia vía upstart, por lo que el script de configuración está en /etc/init/mongodb.conf

Acabo de pasar por esto, espero que los googlers lo encuentren útil 🙂

el usuario es mongod en lugar de mongodb

sudo chown mongod: mongod / newlocation

Puede ver los registros de errores si falla el servicio:

/var/log/mongodb/mongod.log

En debian / ubuntu, deberá editar el script /etc/init.d/mongodb. Realmente, este archivo debería estar extrayendo la configuración de /etc/mongodb.conf, pero no parece extraer el directorio predeterminado (probablemente un error)

Esto es un poco complicado, pero agregar esto al script lo hizo comenzar correctamente:

añadir:

 DBDIR=/database/mongodb 

cambio:

 DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --config $CONF run"} 

a:

 DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --dbpath $DBDIR --config $CONF run"}