In dieser Anleitung wird Schritt für Schritt beschrieben, wie ein Upgrade der MongoDB-Datenbank durchgeführt wird.
Mongo DB Upgrade
Alle folgenden Ausführungen werden als root
durchgeführt:
Die Konfiguration in
/etc/mongod.conf
wird beim Upgrade gelöscht. Daher muss diese vorher gesichert werden.Die OnPrem-Umgebung muss gestoppt sein, bevor im folgenden der Dump erstellt wird.
Grundlegender Befehl:
mongodump --host "rs0/<ipDerDBsoWieSieVonDerApiVerwendetWird>:27017" --db enginsight
Fügen Sie folgende Parameter hinzu:
--username mongoDefaultUser --password $(</etc/enginsight/mongoDefaultUserPassword) --authenticationDatabase "enginsight"
Fügen Sie folgende Parameter hinzu:
--ssl --sslCAFile /etc/enginsight/ssl/mongodbCA.crt --sslPEMKeyFile /etc/enginsight/ssl/mongodb.pem
Ein vollständiger Dump-Befehl mit einer beispielhaften IP für eine Datenbank ohne TLS und RBAC sieht so aus:
mongodump --host "rs0/192.168.180.38:27017" --db enginsight
Ein vollständiger Dump-Befehl mit einer beispielhaften IP für eine Datenbank mit TLS und RBAC sieht so aus:
mongodump --host "rs0/192.168.180.38:27017" --username mongoDefaultUser --password $(</etc/enginsight/mongoDefaultUserPassword) --authenticationDatabase "enginsight" --ssl --sslCAFile /etc/enginsight/ssl/mongodbCA.crt --sslPEMKeyFile /etc/enginsight/ssl/mongodb.pem --db enginsight
Der Dump befindet sich im Unterordner dump
des gegenwärtigen Arbeitsverzeichnisses. Zusätzliche externe Sicherung wird strengstens empfohlen.
systemctl stop mongod
apt remove mongodb-org
apt autoremove
Beachten Sie zwingend, dass alle Daten ohne Dump verloren gehen bevor Sie den nächsten Schritt starten.
rm -rf /var/lib/mongodb
Nach erfolgtem Systemneustart:
apt install mongodb-org
Spielen Sie das Backup der Datei
/etc/mongod.conf
jetzt wieder ein.Aufgrund einer Änderung in der Konfigurationssyntax ist eine Anpassung erforderlich. Der Abschnitt
storage
sah bisher so aus:# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
journal
wird nicht mehr unterstützt und muss mitsamt Unteroptionen entfernt werden. Der Abschnitt sollte danach so aussehen:# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
# engine:
# mmapv1:
# wiredTiger:
Kommentieren Sie den Abschnitt
security:
in der Datei /etc/mongod.conf
temporär aus, falls dieser vorhanden ist.
Dies betrifft den gesamten Abschnitt inklusive Unterpunkte, also die eingerückten Optionen unter
security:
!systemctl enable --now mongod
e. Einrichtung des Replica-Sets
Grundlegender Befehl:
mongosh --host "<ipDerDBsoWieSieVonDerApiVerwendetWird>:27017" \
--eval "rs.initiate({
_id: \"rs0\",
members: [{
_id: 0,
host: \"<ipDerDBsoWieSieVonDerApiVerwendetWird>:27017\"
}]
})"
Nach dem --host
-Parameter müssen folgende Parameter angefügt werden:
--tls --tlsCAFile /etc/enginsight/ssl/mongodbCA.crt --tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem
Vollständiger Befehl mit beispielhafter IP ohne TLS:
mongosh --host "192.168.180.38:27017" \
--eval "rs.initiate({
_id: \"rs0\",
members: [{
_id: 0,
host: \"192.168.180.38:27017\"
}]
})"
mongosh --host "192.168.180.38:27017" --tls --tlsCAFile /etc/enginsight/ssl/mongodbCA.crt --tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem \
--eval "rs.initiate({
_id: \"rs0\",
members: [{
_id: 0,
host: \"192.168.180.38:27017\"
}]
})"
f. Nutzer wieder herstellen (falls bisher vorhanden) Grundlegende Befehle:
mongosh --host "<ipDerDBsoWieSieVonDerApiVerwendetWird>:27017" \
--eval "db.createUser({user:'mongoAdminUser',pwd:\"$(</etc/enginsight/mongoAdminUserPassword)\",roles:['userAdminAnyDatabase','clusterMonitor']})" admin
mongosh --host "<ipDerDBsoWieSieVonDerApiVerwendetWird>:27017" \
--eval "db.createUser({user:'mongoDefaultUser',pwd:\"$(</etc/enginsight/mongoDefaultUserPassword)\",roles:[{role:'readWrite',db:'enginsight'}]})" enginsight
Nach dem --host
-Parameter müssen folgende Parameter angefügt werden:
--tls --tlsCAFile /etc/enginsight/ssl/mongodbCA.crt --tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem
Vollständige Befehle mit beispielhafter IP ohne TLS:
mongosh --host "192.168.180.38:27017" \
--eval "db.createUser({user:'mongoAdminUser',pwd:\"$(</etc/enginsight/mongoAdminUserPassword)\",roles:['userAdminAnyDatabase','clusterMonitor']})" admin
mongosh --host "192.168.180.38:27017" \
--eval "db.createUser({user:'mongoDefaultUser',pwd:\"$(</etc/enginsight/mongoDefaultUserPassword)\",roles:[{role:'readWrite',db:'enginsight'}]})" enginsight
Vollständige Befehle mit beispielhafter IP mit TLS:
mongosh --host "192.168.180.38:27017" --tls --tlsCAFile /etc/enginsight/ssl/mongodbCA.crt --tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem \
--eval "db.createUser({user:'mongoAdminUser',pwd:\"$(</etc/enginsight/mongoAdminUserPassword)\",roles:['userAdminAnyDatabase','clusterMonitor']})" admin
mongosh --host "192.168.180.38:27017" --tls --tlsCAFile /etc/enginsight/ssl/mongodbCA.crt --tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem \
--eval "db.createUser({user:'mongoDefaultUser',pwd:\"$(</etc/enginsight/mongoDefaultUserPassword)\",roles:[{role:'readWrite',db:'enginsight'}]})" enginsight
g. Reaktivierung der Authentifizierung
Die in Schritt 7.3. auskommentierten Zeilen müssen jetzt wieder einkommentiert werden. Danach muss die MongoDB neu gestartet werden:
systemctl restart mongod
mongorestore --host "rs0/<ipDerDBsoWieSieVonDerApiVerwendetWird>:27017"
Fügen Sie diese Parameter hinzu:
--username mongoDefaultUser --password $(</etc/enginsight/mongoDefaultUserPassword) --authenticationDatabase "enginsight"
Fügen Sie diese Parameter hinzu:
--ssl --sslCAFile /etc/enginsight/ssl/mongodbCA.crt --sslPEMKeyFile /etc/enginsight/ssl/mongodb.pem
Ein vollständiger Dump-Befehl mit einer beispielhaften IP für eine Datenbank ohne TLS und RBAC sieht so aus:
mongorestore --host "rs0/192.168.180.38:27017"
Ein vollständiger Dump-Befehl mit einer beispielhaften IP für eine Datenbank mit TLS und RBAC sieht so aus:
mongorestore --host "rs0/192.168.180.38:27017" --username mongoDefaultUser --password $
Eine Anleitung zum Upgraden Ihrer Komponenten- und App-Server finden Sie hier.