sql >> Base de Datos >  >> NoSQL >> MongoDB

Reducir el tamaño del archivo de la base de datos MongoDB

ACTUALIZACIÓN: con el compact comando y WiredTiger parece que el espacio extra en el disco se liberará al sistema operativo.

ACTUALIZACIÓN: a partir de v1.9+ hay un compact comando.

Este comando realizará una compactación "en línea". Todavía necesitará algo de espacio extra, pero no tanto.

MongoDB comprime los archivos por:

  • copiar los archivos a una nueva ubicación
  • recorrer los documentos y reordenarlos/volver a resolverlos
  • reemplazar los archivos originales con los nuevos archivos

Puede hacer esta "compresión" ejecutando mongod --repair o conectándose directamente y ejecutando db.repairDatabase() .

En cualquier caso, necesita el espacio en algún lugar para copiar los archivos. Ahora no sé por qué no tienes suficiente espacio para realizar una compresión, sin embargo, tienes algunas opciones si tienes otra computadora con más espacio.

  1. Exportar la base de datos a otra computadora con Mongo instalado (usando mongoexport ) y luego puede importar esa misma base de datos (usando mongoimport ). Esto dará como resultado una nueva base de datos que está más comprimida. Ahora puedes detener el mongod original reemplace con los nuevos archivos de la base de datos y estará listo para comenzar.
  2. Detenga el mongod actual y copie los archivos de la base de datos a una computadora más grande y ejecute la reparación en esa computadora. Luego puede mover los nuevos archivos de la base de datos a la computadora original.

Actualmente no existe una buena manera de "compactar en el lugar" usando Mongo. Y Mongo definitivamente puede absorber mucho espacio.

La mejor estrategia en este momento para la compactación es ejecutar una configuración Maestro-Esclavo. Luego puede compactar el Esclavo, dejar que lo alcance y cambiarlos. Sé que todavía un poco peludo. Tal vez al equipo de Mongo se le ocurra una mejor compactación en el lugar, pero no creo que sea una prioridad en su lista. Actualmente se supone que el espacio en disco es barato (y generalmente lo es).