# Wie aktualisiere ich die Enginsight Datenbank von MongoDB 5.0 auf MongoDB 8.0?

Enginsight nutzt MongoDB als Datenbank. Im Folgenden zeigen wir dir, welche Schritte du vornehmen musst, um MongoDB zu aktualisieren.&#x20;

Bitte beachte, dass die Aktualisierung von MongoDB 5.0 auf MongoDB 8.0 auch ein Update der Debian-Version des Datenbankservers von Debian 11 auf 12 erfordert.

***

## Deinstallation von MongoDB 5.0

{% stepper %}
{% step %}

### Enginsight Applikationsserver stoppen

{% hint style="danger" %}
**Bitte beachte**: Dieser Schritt ist vor allen Änderungen an der Datenbank *zwingend notwendig*!
{% endhint %}

1. Logge dich auf dem Enginsight Applikationsserver ein und navigiere mit folgendem Befehl in das Enginsight Installationsverzeichnis:

```
cd /opt/enginsight/enterprise
```

2. Stoppe nun den Applikationsserver mit folgendem Befehl:

```
sudo docker-compose down
```

{% endstep %}

{% step %}

### MongoDB-Konfiguration sichern

{% hint style="danger" %}
**Bitte beachte**: Dieser Schritt ist vor der Aktualisierung von MongoDB *zwingend notwendig*, da während des Updates die Datenbank-Konfiguration unter `/etc/mongod.conf` gelöscht wird!
{% endhint %}

1. Logge dich auf dem Datenbankserver ein.
2. Lass dir mit folgendem Befehl die MongoDB-Konfigurationsdatei `mongod.conf` anzeigen:

```
sudo cat /etc/mongod.conf
```

3. Erstelle eine Sicherheitskopie der Datei und speichere diese an einem sicheren Ort deiner Wahl.
   {% endstep %}

{% step %}

### Datenbank-Backup erstellen

{% hint style="danger" %}
**Bitte beachte**: Dieser Schritt ist vor der Aktualisierung von MongoDB *zwingend notwendig*!
{% endhint %}

Führe nun das Datenbank-Backup, einen sogenannten Mongo-Dump, aus.

{% hint style="warning" %}
**Bitte beachte**: Die benötigten Befehle für einen Mongo-Dump können variieren, z.B., wenn deine Datenbank per SSL/TLS verschlüsselt ist.
{% endhint %}

{% hint style="success" icon="lightbulb-exclamation" %}
Mehr Informationen, welche Varianten es für einen Mongo-Dump gibt, findest du in der Knowledge Base: [Wie erstelle ich ein Backup meiner Enginsight Instanz?](/docs/knowledge-base/datenbank/wie-erstelle-ich-ein-backup-meiner-enginsight-instanz.md)
{% endhint %}
{% endstep %}

{% step %}

### MongoDB 5.0 deinstallieren

1. Deinstalliere mit folgenden Befehlen die veraltete Version von MongoDB:

```
sudo systemctl stop mongod
sudo apt remove mongodb-org
sudo apt autoremove
```

2. Lösche Datenbanküberreste mit folgendem Befehl:

```
sudo rm -rf /var/lib/mongodb
```

{% endstep %}

{% step %}

### Debian auf dem Datenbankserver aktualisieren

