Zum Betrieb von TTS trax ist die Erstellung von Backups zwingend notwendig. Für kleinere Installationen mit einer geringen Nutzung ist es ausreichend, die virtuelle Maschine, auf der TTS trax betrieben wird, mit den entsprechenden Werkzeugen zu sichern.
Für größere Installationen kann der folgende Ansatz genutzt werden, um die notwendigen Daten zu sichern.
Um ein vollständiges Backup zu erstellen, müssen sowohl
provisioning
, als auchstorage
gesichert werden.Zur Erstellung der Datenbank-Backups muss zunächst ein Verzeichnis in den Datenbank-Container gebunden werden, in das die Datenbank-Backups gespeichert werden.
Erstellen Sie dazu in dem Verzeichnis, in dem die docker-compose.yml
-Datei liegt, ein backups
-Verzeichnis:
$ mkdir -p backups
Dieses Verzeichnis muss in der Datei docker-compose.yml
als Volume-Mount konfiguriert werden:
# docker-compose.yml
services:
# ...
database:
image: mariadb:10.3
command: ...
restart: always
environment:
- MYSQL_ROOT_PASSWORD=${DB_SETUP_PASSWORD}
- MYSQL_DATABASE=${DB_DATABASE}
- MYSQL_USER=${DB_USERNAME}
- MYSQL_PASSWORD=${DB_PASSWORD}
volumes:
- mariadb-data:/var/lib/mysql
- ./seed:/docker-entrypoint-initdb.d:ro
- ./database/keys.enc:/etc/mysql/keys.enc:ro
- ./database/keys.key:/etc/mysql/keys.key
- ./backups:/backups # Diese Zeile hinzufügen
# ...
Sichern Sie die Datenbankschlüssel, die im Verzeichnis database
hinterlegt wurden, im Idealfall an anderer Stelle
als die Datenbackups. Diese können auch von einer regelmäßigen Sicherung ausgenommen werden, da diese sich im normalen
Betrieb nicht ändern, und manuell gesichert werden.
Ähnlich verhält es sich mit der .env
-Datei. Diese ändert sich im laufenden Betrieb nicht, sondern lediglich, wenn im
Rahmen eines Updates Änderungen an dieser Datei vorgenommen werden müssen.
Hier ist auch eine manuelle Sicherung ausreichend.
Die folgenden Schritte sind immer auszuführen, um ein neues Backup zu erstellen. Diese Schritte können in einem Skript zusammengefasst werden und
Um ein Backup der Datenbank zu erstellen, muss der folgende Befehl ausgeführt werden:
$ docker-compose exec database sh -c 'exec mariabackup --backup --target-dir=/backups/$(date +"%Y_%m_%d") --user=root --password="$MYSQL_ROOT_PASSWORD"'
Dieser Befehl erstellt im oben erstellten backups
-Verzeichnis einen neuen Ordner, der nach dem aktuellen Datum benannt ist.
Dieser Ordner enthält den aktuellen Stand des gesamten Datenbanksystems, d.h. die Daten aller Mandanten.
Durch die Verwendung des Tools mariabackup
ist sichergestellt, dass die Integrität dieser Daten gewährleistet ist.
provisioning
-OrdnersDer provisioning
-Ordner muss komplett gesichert werden. Mit dem folgenden Befehl kann z.B. ein tar-Archiv dieses
Ordners in dem backups
-Verzeichnis erstellt werden, dabei ist $PATH_TO_DEPLOYMENT
durch den auf dem System benötigten
Pfad zum Ordner, in dem die docker-compose.yml
liegt, zu ersetzen:
# cd $PATH_TO_DEPLOYMENT
# tar cf ./backups/$(date +"%Y_%m_%d")_provisioning.tar ./provisioning
storage
-OrdnersZur Sicherung des storage
-Ordners kann dasselbe Verfahren gewählt werden wie zur Sicherung des provisioning
-Ordners:
# cd $PATH_TO_DEPLOYMENT
# tar cf ./backups/$(date +"%Y_%m_%d")_storage.tar ./storage
Zur Sicherung dieser Dateien können root-Rechte nötig sein, da die Berechtigungen auf einigen Dateien in diesem Verzeichnis stark eingeschränkt sind.
Übertragen Sie die in den vorherigen drei Schritten erzeugten Dateien an einen sicheren Ablageort für Backups.
Sollte eine Wiederherstellung in die aktuelle verfügbare Version von TTS trax nicht möglich sein, ist es hilfreich, die verwendete trax-Version als Teil des Backup-Prozesses zu speichern. Diese kann mit folgendem Befehl in eine Textdatei gesichert werden:
$ docker-compose exec trax php artisan trax:version > ./backups/$(date +"%Y_%m_%d")_version.txt
Installieren Sie zunächst trax neu auf Basis der Installationsanleitung.
Um eine Wiederherstellung in eine bestimmte trax-Version vorzunehmen, ersetzen Sie in der Datei docker-compose.yml
in der Zeile image: registry.tts-trax.com/trax:TRAXVERSION
die anstelle von TRAXVERSION
notierte Versionsnummer durch die im Backup gespeicherte Versionsnummer.
Achten Sie darauf, dass das backups
-Verzeichnis erneut in der docker-compose.yml
-Datei zu hinterlegen und auch anzulegen.
Kopieren Sie die drei Backup-Artefakte (Datenbankbackup und Sicherung des provisioning
und storage
-Verzeichnisses) aus den vorherigen Schritten in diesen Ordner.
Beenden Sie nach der Installation das trax-System:
$ docker-compose down
Für die folgenden Schritte ist es zwingend notwendig, dass die trax-Installation mit dem obigen Befehl beendet wurde!
provisioning
und des storage
-VerzeichnissesZur Wiederherstellung dieser beiden Verzeichnisse müssen die entsprechenden Archive entpackt werden. Ersetzen Sie in den folgenden Befehlen den Wert der Variable RECOVERY_DATE durch das entsprechende Wiederherstellungsdatum.
Um die Dateien mit den korrekten Berechtigungen wiederherzustellen, muss das Kommando mit root-Rechten ausgeführt werden!
# RECOVERY_DATE=2022_03_13
# cd $PATH_TO_NEW_DEPLOYMENT
# tar xvf backups/$RECOVERY_DATE_provisioning.tar ./provisioning
# tar xvf backups/$RECOVERY_DATE_storage.tar ./storage
Überschreiben Sie die im Rahmen der Installation erzeugten Schlüssel und die Umgebungsvariablen-Datei .env
aus dem entsprechendem Backup.
Zum Wiederherstellen des Backups muss zunächst ein sogenannter prepare-Schritt ausgeführt werden. Führen Sie dazu den folgenden Befehl aus,
achten Sie dabei darauf, dass in der Variablen $RECOVERY_DATE
erneut das korrekte Datum steht:
$ docker-compose run --rm database mariabackup --prepare --target-dir=/backups/$RECOVERY_DATE
Nun muss das Datenbank-Volume wiederhergestellt werden. Führen Sie dazu zunächst den Befehl docker volume ls
aus.
Suchen Sie in der Ausgabe des Befehls nach dem Volume, dessen Name auf mariadb-data
endet, im Falle des Beispiels
ist dies deployment_mariadb-data
:
$ docker volume ls
DRIVER VOLUME NAME
local deployment_mariadb-data
local deployment_redis
Dieses Volume, das bei der Neuinstallation von trax angelegt wurde, muss nun gelöscht werden:
$ docker volume rm deployment_mariadb-data
Nun können die Datenbankdateien wiederhergestellt werden. Dabei wird automatisch ein neues Volume mit demselben Namen angelegt:
$ docker-compose run --rm database mariabackup --copy-back --target-dir=/backups/$RECOVERY_DATE
Die Wiederherstellung ist damit abgeschlossen. Sie können trax nun mit dem folgenden Befehl starten:
$ docker-compose up -d
trax sollte nun mit dem Datenbestand des Backups starten. Überprüfen Sie im Zweifel die Log-Ausgabe auf etwaige Fehlermeldungen:
$ docker-compose logs -f trax
Wenn Sie das Backup aus einer älteren Version von trax wiederherstellen als der Version, die sie frisch installiert haben, werden beim ersten Start unter Umständen einige Migrationen ausgeführt, weshalb der Start einige Zeit dauern kann.