Upgrade MongoDB 3.4 auf 3.6
Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde verbessert. Alle Details zu den neuen Features findet ihr unter: https://docs.mongodb.com/manual/release-notes/3.6/
Hier die einzelnen Schritte für das Upgrade von MongoDB Version 3.4 auf 3.6 unter Linux und Docker.
Solltet bei euch noch die Version 3.2 laufen, müsst ihr erst auf 3.4 aktualisieren und danach auf 3.6. Direkt von z.B. 3.2 auf Version 3.6 funktioniert leider nicht.
Sicherheit:
Die Version 3.6 bindet nun per Standard die MongoDB an das lokale Interface. Damit ist ein Zugriff von Außen erst einmal nicht mehr möglich. Wer das ändern möchte kann das z.B. mit "mongod --bind_ip localhost,192.168.100.1" machen (oder alternativ mit net.bindIp in der Konfigurations-Datei). Die Clients müssen sich dann aber auch mit z.B. "mongo --host 192.168.100.1" anmelden.
Genaue Informationen dazu findet ihr hier:
https://docs.mongodb.com/manual/release-notes/3.6-compatibility/#bind-ip ...
Schritt Eins
Prüfen welches FeatureSet eingestellt ist. Dazu in der MongoDB Intellishell folgendes eingeben:
Es sollte als Ergebnis folgendes erscheinen:
Sollte ihr die Version 3.4 benutzen, die "featureCompatibilityVersion" aber 3.2 ausgeben, dann habt ihr beim letzten Update von 3.2 auf 3.4 geschlafen oder es absichtlich im 3.2 FeatureSet belassen. Als "FeatureSet" bezeichne ich ich mal abkürzend die "featureCompatibilityVersion". Sollte also 3.2 in einer 3.4 erscheinen, muss man noch das FeatureSet auf 3.4 ändern, bevor man das 3.6 Update durchführen kann (man sollte vorher aber in einer Testumgebung prüfen ob alles unter 3.4 läuft). Das kann man dann mit dem Befehl:
Grundsätzlich funktioniert ein Update von MongoDB so, dass zwar die Binärdateien per Hand oder per Update-Werkzeuge der jeweiligen Distribution eingespielt werden, MongoDB aber ohne Umstellung der "featureCompatibilityVersion" bei der alten Version bleibt (im Kompatibilitätsmodus). Die MongoDB ist damit auch bei einem Update erst einmal mit der bisherigen/alten Version kompatibel. Funktioniert dann alles (die Binär-Dateien, die Konfiguration und in einer Testumgebung auch das FeatureSet), kann der Admin per Command auf die neueste Version schalten.
Schritt Zwei
Update der Binär-Dateien entweder per Hand oder über die jeweiligen Update-Werkzeuge der Distribution. Danach neu starten und die Logfiles beobachten. Gibt es keine Fehler in den Logs fahren wir mit Schritt Drei weiter. Mögliche Fehler können z.B. SELinux Fehler sein, da die Datendateien mit Version 3.6 etwas anders behandel werden. Bei Docker aktualisieren sich die Binärdateien automatisch mit "mongodb:latest".
Schritt Drei
Läuft die neue MongoDB Version sauber hoch und hat man das FeatureSet in einer Testumgebung getestet, kann man nun auf die neuen Features umschalten. Denn aktuell läuft die MongoDB noch in einer Art Kompatibilitätsmodus und hat weiterhin nur die Features der 3.4 Version.
Mit folgendem Befehl in der MongoDB Intellishell kann man das nun ändern:
Sollte jetzt ein Fehler kommen, müsst ihr den Fehler im MongoDB Log suchen. Das ist recht ausführlich. Man kann den Befehlt auch mehrfach eingeben, sollte es beim erstem Mal nicht funktionieren.
Ist die Umstellung erfolgreich, sollte die Shell folgendes melden: "featureCompatibilityVersion": "3.6".
Nun läuft die MongoDB mit den neuen Feature der 3.6 Version.
Eine detaillierte Übersicht der Änderungen und des Upgrades in Englisch findet ihr hier:
https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/
Auch Heise hat einen guten Beitrag zu den neuen Features geschrieben:
https://www.heise.de/developer/meldung/MongoDB-3-6-bringt-mehr-Flexibili ...
Gruß
Frank
Hier die einzelnen Schritte für das Upgrade von MongoDB Version 3.4 auf 3.6 unter Linux und Docker.
Solltet bei euch noch die Version 3.2 laufen, müsst ihr erst auf 3.4 aktualisieren und danach auf 3.6. Direkt von z.B. 3.2 auf Version 3.6 funktioniert leider nicht.
Sicherheit:
Die Version 3.6 bindet nun per Standard die MongoDB an das lokale Interface. Damit ist ein Zugriff von Außen erst einmal nicht mehr möglich. Wer das ändern möchte kann das z.B. mit "mongod --bind_ip localhost,192.168.100.1" machen (oder alternativ mit net.bindIp in der Konfigurations-Datei). Die Clients müssen sich dann aber auch mit z.B. "mongo --host 192.168.100.1" anmelden.
Genaue Informationen dazu findet ihr hier:
https://docs.mongodb.com/manual/release-notes/3.6-compatibility/#bind-ip ...
Schritt Eins
Prüfen welches FeatureSet eingestellt ist. Dazu in der MongoDB Intellishell folgendes eingeben:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
Es sollte als Ergebnis folgendes erscheinen:
"featureCompatibilityVersion": "3.4"
Sollte ihr die Version 3.4 benutzen, die "featureCompatibilityVersion" aber 3.2 ausgeben, dann habt ihr beim letzten Update von 3.2 auf 3.4 geschlafen oder es absichtlich im 3.2 FeatureSet belassen. Als "FeatureSet" bezeichne ich ich mal abkürzend die "featureCompatibilityVersion". Sollte also 3.2 in einer 3.4 erscheinen, muss man noch das FeatureSet auf 3.4 ändern, bevor man das 3.6 Update durchführen kann (man sollte vorher aber in einer Testumgebung prüfen ob alles unter 3.4 läuft). Das kann man dann mit dem Befehl:
db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
Grundsätzlich funktioniert ein Update von MongoDB so, dass zwar die Binärdateien per Hand oder per Update-Werkzeuge der jeweiligen Distribution eingespielt werden, MongoDB aber ohne Umstellung der "featureCompatibilityVersion" bei der alten Version bleibt (im Kompatibilitätsmodus). Die MongoDB ist damit auch bei einem Update erst einmal mit der bisherigen/alten Version kompatibel. Funktioniert dann alles (die Binär-Dateien, die Konfiguration und in einer Testumgebung auch das FeatureSet), kann der Admin per Command auf die neueste Version schalten.
Schritt Zwei
Update der Binär-Dateien entweder per Hand oder über die jeweiligen Update-Werkzeuge der Distribution. Danach neu starten und die Logfiles beobachten. Gibt es keine Fehler in den Logs fahren wir mit Schritt Drei weiter. Mögliche Fehler können z.B. SELinux Fehler sein, da die Datendateien mit Version 3.6 etwas anders behandel werden. Bei Docker aktualisieren sich die Binärdateien automatisch mit "mongodb:latest".
Schritt Drei
Läuft die neue MongoDB Version sauber hoch und hat man das FeatureSet in einer Testumgebung getestet, kann man nun auf die neuen Features umschalten. Denn aktuell läuft die MongoDB noch in einer Art Kompatibilitätsmodus und hat weiterhin nur die Features der 3.4 Version.
Mit folgendem Befehl in der MongoDB Intellishell kann man das nun ändern:
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
Sollte jetzt ein Fehler kommen, müsst ihr den Fehler im MongoDB Log suchen. Das ist recht ausführlich. Man kann den Befehlt auch mehrfach eingeben, sollte es beim erstem Mal nicht funktionieren.
Ist die Umstellung erfolgreich, sollte die Shell folgendes melden: "featureCompatibilityVersion": "3.6".
Nun läuft die MongoDB mit den neuen Feature der 3.6 Version.
Eine detaillierte Übersicht der Änderungen und des Upgrades in Englisch findet ihr hier:
https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/
Auch Heise hat einen guten Beitrag zu den neuen Features geschrieben:
https://www.heise.de/developer/meldung/MongoDB-3-6-bringt-mehr-Flexibili ...
Gruß
Frank
Please also mark the comments that contributed to the solution of the article
Content-ID: 361148
Url: https://administrator.de/contentid/361148
Printed on: December 10, 2024 at 15:12 o'clock