2011-11-29 9 views
8

El cuadro de ventanas servidor 2003 de alojamiento nuestra instancia MongoDB se quedó sin espacio en disco, y Mongo comenzado a generar el error:no puede asignar la memoria de archivos en MongoDB

no puede asignar la memoria de archivos.

Después de agregar espacio de disco adicional al servidor y reiniciar el servicio de ventanas MongoDB, cualquier operación contra la base de datos aún genera el error "No se puede asignar memoria de archivo". Intenté reparar incluso y me da el mismo error:

> db.repairDatabase(); { "afirmación": "no se puede asignar memoria de archivo", "assertionCode": 10085, "errmsg": "fracaso db afirmación", "ok": 0 }

Alguna idea de lo ¿Puedo hacer para que mi base de datos vuelva a funcionar?

+0

No es necesario eliminar el archivo de bloqueo cuando la reparación de su base de datos. Estaba teniendo un problema similar cuando nuestro proveedor de hosting cerró un servidor MongoDB sin previo aviso. El conjunto de réplicas no se iniciaba correctamente, y 'rs.initiate()' arrojaba la excepción anterior. Apagué el servidor usando 'db.shutdownServer()' e inicié 'mongod' con el indicador' --repair'. Después de completar la base de datos, pudo volver a plantearse. ¡Gracias por el consejo! –

Respuesta

8

Deteniendo el servicio, eliminando el archivo de bloqueo, y luego haciendo un mongod --repair funcionó, aunque db.repairDatabase no lo hizo.

+1

¡Es bueno saberlo, gracias! –

+0

Resulta que esto no funcionó tan bien como esperaba. Aunque Mongo se está ejecutando nuevamente sin errores, ahora está usando hasta el 90% de la CPU ... – Justin

+0

Gracias. Funcionó para mí –

5

La respuesta de Justin funcionó para mí.

Estas son algunas instrucciones más detalladas para Ubuntu:

Stop Mongo Service: sudo service mongodb stop 
Delete Lock File: sudo rm /var/lib/mongodb/mongod.lock 
Repair the DB: sudo mongod --repair --dbpath=/var/lib/mongodb 
Restart the Mongo Service: sudo service mongodb start 

la esperanza de que ayude a alguien.

(editado - en cuenta que MongoDB es el nombre del servicio, pero mongod es el comando correcto para la reparación)

+0

No debe apagar MongoDB de esa manera. La mejor forma de hacerlo sería entrar en el shell de mongo dentro del admin db ('mongo admin'), luego cerrar el servidor con este comando:' db.shutdownServer() 'Esto producirá un apagado limpio sin ningún problema de Mongo. –