MongoDB no se iniciará después de la caída del servidor

Mi computadora Ubuntu se había bloqueado, y cuando reinicié MongoDB no funcionaba. Probé los siguientes comandos y obtuve el siguiente resultado:

$ mongo Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91 exception: connect failed $ service mongodb status mongodb stop/waiting $ service mongodb restart stop: Unknown instance: start: Rejected send message, 1 matched rules; type="method_call", sender=":1.57" (uid=1000 pid=2227 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") $ tail /var/log/mongodb/mongodb.log [initandlisten] exception in initAndListen: 12596 old lock file, terminating dbexit: [initandlisten] shutdown: going to close listening sockets... [initandlisten] shutdown: going to flush diaglog... [initandlisten] shutdown: going to close sockets... [initandlisten] shutdown: waiting for fs preallocator... [initandlisten] shutdown: closing all files... [initandlisten] closeAllFiles() finished dbexit: really exiting now 

(Salida formateada para que coincida con el diseño del sitio web).

¿Que pasó? ¿Cómo puedo arreglarlo?

El archivo de registro le dice que tiene un “archivo de locking antiguo” . MongoDB mantiene un archivo de locking mientras se está ejecutando. Crea este archivo cuando se inicia y lo elimina cuando se detiene. Cuando la computadora falla (o se bloquea MongoDB, por ejemplo, mediante kill ), este archivo no se elimina y, por lo tanto, la base de datos no se inicia. La existencia de este archivo indica el cierre sucio de MongoDB.

Se pueden hacer dos cosas:

  1. Si se trata de una máquina de desarrollo y no ha estado utilizando su base de datos (y tampoco tiene sus progtwigs), puede eliminar el archivo manualmente. Para MongoDB 2.2.2 que se ejecuta en Ubuntu 12.10, está en /var/lib/mongodb/mongod.lock . Para otras versiones, el archivo podría estar en una ruta diferente o podría llamarse mongo.lock .

  2. La ruta más segura es seguir la guía de Durabilidad y Reparación de MongoDB. En resumen, para una máquina con la configuración anterior, debe ejecutar los siguientes comandos:

     sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/ sudo service mongod start 

todo lo que tenía que hacer era correr: sudo mongod –repair

entonces:

sudo mongod

Según mi experiencia, normalmente elimino el archivo “mongod.lock” que está dentro de la carpeta de la base de datos. En mi caso:

* Busco donde está instalada la base de datos en mi ubuntu, es decir, la carpeta de “datos” (datos de cd); listar los archivos (ls) * Luego, eliminaré el archivo “mongod.lock” que se creó automáticamente cuando se colapsó la base de datos, al emitir el archivo “rm mongod.lock”.

Después de lo cual, emitiré “./mongod” para iniciar el mongo deamon o mongo para iniciar el mongo shell. Y todo estará bien.

Verifique si tiene suficiente espacio libre en su servidor. Si no queda espacio, mongodb no comenzará.

Probablemente esta no sea la mejor solución, pero si estás desesperado, puedes intentarlo. Parecía que solo el diario era un problema para mí, así que di los siguientes pasos:

  1. Crea un nuevo directorio de datos . Posiblemente / var / lib / mongodb2
  2. Actualice su mongod.conf para que apunte al nuevo directorio de datos.
  3. Comience mongoDB.
  4. Si comienza correctamente, puedes apagar mongo nuevamente y continuar, de lo contrario, puedes dejar de leer aquí.
  5. Ubique su directorio de datos anterior y copie los archivos de su (s) base (s) de datos a su nuevo directorio de datos (ejemplo, admin.0 admin.1 admin.ns, etc.)
  6. Inicie mongoDB nuevamente (sigue usando el nuevo directorio de datos)

Después de completar estos pasos (tardó menos de 5 minutos), estaba en funcionamiento y todos los datos parecían estar bien.

    Intereting Posts