sql >> Databáze >  >> NoSQL >> MongoDB

Snížení velikosti souboru databáze MongoDB

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.

  1. 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.
  2. 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).



  1. Dynamické atributy s Rails a Mongoid

  2. mongodb:vložte, pokud neexistuje

  3. MongoDB bind_ip nebude fungovat, pokud nebude nastaveno na 0.0.0.0

  4. Převod HBase ACL na zásady Ranger