Archivos de Categoría: MongoDB @es

Hacer más pequeños los ficheros de journal de MongoDB

Intentando liberar algo de espacio en el disco duro me di cuenta de que los ficheros de journal de MongoDB ocupaban alrededor de 3GB.

mongo journal

Liberar el espacio que ocupan es tan facil como parar el servicio MongoDB, añadir la opción smallfiles = true en el fichero /etc/mongodb.conf, borrar los fichero de journal y reiniciar el servicio de MongoDB otra vez.

sudo service mongodb stop
sudo vi /etc/mongodb.conf

En este momento hay que añadir esto al fichero /etc/mongodb.conf:

smallfiles = true

Ahora tan solo hay que borrar los ficheros de journal y volver a arrancar el servicio. Los nuevos ficheros de journal se crearan automáticamente:

sudo rm -rf /var/lib/mongodb/journal/*
sudo service mongodb start

mongo journal after

Ref: http://lostquery.com/questions/313/how-do-i-shrink-the-mongodb-journal-files

“WARNING: soft rlimits too low” en MongoDB con Mac OS X

Si te aparece esta advertencia al conectarte a la consola de mongo en Mac OS X:

** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000

Puedes aumentar ese límite con tan solo ejecutar en la consola de comandos de Mac OS X esto:

ulimit -n 1024 && mongod

O esto:

launchctl limit maxfiles 1024 1024

Pero si se está ejecutando en un entorno de desarrollo no hay problema y se puede ingnorar.

Este es un arreglo temporal y no muy bonito. Para hacerlo permanente hay que añadir lo siguiente al fichero /etc/launchd.conf:

launchctl limit maxfiles 1024 1024

Ahora reinicia el sistema para aplicar los cambios.

Puedes ver los valores actuales de los rlimits ejecutando esto:

$ launchctl limit maxfiles
        maxfiles    1024           1024

Reinicia mongod y el problema debería estar resuelto.

Solucionar “mongodb cannot be built while v8 is active” en MacPorts

Mientras actualizaba los ports en macports me salió este error:

--->  Configuring mongodb
Error: mongodb cannot be built while v8 is active.
Error: Please deactivate v8 and try again.
Error: You can reactivate v8 again later.
Error: org.macports.configure for port mongodb returned: v8 is active

Para desactivar v8 ejecutar:

sudo port -f deactivate v8

Luego volver a ejecutar el proceso de actualización:

sudo port upgrade outdated

Y por último reactivar v8:

sudo port activate v8

mongodb-logo

Ref: http://widgetbook.blogspot.com.es/2013/08/mongodb-and-macports-and-v8.html

“Error AttributeError: ‘module’ object has no attribute ‘MongoClient'” con Pymongo en Ubuntu 12.04

Ahora mismo estoy haciendo el curso online M101P: MongoDB for Developers.

course_image

Al ejecutar uno de los deberes me apareció este error con pymongo en Ubuntu 12.04:

AttributeError: 'module' object has no attribute 'MongoClient'

Anteriormente había instalado pymongo mediante apt-get de esta forma:

sudo apt-get install python-pymongo

Al parecer la versión que se instala así está anticuada o rota, así que tuve que desinstalarar y volver a instalar pymongo mediante PiP:

sudo apt-get purge python-pymongo
sudo apt-get install python-pip
sudo pip install pymongo

Fuente: http://stackoverflow.com/questions/17624416/cant-import-mongoclient

MongoDB: Recuperar datos después de un apagado inesperado en Ubuntu

Si ejecutas mongod pero no termina de arrancar y se te muestra este error en el log (/var/log/mongodb/mongodb.log) tendrás que reparar tu base de datos.

************** 
Unclean shutdown detected.
Please visit http://dochub.mongodb.org/core/repair for recovery instructions.
*************
Thu Dec  5 14:42:47.209 [initandlisten] exception in initAndListen: 12596 old lock file, terminating
Thu Dec  5 14:42:47.209 dbexit: 
Thu Dec  5 14:42:47.209 [initandlisten] shutdown: going to close listening sockets...
Thu Dec  5 14:42:47.209 [initandlisten] shutdown: going to flush diaglog...
Thu Dec  5 14:42:47.209 [initandlisten] shutdown: going to close sockets...
Thu Dec  5 14:42:47.209 [initandlisten] shutdown: waiting for fs preallocator...
Thu Dec  5 14:42:47.209 [initandlisten] shutdown: closing all files...
Thu Dec  5 14:42:47.209 [initandlisten] closeAllFiles() finished
Thu Dec  5 14:42:47.209 dbexit: really exiting now

Nota: Los ficheros de datos de MongoDB normalmente se encuentran en /data/db pero en mi instalación de Ubuntu están en /var/lib/mongodb.

mongodb-logo

Reparar conservando los datos:

sudo mkdir /var/lib/mongodb0
sudo mongod --dbpath /var/lib/mongodb --repair --repairpath /var/lib/mongodb0
sudo mongod --dbpath /var/lib/mongodb0

Ahora que el servidor está arrancado con la versión reparada (/var/lib/mongodb0) de tus datos originales (from /var/lib/mongodb) usa el cliente de mongo para verificar que todo está bien. En ese caso reemplaza /var/lib/mongodb con /var/lib/mongodb0.

sudo rm -rf /var/lib/mongodb
sudo mv /var/lib/mongodb0 /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb

Reparar sin mantener los datos:

sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --dbpath /var/lib/mongodb --repair

Cuando este proceso se complete, los ficheros de datos reparados sustituirán a los originales en el directorio /var/lib/mongodb.

Ref: http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/