1. Führe nun die Aktualisierung von Debian 11 auf Debian 12 auf dem Datenbankserver durch. Dabei wird das MongoDB-Repository automatisch auf Version 8.0 aktualisiert. Nutze hierfür das Update Skript aus folgendem Artikel in der Knowledge Base: [Wie aktualisiere ich meine Enginsight Server von Debian 11 auf Debian 12?](https://app.gitbook.com/o/-LTMe1v-4K6py3ggoxhv/s/m7kFsCWkwO5xnjJ7eSF0/updates/wie-aktualisiere-ich-meine-enginsight-server-von-debian-11-auf-debian-12)
2. Starte den Datenbankserver mit folgendem Befehl neu:

```
sudo systemctl reboot
```

{% hint style="danger" %}
**Bitte beachte**: Ein Neustart des Datenbankservers ist nach der Ausführung des Update-Skripts *zwingend erforderlich*!
{% endhint %}
{% endstep %}
{% endstepper %}

***

## Neuinstallation und Einrichtung von MongoDB 8.0

{% stepper %}
{% step %}

### MongoDB neu installieren

Installiere MongoDB nach dem Neustart des Datenbankservers mit folgendem Befehl neu:

```
sudo apt install mongodb-org
```

{% endstep %}

{% step %}

### MongoDB-Konfigurationsdatei wiederherstellen und anpassen

1. Öffne mit folgendem Befehl die MongoDB-Konfigurationsdatei `mongod.conf`:

```
sudo nano /etc/mongod.conf
```

2. Füge die Sicherheitskopie ein, um die ursprüngliche Datenbank-Konfiguration wiederherzustellen.
3. Navigiere zum Abschnitt `storage`. Dieser sah bisher so aus:

<pre><code># Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
<strong>  journal:
</strong><strong>    enabled: true
</strong>#  engine:
#  mmapv1:
#  wiredTiger:
</code></pre>

4. Entferne den Parameter `journal` mitsamt seiner Unteroptionen, da dieser nicht mehr unterstützt wird. \
   \
   Navigiere dazu zu den entsprechenden Zeilen und nutze **Strg + k**, um die Zeilen jeweils zu löschen:

```
# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
#  engine:
#  mmapv1:
#  wiredTiger:
```

5. Navigiere zum Abschnitt `security`, falls dieser vorhanden ist, und kommentiere ihn mitsamt seiner Unteroptionen aus, indem du vor jede Zeile ein Raute-Zeichen **#** setzt.
6. Speichere die Änderungen in der Konfigurationsdatei (Strg+o) und bestätige den Speicherprozess. Schließe die Datei (Strg+x).
7. Starte den Datenbank-Service mit folgendem Befehl neu:

```
sudo systemctl enable --now mongod
```

{% endstep %}

{% step %}

### Replica-Set einrichten

Die Befehle für die Einrichtung des Replica-Sets unterscheiden sich je nachdem, ob du eine SSL/TLS-Verschlüsselung nutzt oder nicht.

**Einrichtung des Replica-Sets ohne SSL/TLS-Verschlüsselung**

<pre><code>mongosh 
<strong>    --host "&#x3C;IPAdresseDatenbankserver>:27017" \
</strong>		--eval "rs.initiate({
	    _id: \"rs0\", 
	    members: [{
	      _id: 0,
<strong>	      host: \"&#x3C;IPAdresseDatenbankserver>:27017\"
</strong>	    }]
	})"
</code></pre>

{% hint style="info" %}
Vergiss dabei nicht, `<IPAdresseDatenbankserver>` entsprechend zu ersetzen.
{% endhint %}

**Einrichtung des Replica-Sets mit SSL/TLS-Verschlüsselung**

<pre><code>mongosh 
		--host "&#x3C;IPAdresseDatenbankserver>:27017" 
<strong>		--tls 
</strong><strong>		--tlsCAFile /etc/enginsight/ssl/mongodbCA.crt 
</strong><strong>		--tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem \
</strong>		--eval "rs.initiate({
	    _id: \"rs0\", 
	    members: [{
	      _id: 0,
	      host: \"&#x3C;IPAdresseDatenbankserver>:27017\"
	    }]
	})"
</code></pre>

{% hint style="info" %}
Vergiss dabei nicht, `<IPAdresseDatenbankserver>` entsprechend zu ersetzen.
{% endhint %}
{% endstep %}

{% step %}

### Datenbank-Benutzer wiederherstellen

{% hint style="warning" %}
**Bitte beachte**: Dieser Schritt ist nur notwendig, wenn du auch zuvor Benutzer für die Datenbank konfiguriert hattest.
{% endhint %}

Die Befehle für die Wiederherstellung der Datenbank-Benutzer `mongoAdminUser` und `mongoDefaultUser` unterscheiden sich je nachdem, ob du eine SSL/TLS-Verschlüsselung nutzt oder nicht.

**Wiederherstellung der Datenbank-Benutzer** **ohne SSL/TLS-Verschlüsselung**

