Upgrade der Datenbank

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:

1. Backup der MongoDB-Konfiguration
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.

2. Erstellung eines Datenbank-Dumps
     Grundlegender Befehl:
mongodump --host "rs0/<ipDerDBsoWieSieVonDerApiVerwendetWird>:27017" --db enginsight
     a. Mit RBAC (Nutzername/Passwort)
          Fügen Sie folgende Parameter hinzu:
--username mongoDefaultUser --password $(</etc/enginsight/mongoDefaultUserPassword) --authenticationDatabase "enginsight"
     b. Mit TLS
          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.

3. Deinstallation von MongoDB 5 
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.

 4. Löschen von Datenbanküberresten
     
rm -rf /var/lib/mongodb
5. Upgrade des Debian-Systems Führen Sie das Upgrade mit dem hier aufgeführten               Plugin durch. Dabei wird das MongoDB-Repository automatisch auf Version 8.0 aktualisiert.       Ein Neustart des Systems ist zwingend erforderlich.
6. MongoDB-Neuinstallation
      Nach erfolgtem Systemneustart:
     
apt install mongodb-org
7. MongoDB-Einrichtung
     a. Wiederherstellung der Konfiguration
           Spielen Sie das Backup der Datei
/etc/mongod.conf jetzt wieder ein.
     b. Aktualisierung der Konfigurationssyntax
           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:
           Der Schlüssel 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:
     c. Temporäres Deaktivieren der Authentifizierung 
           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:!
      d. Starten der Mongo DB
           
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\"
}]
})"
                              I. Mit TLS

                                  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
                                 I. Mit TLS

                                     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

8. Einspielen des Dumps
     Grundlegender Befehl:
mongorestore --host "rs0/<ipDerDBsoWieSieVonDerApiVerwendetWird>:27017"
     a. Mit RBAC (Nutzername/Passwort)

           Fügen Sie diese Parameter hinzu:

--username mongoDefaultUser --password $(</etc/enginsight/mongoDefaultUserPassword) --authenticationDatabase "enginsight"
     b. Mit TLS

           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