AKTUALIZACE: s compact
příkaz a WiredTiger vypadá, že extra místo na disku bude skutečně uvolněno pro OS.
AKTUALIZACE: od verze 1.9+ existuje compact
příkaz.
Tento příkaz provede zhutnění "in-line". Stále bude potřebovat nějaké místo navíc, ale ne tolik.
MongoDB komprimuje soubory pomocí:
- kopírování souborů do nového umístění
- procházení dokumentů a jejich opětovné řazení / opětovné řešení
- nahrazení původních souborů novými soubory
Tuto "kompresi" můžete provést spuštěním mongod --repair
nebo přímým připojením a spuštěním db.repairDatabase()
.
V obou případech potřebujete místo na kopírování souborů. Teď nevím, proč nemáte dostatek místa pro provedení komprese, nicméně máte několik možností, pokud máte jiný počítač s větším prostorem.
- Exportujte databázi do jiného počítače s nainstalovaným Mongo (pomocí
mongoexport
) a poté můžete importovat stejnou databázi (pomocímongoimport
). Výsledkem bude nová databáze, která je více komprimovaná. Nyní můžete zastavit původnímongod
nahraďte novými databázovými soubory a můžete začít. - Zastavte aktuálního mongoda a zkopírujte databázové soubory do většího počítače a spusťte opravu na tomto počítači. Poté můžete přesunout nové databázové soubory zpět do původního počítače.
V současné době neexistuje dobrý způsob, jak „zhutnit na místě“ pomocí Mongo. A Mongo rozhodně dokáže vysát spoustu místa.
Nejlepší strategií právě pro zhutnění je spustit nastavení Master-Slave. Poté můžete Slave zhutnit, nechat jej dohnat a přepnout je. Vím, že ještě trochu chlupatý. Možná tým Mongo přijde s lepším zhutněním místa, ale nemyslím si, že je na jejich seznamu vysoko. V současné době se předpokládá, že prostor na disku je levný (a obvykle je).