So migrieren Sie MongoDB 2.6 auf 3.0 mit WiredTiger

So migrieren Sie MongoDB 2.6 auf 3.0 mit WiredTiger

MongoDB 3.0 führt eine neue Speicher-Engine namens ein, wiredTigerdie zu einer deutlichen Reduzierung des Speicher- und Festplattenspeicherbedarfs führt.

Da meine Datenbank derzeit ca. 20 Millionen Objekte umfasst und ca. 70 GB RAM verbraucht, kommt dieses Update gerade zum richtigen Zeitpunkt, um ein Hardware-Update zu verschieben.

Wie migrieren Sie eine vorhandene Installation von MongoDB 2.6 auf 3.0 und profitieren gleichzeitig von den Vorteilen von wiredTiger?

In der Dokumentation werden Optionen erwähnt, die zu Startfehlern führen, die den Start von MongoDB verhindern. Außerdem stimmen die Dateispeicherorte nicht mit denen in Ubuntu (Server 14.04 LTS) überein.

Antwort1

Bei Standardinstallationen befindet sich die Konfigurationsdatei unter /etc/mongod.conf. Was die MongoDB-Dokumente nicht erwähnen, ist, dass wir bei der Migration zu WiredTiger auch die Konfigurationsdatei auf das neue YAML-Format aktualisieren müssen, das in 2.6 eingeführt wurde.
Soweit ich weiß, engineist die Option nur im neuen Konfigurationsformat verfügbar.
Die Migration von der alten Speicher-Engine besteht darin, einen Datenbank-Dump zu erstellen, MongoDB herunterzufahren, Einstellungen zu ändern und dann den Dump in die neue Speicher-Engine zu importieren.

  1. Erstellen Sie ein Backup. Im Ernst. Wir benötigen einen Datenbank-Dump, den wir dann in die neue Datenbank-Engine importieren:

    mongodump -d db_name /backup/path/  
    
  2. Stoppen Sie den MongoDB-Dienst

    sudo service mongod stop  
    
  3. Verschieben Sie Daten vom aktuellen Speicherort an einen anderen Ort (MongoDB wird nicht gestartet, wenn das Datenverzeichnis von der alten Speicher-Engine generierte Dateien enthält).

    sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. Upgrade von MongoDB auf Version 3.0 (vonhttp://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. Konvertieren Sie die Konfigurationsdatei vom alten (vor 2.6) in das aktuelle YAML-Format. Das absolute Minimum ist:

    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  
    

    Stellen Sie sicher, dass keine Zeilen im alten Format übrig bleiben, da MongoDB sonst nicht gestartet wird.

    Die vollständige Dokumentation der Konfigurationsdatei finden Sie unter:http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. Erstellen Sie optional eine Sicherungskopie des Protokolls:

    sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. Starten Sie MongoDB neu

    sudo service mongod start
    
  8. Laden Sie das Backup, um Daten in eine neue Speicher-Engine zu konvertieren

    mongorestore /backup/location
    

Nachdem Sie überprüft haben, dass alle Ihre Daten in Ordnung sind, können Sie das Verzeichnis mit dem alten Datenformat löschen

sudo rm -r /var/lib/mongodb_26/

Beachten Sie, dass für Replikationssätze und Shard-Cluster einige zusätzliche Schritte erforderlich sind:http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage-engine-to-wiredtiger

Antwort2

Verwendung deraltes Konfigurationsdateiformat, ich hatte Erfolg mit:

storageEngine=wiredTiger

verwandte Informationen