AKTUALIZACJA: z compact polecenie i WiredTiger wygląda na to, że dodatkowe miejsce na dysku zostanie faktycznie zwolnione dla systemu operacyjnego.
AKTUALIZACJA: od wersji 1.9+ istnieje compact polecenie.
To polecenie wykona zagęszczenie „w linii”. Nadal będzie potrzebować dodatkowej przestrzeni, ale nie tak dużo.
MongoDB kompresuje pliki przez:
- kopiowanie plików do nowej lokalizacji
- przeglądanie dokumentów i ponowne ich zamawianie / ponowne ich rozwiązywanie
- zastąpienie oryginalnych plików nowymi plikami
Możesz to zrobić, uruchamiając mongod --repair lub łącząc się bezpośrednio i uruchamiając db.repairDatabase() .
W obu przypadkach potrzebujesz miejsca, aby skopiować pliki. Teraz nie wiem, dlaczego nie masz wystarczająco dużo miejsca, aby wykonać kompresję, jednak masz kilka opcji, jeśli masz inny komputer z większą ilością miejsca.
- Eksportuj bazę danych na inny komputer z zainstalowanym Mongo (używając
mongoexport), a następnie możesz zaimportować tę samą bazę danych (za pomocąmongoimport). Spowoduje to powstanie nowej bazy danych, która będzie bardziej skompresowana. Teraz możesz zatrzymać oryginalnegomongodzastąp nowymi plikami bazy danych i gotowe. - Zatrzymaj obecnego mongoda i skopiuj pliki bazy danych na większy komputer i uruchom naprawę na tym komputerze. Następnie możesz przenieść nowe pliki bazy danych z powrotem na oryginalny komputer.
Obecnie nie ma dobrego sposobu na „kompaktowanie w miejscu” za pomocą Mongo. A Mongo z pewnością potrafi pochłonąć dużo miejsca.
W tej chwili najlepszą strategią zagęszczania jest uruchomienie konfiguracji Master-Slave. Następnie możesz skompaktować Slave, pozwolić mu nadrobić zaległości i przełączyć je. Wiem, że jeszcze trochę owłosione. Być może zespół Mongo wymyśli lepsze zagęszczenie w miejscu, ale nie sądzę, by było ono wysoko na ich liście. Obecnie zakłada się, że przestrzeń dyskowa jest tania (i zwykle tak jest).