2013-09-27 8 views
12

Ustawiłem replikę mongody, kilka dni temu, zrobiłem mały test i wszystko działało dobrze. Dzisiaj właśnie odkryłem, że jego lokalna kolekcja wzrosła do 24G !!!Dlaczego moja nowo utworzona baza danych Mongodb wzrosła do 24 GB?

rs0:PRIMARY> show dbs 
local 24.06640625GB 
test 0.203125GB 

drugiej kolekcji wyglądają normalnie z wyjątkiem "oplog.rs":

rs0:PRIMARY> db.oplog.rs.stats() 
{ 
    "ns" : "local.oplog.rs", 
    "count" : 322156, 
    "size" : 119881336, 
    "avgObjSize" : 372.12200300475547, 
    "storageSize" : 24681987920, 
    "numExtents" : 12, 
    "nindexes" : 0, 
    "lastExtentSize" : 1071292416, 
    "paddingFactor" : 1, 
    "systemFlags" : 0, 
    "userFlags" : 0, 
    "totalIndexSize" : 0, 
    "indexSizes" : { 

    }, 
    "capped" : true, 
    "max" : NumberLong("9223372036854775807"), 
    "ok" : 1 
} 

To mój mongodb.conf

dbpath=/data/db 

#where to log 
logpath=/var/log/mongodb/mongodb.log 
logappend=true 
port = 27017 
fork = true 
replSet = rs0 

Jak mogę go rozwiązać? Wielkie dzięki.

Odpowiedz

16

Oplog, który przechowuje bieżący dziennik operacji dla podstawowego i jest używany dla mechanizmu replikacji, jest przydzielany domyślnie na 5% dostępnej wolnej przestrzeni dyskowej (dla systemów Linux/Unix, nie Mac OS X lub Windows). Więc jeśli masz dużo wolnego miejsca na dysku, MongoDB zrobi duży oplog, co oznacza, że ​​masz duże okno czasowe, w którym możesz przywrócić z powrotem do dowolnego punktu w czasie, na przykład. Kiedy oplog osiągnie maksymalny rozmiar, po prostu przewraca się (bufor pierścieniowy).

Można określić rozmiar oplog przy inicjalizacji bazy danych przy użyciu opcji oplogSize patrz http://docs.mongodb.org/manual/core/replica-set-oplog/

Konkluzja: Jeśli jesteś naprawdę brakuje miejsca na dysku (które najwyraźniej nie są, inaczej Wouldn oplog nie zostały stworzone tak duże), nie martw się o to. Zapewnia dodatkowe bezpieczeństwo.

+0

Dzięki. Mam dysk twardy 492G. Mam zamiar przenieść stare dane ze starego serwera mongodb do nowego zestawu replik. Rozmiar danych to 6 GB z około 10 milionami rekordów. Czy można bezpiecznie używać mongodump i mongorestore z serwerem produkcji na żywo? – blackgun

+3

Nie zaleca się wykonywania _annych rzeczy_ w produkcji, które nie zostały wcześniej wypróbowane w środowisku kontroli jakości. Jeśli stara wersja MongoDB nie jest zbyt odległa od nowej wersji, po prostu przeniesienie starych plików danych do katalogu danych nowego głównego i ponowne uruchomienie nowego zestawu replik może być łatwiejsze. Replikacja powinna nadążyć za pełną synchronizacją. Nie rób tego bez uprzedniego wypróbowania go w QA! – drmirror