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ć oryginalnegomongod
zastą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).