MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Riduzione delle dimensioni del file di database MongoDB

AGGIORNAMENTO: con il compact comando e WiredTiger sembra che lo spazio su disco aggiuntivo verrà effettivamente rilasciato al sistema operativo.

AGGIORNAMENTO: a partire dalla v1.9+ esiste un compact comando.

Questo comando eseguirà una compattazione "in linea". Avrà ancora bisogno di spazio in più, ma non così tanto.

MongoDB comprime i file con:

  • copiare i file in una nuova posizione
  • scorrere i documenti e riordinarli / risolverli
  • sostituzione dei file originali con i nuovi file

Puoi eseguire questa "compressione" eseguendo mongod --repair oppure collegandosi direttamente ed eseguendo db.repairDatabase() .

In entrambi i casi è necessario lo spazio da qualche parte per copiare i file. Ora non so perché non hai abbastanza spazio per eseguire una compressione, tuttavia, hai alcune opzioni se hai un altro computer con più spazio.

  1. Esporta il database su un altro computer su cui è installato Mongo (usando mongoexport ) e quindi puoi importare lo stesso database (usando mongoimport ). Ciò comporterà un nuovo database che è più compresso. Ora puoi fermare il mongod originale sostituiscilo con i nuovi file di database e sei a posto.
  2. Arresta il mongod corrente e copia i file del database su un computer più grande ed esegui la riparazione su quel computer. È quindi possibile spostare nuovamente i nuovi file di database sul computer originale.

Al momento non esiste un buon modo per "compattare sul posto" usando Mongo. E Mongo può sicuramente risucchiare molto spazio.

La migliore strategia in questo momento per la compattazione è eseguire una configurazione Master-Slave. È quindi possibile compattare lo Slave, lasciarlo raggiungere e scambiarli. Lo so ancora un po' peloso. Forse il team Mongo troverà una migliore compattazione sul posto, ma non penso che sia in cima alla loro lista. Attualmente si presume che lo spazio su disco sia economico (e di solito lo è).