Backup & Wiederherstellung

Datensicherung über den Maintenance-Server

Die Datensicherung erlaubt eine einfache Speicherung und Wiederherstellung einer gesamten Scope-Instanz (inkl. Datenbank und sämtlicher Dateien) direkt aus REWOO Scope heraus.

Damit die Datensicherung funktioniert, muss der Maintenance-Server eingerichtet sein und laufen.

Sicherung erstellen

Aufruf

Um eine Sicherung (sogenannte Snapshots) zu erstellen, loggen Sie sich als Admin-User in REWOO Scope ein. Die Funktion ist dann über das REWOO-Menü verfügbar.

Datensicherung im REWOO Menü
Erstellen

Eine Sicherung der aktuellen Welt erstellen Sie dann durch einen Klick auf Erstellen. Dies erzeugt eine Sicherung (der Vorgang kann mehrere Minuten dauern) und legt sie anschließend auf dem Server unter /home/rewoo/rewoo-admin/storage/<REWOOINSTANZ>/snapshots/ ab. Die abgeschlossene Sicherung wird dann in der Liste aufgeführt.

Datensicherung erstellen

Sicherung wiederherstellen

Eine Sicherung kann anschließend ganz einfach per Mausklick wiederhergestellt werden, indem man sie in der Liste auswählt und anschließend auf Wiederherstellen... klickt. Snapshots können auch, sollten sie sich nicht bereits auf dem Server befinden, einfach über einen Button hochgeladen werden.

Datensicherung über das Admin-Skript

Mit Hilfe unseres Skripts admin.sh kann man auch auf der Kommandozeile ein vollständiges Backup erstellen. Die Datenbank, alle Dateianhänge, die Logs, die ETL-Dateien und die User-Daten werden in ein Archiv gepackt. Dazu führt man folgendes Kommando aus:

/home/rewoo/admin.sh fullbackup
Das Archiv liegt dann im Verzeichnis
/home/rewoo/rewoo-admin/backups

Export und Import von Teilmodellen

Im Admin-Panel können unter dem Punkt Import/Export Teile des Modells oder das gesamte Modell exportiert und importiert werden. Die Typen, Elemente, Ansichten und Werte werden in eine XML-Datei geschrieben und zusammen mit den Dateien in ein zip-Archiv gepackt. Als Dateiendung wird zml verwendet, um diese Archive von anderen zip-Dateien abzugrenzen.

Exportieren

Beim Exportieren wählt der Administrator eine Menge von Objekten und Prozessen aus. Ausgehend von diesen Elementen werden alle damit zusammenhängenden Daten aufgesammelt, d.h. alle Aspekte, Knoten und Beziehungen, die unterhalb dieser Elemente aufgehängt sind, dann alle Typen der eingesammelten Elemente zusammen mit ihren Layouts, dann alle Tabellenansichten, Gantts und Kanban-Tafeln der eingesammelten Aspekttypen. Beziehungen, von denen nur ein Ende in der Exportmenge gelandet ist, werden nicht beachtet. Alle diese Daten werden in eine XML-Datei geschrieben. Wenn die Dateien mit einbezogen werden sollen, werden zusätzlich von allen Elementen die Anhänge aufgesammelt.

Importieren

Der Import vergleicht die vorhandenen Typen mit den zu importierenden. Wenn der Typ vollkommen identisch ist, wird der neue Typ nicht angelegt sondern die Elemente vom zu importierenden Typ auf den vorhandenen Typ gesetzt.

Beim Importieren einer zml-Datei gibt es folgende Möglichkeit, die bestehenden und zu importierenden Daten zu managen:

  • keine neuen Typen - nur Elemente, deren Typ mit einem vorhandenen Typ identisch ist, werden importiert
  • nur Typen - vom Import werden nur die Typen beachtet
  • keine Datenblattwerte - vom Import werden nur Typen und Elemente beachtet, Werte und Dateianhänge werden ignoriert
  • alles als Vorlage - alle Elemente aus dem Import werden im Status Vorlage angelegt
  • alle Typen und Elemente in der Datenbank löschen - vor dem Import werden alle vorhandenen Typen, Elemente, Werte und Dateianhänge gelöscht
  • alle Elemente in der Datenbank löschen - vor dem Import werden alle vorhandenen Elemente, Werte und Dateianhänge gelöscht

Einschränkungen

Folgende Daten werden nicht exportiert und gehen bei diesem Vorgehen verloren:

Debug-Paket erstellen

Im Admin-Panel lässt sich ein Debug-Paket erstellen. Die Funktion dazu findet sich unter Logs und dort den Unterpunkt Paket mit Debuginformationen erstellen. Diese Funktion erstellt lediglich ein Paket mit dem aktuellen Datenbank-Dump, einigen Debuginformationen und die Logfiles.

Diese Funktion eignet sich nur zur Speicherung der Datenbank, aber nicht als Gesamt-Backup, da sämtliche hinterlegte Dokumente, Bilder, etc. nicht gesichert werden.

Manuelles Backup

Soll eine REWOO Scope-Welt mit sämtlichen Daten weggesichert werden, kann das auch händisch oder durch eigene Scripte durchgeführt werden. Relevant sind an dieser Stelle sowohl die Datenbank als auch die hinterlegten Dokumente bzw. weitere wichtige Dateien.

Datenbank sichern

Ein Datenbank-Dump kann über die gängigen PostgreSQL-Befehle gezogen werden. Der Datenbank-User ist in der Regel rewoo und der Datenbankname entspricht dem Instanznamen, meist also rewoodb.

Ein Beispielbefehl zum Erstellen eines Datenbank-Dumps lautet dann:

pg_dump -Z1 -Fc -f rewoodb-yyyy-mm-dd.dump rewoodb

Wenn Sie den Dump in eine andere Version von Postgres einspielen wollen oder ihn länger aufbewahren, sollten Sie keinen Binärdump sondern einen Text-Dump erstellen. Der Befehl zum Erstellen lautet dann:

pg_dump -U rewoo rewoodb | gzip -c > dump-yyyy-mm-dd.gz

Dateien sichern

Zusätzlich zur Datenbank müssen auch andere Dateien gesichert werden. Dazu zählen sämtliche hinterlegte Dokumente und Dateien, Bilder, Previews, User-Salts, Logfiles, etc.

All diese Dateien sind im folgenden Pfad hinterlegt und können durch ein eigenes Skript in regelmäßigen Abständen oder händisch kopiert bzw. archiviert werden.

/home/rewoo/rewoo-admin/storage/<REWOOINSTANZ>

Der Standardwert für REWOOINSTANZ ist rewoo.

Manuelle Wiederherstellung

Um dieses manuelle Backup wiederherzustellen, muss der Datenbank-Dump wieder in PostgreSQL eingebunden werden. In unserem Beispielfall würde das für den Binär-Dump so aussehen:

pg_restore -d rewoodb -Fc -j8 rewoodb-yyyy-mm-dd.dump

Für den Text-Dump geben Sie folgendes ein:

gunzip -c -q dump-yyyy-mm-dd.gz | psql -U rewoo rewoodb

Anschließend müssen lediglich die gesicherten Dateien zurück an ihren jeweiligen Platz im storage-Verzeichnis kopiert werden (evtl. alte Unterverzeichnisse zuvor löschen).