MongoDB de repente dejó de funcionar hoy (12.04)

8

Después de actualizar a 12.04 hace un mes o dos, instalé MongoDB a través de APT. Desde entonces ha funcionado bien. No hice cambios en la configuración ni nada, simplemente funcionó de la caja.

Hoy no comenzó, cuando inicié sesión de repente tuve un error de "no se pudo conectar a ningún servidor en la lista" en mi aplicación y lo comprobé y mongodno estaba ejecutándose.

ls -al /var/lib/mongodb

No muestra *.lockarchivos.

$ /etc/init.d/mongodb start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongodb start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mongodb
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.89" (uid=1000 pid=4284 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

Entonces intenté sudo mongod --repair

Mon Aug 13 12:16:48 [initandlisten] MongoDB starting : pid=4350 port=27017 dbpath=/data/db/ 64-bit host=computer-localhost
Mon Aug 13 12:16:48 [initandlisten] db version v2.0.4, pdfile version 4.5
Mon Aug 13 12:16:48 [initandlisten] git version: nogitversion
Mon Aug 13 12:16:48 [initandlisten] build info: Linux yellow 2.6.24-29-server #1 SMP Tue Oct 11 15:57:27 UTC 2011 x86_64 BOOST_LIB_VERSION=1_46_1
Mon Aug 13 12:16:48 [initandlisten] options: { repair: true }
Mon Aug 13 12:16:48 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Mon Aug 13 12:16:48 dbexit: 
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close listening sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to flush diaglog...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: waiting for fs preallocator...
Mon Aug 13 12:16:48 [initandlisten] shutdown: lock for final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: closing all files...
Mon Aug 13 12:16:48 [initandlisten] closeAllFiles() finished
Mon Aug 13 12:16:48 dbexit: really exiting now

¿Alguna idea de lo que está mal?

Actualizar

Así que lo intenté sudo service mongodb starty finalmente comenzó (lo intenté varias veces antes)

mongodb start/running, process 4376
Xeoncross
fuente

Respuestas:

13

Diagnóstico

Lo primero que debe hacer es verificar los archivos de registro de MongoDB para ver por qué el servicio no se inició. Correr:

tail -f /var/log/mongodb/mongodb.log

en una ventana de terminal y luego ejecute:

sudo service mongodb restart

en otro. El archivo de registro debe mostrar que MongoDB intenta iniciar e informar un mensaje de error si falla.

Reparar

Si los registros indican que necesita reparar su base de datos, hay dos puntos a tener en cuenta:

  1. Por defecto, mongodespera que los archivos de la base de datos estén en /data/db/, pero los paquetes de Ubuntu lo configuran para buscar /var/lib/mongodb/. Entonces, si ejecuta mongoddirectamente en lugar de usar los scripts de inicio, debe decirle dónde están los archivos de su base de datos agregando un --dbpathargumento.
  2. Cuando se ejecuta mongodcon el sistema de arranque, se ejecutará como el mongodbusuario propietario de los archivos de la base de datos. Si ejecuta mongodusando sudosin especificar un usuario, terminará con los archivos de base de datos de su propiedad root. Por lo tanto, debe agregar un -uargumento a sudo.

Si los archivos de su base de datos son actualmente propiedad de rootusted, deberá volver a cambiar su propiedad mongodbantes de que MongoDB pueda usarlos nuevamente:

sudo chown -R mongodb:mongodb /var/lib/mongodb/

TL; DR

Para ejecutar una reparación en MongoDB cuando usa la distribución empaquetada, debe ejecutar:

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
David Edwards
fuente
4

También tuve el mismo problema y lo resolví. Cuando traté de empezar mongodbcon sudolo mostró el proceso ya estaba corriendo ( ). Pero no puedo acceder a la instancia en ejecución a través del shell. Se demostró que la conexión falló .mongodb start/running, process xxxx

La solución

Así que eliminé el archivo de bloqueo:

sudo rm /var/lib/mongodb/mongod.lock

Luego reinicié el servicio:

sudo service mongodb start

¡Entonces Mongo volvió a trabajar en mi máquina!

Damodaran
fuente
0

También tuve un problema similar al iniciar mongod.exe en mi máquina (instalación de Windows). El era un .lockarchivo en el C:\data\dbque estaba causando el problema. Eliminé ese archivo y el problema se resolvió.

George Joseph
fuente
0

Tuve un problema similar, la causa fue un poco estúpida; Estaba sin espacio en disco.

Comprobando los registros en /var/log/mongodb/mongod.log, vi la siguiente línea:

2015-04-13T10:56:37.132+0200 [initandlisten] ERROR: Insufficient free space for journal files

Esperando que esto salve a alguien media hora de su vida.

Edo
fuente