MongoDB 3.0 führt eine neue Speicher-Engine namens ein, wiredTiger
die 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ß, engine
ist 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.
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/
Stoppen Sie den MongoDB-Dienst
sudo service mongod stop
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/
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
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/
Erstellen Sie optional eine Sicherungskopie des Protokolls:
sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
Starten Sie MongoDB neu
sudo service mongod start
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