On-Prem: Backup Guide

Hier findet ihr alle Informationen rund um das Thema "Backup" für die On-Premises Version.  

Ein Backup erstellen

In eurer .env Datei findet ihr den Parameter BACKUP_CRON. Mit einem Cron-Pattern könnt ihr dort einstellen, wann das automatische Backup ausgeführt werden soll. Im Standard wird das Backup täglich um 03:30 Uhr (Server-Zeit) gestartet.

Erstellen eines manuellen Backup

Unseren Backup Service könnt ihr via einer REST API über den Port 8083 ansprechen. Es empfiehlt sich, dafür Tools wie Postman zu nutzen, um die Abfragen einfacherer verwalten zu können. Nachfolgend findet ihr die Aufrufe mit CURL, die ihr direkt auf dem Haiilo Host ausführen könnt.
 
curl -u '<COYO_MANAGEMENT_USER>':'<COYO_MANAGEMENT_PASSWORD>' \
-X "PUT" https://<COYO_BACKEND_URL>:8083/api/backups

Backup Status

curl -u '<COYO_MANAGEMENT_USER>':'<COYO_MANAGEMENT_PASSWORD>' \
-x "GET" https://<COYO_BACKEND_URL>:8083/api/backups
Hinweis: 
Hier seht ihr auch das letzte Ausführungsdatum (<BACKUP_CREATION_DATETIME>)

Wiederherstellen aus einem beliebigem Backup

Um ein Backup einzuspielen ist es wichtig, alle Container außer coyo-db, coyo-mongo, coyo-backup, coyo-lb und coyo-s3 (ab Version 35) zu stoppen. Am einfachsten und saubersten ist dies, indem ihr zuerst alle Haiilo Container auf dem Haiilo Host herunterfahrt. Führt dazu unser stop Skript im Haiilo Home Verzeichnis aus:
./stop.sh
Danach startet ihr die oben genannten Container:
docker-compose -f docker-compose.yml up -d \
--no-deps --remove-orphans \
    coyo-db \
    coyo-mongo \
    coyo-backup \
    coyo-lb \
coyo-s3
Nun starten alle Container die für ein Backup online sein müssen und ihr könnt den Backup Restore starten. 
Beispiel für das Starten mit CURL:
curl -u '<COYO_MANAGEMENT_USER>':'<COYO_MANAGEMENT_PASSWORD>' \
-X "PUT" https://<COYO_BACKEND_URL>:8083/api/backups/restore?ref=<BACKUP_CREATION_DATETIME>
Hinweis: 
Das Format von <BACKUP_CREATION_DATETIME> muss wie folgt sein "YYYY-MM-DDTHH:MM:SS" (bzw. "2019-02-18T08:35:29")
 
Wenn ihr ein älteres Backup wiederherstellen möchtet, dann könnt ihr auf dem Haiilo Host in das Verzeichnis <COYO_DATA_STORAGE>/backup/database schauen. Die Ordnernamen dort enthalten das Backup Creation Datetime im Format YYYYMMDD_HHMMSS. Dieses Format muss noch wie oben beschrieben angepasst werden.
 
So könnte das database Verzeichnis bspw. aussehen:
root@coyo-host:/home/coyo cd coyo-data/backup/database/
root@coyo-host:/home/coyo/coyo-data/backup/database ll
total 424
drwxr-xr-x 105 root root 4096 Oct 26 12:42 ./
drwxr-xr-x   5 root root 4096 Jul  6 03:30 ../
drwxr-xr-x   2 root root 4096 Jul  6 03:30 20180706_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul  7 03:30 20180707_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul  8 03:30 20180708_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul  9 03:30 20180709_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 11 03:30 20180711_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 12 03:30 20180712_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 13 03:30 20180713_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 14 03:30 20180714_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 15 03:30 20180715_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 16 03:30 20180716_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 17 03:30 20180717_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 18 03:30 20180718_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 19 03:30 20180719_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 20 03:30 20180720_033000_coyo/
drwxr-xr-x   2 root root 4096 Jul 21 03:30 20180721_033000_coyo/

Hinweis: 

Wenn ihr im Zuge eines Updates, auf eine frühere Haiilo-Version zurück gehen müsst, beispielsweise weil es ein Problem mit dem Update gab, beachtet bitte, dass die Container-Versionen auf Stand der vorherigen Haiilo-Version verwendet werden müssen. 

Die Wiederherstellungsdauer hängt vom Datenbestand ab. Als Beispiel: Das Wiederherstellen des Backups (Database + File Store) von etwa 80GB dauert ca. eine Stunde.

Zusätzlich müssen nach einem Backup restore alle Indizes aktualisiert werden.

Backup Log

Um den Status des Restores zu überwachen, könnt ihr entweder in Kibana oder direkt auf dem Haiilo Host das Backup Log beobachten. 
Zu finden ist dies unter <COYO_DATA_STORAGE>/backup/logs/coyo-backup.log. Wenn der Restore erfolgreich durchgelaufen ist, könnt ihr mit dem Stop-Skript wieder alle Container herunterfahren und mit dem Start-Skript alle Container wieder hochfahren. Achtet bitte drauf, dass der Restore zur Haiilo Version passen sollte. Andernfalls wird der Restore beim Start vom Backend ggf. auf die neue Version migriert oder es kann, wenn ihr eine ältere Version gestartet habt, zu Fehlern kommen.
 
Nachdem ein Backup eingespielt wurde, müssen alle Indizes aktualisiert werden um den Stand der Datenbank nach ElasticSearch zu synchronisieren. Wenn dies nicht der Fall ist, kann es zu Fehlern und Fehlverhalten kommen. Um die Indizes zu aktualisieren führt folgende API Calls aus:
curl -u '<COYO_MANAGEMENT_USER>':'<COYO_MANAGEMENT_PASSWORD>' \
-X POST https://<COYO_BACKEND_URL>/manage/backend/index/refresh \
-H 'Content-Type: application/json' \
-d '{}'
 
Um zu sehen ob das Re-Indexen abgeschlossen ist, könnt ihr den Status des Neuladens überprüfen:
curl -u '<COYO_MANAGEMENT_USER>':'<COYO_MANAGEMENT_PASSWORD>' \
-X GET https://<COYO_BACKEND_URL>/manage/backend/index/status

Deaktivieren eines Backups

Ja, es ist technisch möglich das Backup auszuschalten. Wir raten von einer kompletten Deaktivierung des Backups ab, da es im Falle eines Hardwareausfalls eures Servers bzw. des Servers eures Hosting-Anbieters dann keine Möglichkeit gibt, eure aktuellen Daten wiederherzustellen! 
Hierzu könnt ihr einfach den Haiilo-Backup Container von dem Start-Skript aus kommentieren.

Alte Backups löschen

In dem Verzeichnis coyo-data/backup/database liegt pro Tag ein Full Dump. Die entsprechenden Tage können nach Belieben entfernt werden, falls ihr das möchtet.
Hinweis: 
Bitte löscht aber nichts, was in dem Verzeichnis coyo-data/backup/filestore liegt!

War dieser Beitrag hilfreich?