# 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 *Mongo-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 Mongo-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.

<pre><code>mongodump 
<strong>    --host "rs0/&#x3C;IPAdresseDatenbankserver>:27017"
</strong>    --username "mongoDefaultUser"
<strong>    --password "&#x3C;PasswortMongoDefaultUser>"
</strong>    --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 entsprechend zu ersetzen:

* `<IPAdresseDatenbankserver>`
* `<PasswortMongoDefaultUser>`
* `<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
    --host "rs0/&#x3C;IPAdresseDatenbankserver>:27017"
    --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 %}

### 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.

<pre><code>mongorestore 
<strong>    --host "rs0/&#x3C;IPAdresseDatenbankserver>:27017"
</strong>    --username "mongoDefaultUser"
<strong>    --password "&#x3C;PasswortMongoDefaultUser>"
</strong>    --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>`
* `<PasswortMongoDefaultUser>`
* `<VerzeichnispfadBackup>`
* `<DatumBackup>` Die Angabe des Datums muss im Format YYYY-MM-DD erfolgen.
  {% endhint %}


---

# 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-erstelle-ich-ein-backup-meiner-enginsight-instanz.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.