<pre><code>mongosh 
<strong>		--host "&#x3C;IPAdresseDatenbankserver>:27017" \
</strong>		--eval "db.createUser({user:'mongoAdminUser',pwd:\"$(&#x3C;/etc/enginsight/mongoAdminUserPassword)\",roles:['userAdminAnyDatabase','clusterMonitor']})" admin
mongosh 
<strong>		--host "&#x3C;IPAdresseDatenbankserver>:27017" \
</strong>		--eval "db.createUser({user:'mongoDefaultUser',pwd:\"$(&#x3C;/etc/enginsight/mongoDefaultUserPassword)\",roles:[{role:'readWrite',db:'enginsight'}]})" enginsight
</code></pre>

{% hint style="info" %}
Vergiss dabei nicht, `<IPAdresseDatenbankserver>` entsprechend zu ersetzen.
{% endhint %}

**Wiederherstellung der Datenbank-Benutzer** **mit SSL/TLS-Verschlüsselung**

<pre><code>mongosh 
		--host "&#x3C;IPAdresseDatenbankserver>:27017" 
<strong>		--tls 
</strong><strong>		--tlsCAFile /etc/enginsight/ssl/mongodbCA.crt 
</strong><strong>		--tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem \
</strong>		--eval "db.createUser({user:'mongoAdminUser',pwd:\"$(&#x3C;/etc/enginsight/mongoAdminUserPassword)\",roles:['userAdminAnyDatabase','clusterMonitor']})" admin
mongosh 
		--host "&#x3C;IPAdresseDatenbankserver>:27017" 
		--tls 
		--tlsCAFile /etc/enginsight/ssl/mongodbCA.crt 
		--tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem \
		--eval "db.createUser({user:'mongoDefaultUser',pwd:\"$(&#x3C;/etc/enginsight/mongoDefaultUserPassword)\",roles:[{role:'readWrite',db:'enginsight'}]})" enginsight
</code></pre>

{% hint style="info" %}
Vergiss dabei nicht, `<IPAdresseDatenbankserver>` entsprechend zu ersetzen.
{% endhint %}
{% endstep %}

{% step %}

### Optional: MongoDB-Konfigurationsdatei erneut anpassen

{% hint style="warning" %}
**Bitte beachte**: Dieser Schritt muss nur vorgenommen werden, wenn du zuvor den Abschnitt `security` auskommentiert hast.
{% endhint %}

1. Öffne mit folgendem Befehl die MongoDB-Konfigurationsdatei `mongod.conf`:

```
sudo nano /etc/mongod.conf
```

2. Navigiere zum Abschnitt `security`, falls du diesen zuvor auskommentiert hast, und kommentiere ihn mitsamt seiner Unteroptionen wieder ein, indem du vor den entsprechenden Zeilen das Raute-Zeichen **#** wieder entfernst.
3. Speichere die Änderungen in der Konfigurationsdatei (Strg+o) und bestätige den Speicherprozess. Schließe die Datei (Strg+x).
4. Starte MongoDB mit folgendem Befehl neu:

```
sudo systemctl restart mongod
```

{% endstep %}

{% step %}

### Datenbank-Backup wiederherstellen

Stelle nun dein Datenbank-Backup wieder her.

{% hint style="warning" %}
**Bitte beachte**: Die benötigten Befehle für die Wiederherstellung eines Mongo-Dumps können variieren, z.B., wenn deine Datenbank per SSL/TLS verschlüsselt ist. Du findest alle Varianten hier: [Wie erstelle ich ein Backup meiner Enginsight Instanz?](/docs/knowledge-base/datenbank/wie-erstelle-ich-ein-backup-meiner-enginsight-instanz.md)
{% endhint %}
{% endstep %}

{% step %}

### Applikationsserver wieder starten

Nun kannst du den Applikationsserver mit allen Diensten wieder starten.

1. Logge dich auf dem Applikationsserver ein.
2. Navigiere mit folgendem Befehl ins Enginsight Installationsverzeichnis:

```
cd /opt/enginsight/enterprise
```

3. Führe mit folgendem Befehl das Setup-Skript für den Applikationsserver neu aus und bestätige alle Abfragen mit der **Enter**-Taste:

```
sudo ./setup.sh
```

{% endstep %}
{% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.enginsight.com/docs/knowledge-base/datenbank/wie-aktualisiere-ich-die-enginsight-datenbank-von-mongodb-5.0-auf-mongodb-8.0.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
