Jak przeprowadzić migrację MongoDB 2.6 do 3.0 za pomocą WiredTiger


9

MongoDB 3.0 wprowadza nowy silnik pamięci o nazwie, wiredTigerco powoduje znaczne zmniejszenie zużycia pamięci i miejsca na dysku.

Ponieważ moja baza danych ma obecnie około 20 milionów obiektów i zużywa około 70 GB pamięci RAM, ta aktualizacja pojawia się w odpowiednim momencie, aby odłożyć aktualizację sprzętu.

W jaki sposób migrujesz istniejącą instalację MongoDB 2.6 do 3.0 i jednocześnie zyskujesz korzyści z wiredTiger?

Dokumentacja odnosi się do opcji, które powodują błędy uruchamiania, które uniemożliwiają uruchomienie MongoDB. Ponadto lokalizacje plików nie pasują do tych w Ubuntu (serwer 14.04 LTS).


Czy to pojedyncze wystąpienie (nie zestaw replik)?
Adam C

Odpowiedzi:


15

W instalacjach domyślnych plik konfiguracyjny to /etc/mongod.conf. Dokumenty MongoDB nie wspominają, że podczas migracji do WiredTiger musimy również zaktualizować plik konfiguracyjny do nowego formatu YAML wprowadzonego w 2.6.
O ile wiem, engineopcja jest dostępna tylko w nowym formacie konfiguracji.
Migracja ze starego silnika pamięci polega na utworzeniu zrzutu bazy danych, wyłączeniu mongodb, zmianie ustawień, a następnie zaimportowaniu zrzutu do nowego silnika pamięci.

  1. Utwórz kopię zapasową. Poważnie. Potrzebujemy zrzutu bazy danych, który następnie zaimportujemy do nowego silnika bazy danych:

    mongodump -d db_name /backup/path/  
    
  2. Zatrzymaj usługę mongodb

    sudo service mongod stop  
    
  3. Przenieś dane z bieżącej lokalizacji w inne miejsce (MongoDB nie uruchomi się, jeśli katalog danych zawiera pliki wygenerowane przez stary silnik pamięci).

    sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. Zaktualizuj MongoDB do wersji 3.0 (z http://docs.mongodb.org/v3.0/tutorial/install-mongodb-on-ubuntu/ ):

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10  
    echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list  
    sudo apt-get update  
    sudo apt-get install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools  
    
  5. Konwertuj plik konfiguracyjny ze starego (wcześniejszego niż 2.6) na bieżący format YAML. Absolutne minimum to:

    storage:  
        dbPath: "/var/lib/mongodb"  
        engine: wiredTiger  
    
    systemLog:  
       destination: file  
       path: "/var/log/mongodb/mongod.log"  
       logAppend: true  
    
    net:  
        bindIp: 127.0.0.1  
        port: 27017  
        # Enable the HTTP interface (Defaults to port 28017).  
        http:  
            enabled: false  
    

    Upewnij się, że nie pozostały żadne wiersze w starym formacie, w przeciwnym razie MongoDB nie uruchomi się.

    Pełna dokumentacja pliku konfiguracyjnego znajduje się na stronie: http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. Opcjonalnie wykonaj kopię zapasową dziennika:

    sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. Uruchom ponownie mongodb

    sudo service mongod start
    
  8. Załaduj kopię zapasową, aby przekonwertować dane na nowy silnik pamięci

    mongorestore /backup/location
    

Po sprawdzeniu, czy wszystkie twoje dane są w porządku, możesz usunąć katalog ze starym formatem danych

sudo rm -r /var/lib/mongodb_26/

Należy pamiętać, że w przypadku zestawów replik i dzielonych klastrów istnieją dodatkowe kroki: http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage -silnik-do-wiredtiger


1
Uwaga: bardziej kompletne przykłady plików konfiguracyjnych YAML znajdują się w mojej odpowiedzi na stronie DBA: dba.stackexchange.com/a/82592/6441
Adam C

1

Korzystając ze starego formatu pliku konfiguracji , odniosłem sukces z:

storageEngine = wiredTiger

To dość interesujące, ponieważ w momencie pisania postu próbowałem dokładnie tego i dostałem błąd (którego nie pamiętam).
Emanuel Ey
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.