> For the complete documentation index, see [llms.txt](https://docs.enginsight.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enginsight.com/docs/knowledge-base/datenbank/wie-erstelle-ich-ein-backup-meiner-enginsight-instanz.md).

# Wie erstelle ich ein Backup meiner Enginsight Instanz?

Enginsight nutzt MongoDB als Datenbank. Um ein Backup deiner Enginsight-Datenbank zu erstellen, führst du einen sogenannten *MongoDB-Dump* durch. Dazu hast du verschiedene Möglichkeiten, die wir im Folgenden beschreiben.

***

## Ablauf des Backups

{% 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 %}

### Datenbank-Backup erstellen

Logge dich auf dem Datenbankserver ein und führe den MongoDB-Dump-Befehl aus, der für dich relevant ist:

* [Vollständiger Dump mit aktuellem Datum](#vollstandiger-dump-mit-aktuellem-datum)
* [Dump über eine verschlüsselte Verbindung inkl. Authentifizierung](#verschlusselter-dump-uber-ssl-tls)
  {% endstep %}

{% step %}

### Applikationsserver neu starten

1. Navigiere wieder zum Applikationsserver und mit folgendem Befehl in das Enginsight Installationsverzeichnis:

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

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

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

{% endstep %}
{% endstepper %}

***

## Befehle für verschiedene Backup-Arten

Hier findest du die verschiedenen Varianten für ein Backup deiner Enginsight Instanz:

### Vollständiger Dump mit aktuellem Datum

Die folgende Dump-Variante speichert die Datenbank `enginsight` in ein Verzeichnis mit Tagesdatum:

<pre><code>mongodump \
<strong>    --host "rs0/&#x3C;IPAdresseDatenbankserver>:27017" \
</strong>    --db enginsight \
<strong>    --out /&#x3C;VerzeichnispfadBackup>/$(date +%F)
</strong></code></pre>

{% hint style="info" %}
Vergiss dabei nicht, `<IPAdresseDatenbankserver>` mit der entsprechenden IP-Adresse und  `<VerzeichnispfadBackup>` mit dem Dateipfad zu deiner Backup-Datei zu ersetzen. Die Ausgabe des Datums erfolgt im Format YYYY-MM-DD.
{% endhint %}

### Dump über eine verschlüsselte Verbindung inkl. Authentifizierung

Die folgende Dump-Variante speichert die Datenbank `enginsight` in ein Verzeichnis mit Tagesdatum über eine mit SSL/TLS gesicherte Verbindung. Dies ist nötig, wenn für die Datenbank eine SSL/TLS-Verschlüsselung eingerichtet ist. Es erfolgt zudem eine Authentifizierung mit Benutzername und Passwort (Role-Based Access Control; RBAC).

<pre><code>mongodump \
<strong>    --host "rs0/&#x3C;IPAdresseDatenbankserver>:27017" \
</strong>    --username "mongoDefaultUser" \
    --password "$(sudo cat /etc/enginsight/mongoDefaultUserPassword)" \
    --ssl \
    --sslCAFile /etc/enginsight/ssl/mongodbCA.crt \
    --sslPEMKeyFile /etc/enginsight/ssl/mongodb.pem \
    --db enginsight \
<strong>    --out /&#x3C;VerzeichnispfadBackup>/$(date +%F)
</strong></code></pre>

{% hint style="info" %}
Vergiss dabei nicht, die folgenden Platzhalter in `<>` entsprechend zu ersetzen:

* `<IPAdresseDatenbankserver>`
* `<VerzeichnispfadBackup>`
  {% endhint %}

***

## Wiederherstellung eines Backups

{% hint style="danger" %}
**Bitte beachte**: Auch vor der Wiederherstellung eines Mongo-Dumps muss der Enginsight Applikationsserver gestoppt werden!
{% endhint %}

Um ein Backup wiederherzustellen, hast du folgende Möglichkeiten:

### Wiederherstellung ohne verschlüsselte Verbindung

<pre><code>mongorestore \
<strong>    --host "rs0/&#x3C;IPAdresseDatenbankserver>:27017" \
</strong>    --db enginsight \
<strong>    /&#x3C;VerzeichnispfadBackup>/&#x3C;DatumBackup>/enginsight
</strong></code></pre>

{% hint style="info" %}
Vergiss dabei nicht, die folgenden Platzhalter in `<>` entsprechend zu ersetzen:

* `<IPAdresseDatenbankserver>`
* `<VerzeichnispfadBackup>`
* `<DatumBackup>` : Die Angabe des Datums muss im Format YYYY-MM-DD erfolgen.
  {% endhint %}

### Wiederherstellung über eine verschlüsselte Verbindung inkl. Authentifizierung

Diese Variante ist nötig, wenn für die Datenbank eine SSL/TLS-Verschlüsselung eingerichtet ist. Es erfolgt zudem eine Authentifizierung mit Benutzername und Passwort (Role-Based Access Control; RBAC).

<pre><code>mongorestore \
<strong>    --host "rs0/&#x3C;IPAdresseDatenbankserver>:27017" \
</strong>    --username "mongoDefaultUser" \
    --password "$(sudo cat /etc/enginsight/mongoDefaultUserPassword)" \
    --ssl \
    --sslCAFile /etc/enginsight/ssl/mongodbCA.crt \
    --sslPEMKeyFile /etc/enginsight/ssl/mongodb.pem \
    --db enginsight \
<strong>    /&#x3C;VerzeichnispfadBackup>/&#x3C;DatumBackup>/enginsight
</strong></code></pre>

{% hint style="info" %}
Vergiss dabei nicht, die folgenden `<>` Platzhalter entsprechend zu ersetzen:

* `<IPAdresseDatenbankserver>`
* `<VerzeichnispfadBackup>`
* `<DatumBackup>` : Die Angabe des Datums muss im Format YYYY-MM-DD erfolgen.
  {% endhint %}

***
