Backup und Wiederherstellung mit Docker

Bitte lesen Sie die Anleitung Backup und Wiederherstellung Backup und Wiederherstellung. Hier finden Sie die grundlegenden Informationen zu den Backup-Skripten.

Sonderfalll: OTOBO und Docker

Auch für Docker-basierte OTOBO-Umgebungen können die OTOBO-Standardskripte verwendet werden. Beachten Sie jedoch einige Docker-spezifische Besonderheiten.

Erstens: Legen Sie die Backupdateien nicht im internen Dateisystem des Containers ab. Wird der Container gestoppt, sind die Daten dort verloren. Stattdessen empfehlen wir das Backup-Verzeichnis in einem Volume anzulegen. Wir betrachten zunächst nur den einfachsten Fall: Als Backup-Verzeichnis wird ein lokales Verzeichnis auf dem Docker-Host verwendet. Innerhalb des Containers kann das Backup-Verzeichnis an beliebiger Stelle angelegt werden. Für dieses Beispiel verwenden wir das lokale Verzeichnis otobo_backup als Speicherort auf dem Host und /otobo_backup im Container.

Zweitens: Innerhalb des Docker-Containers werden Befehle in der Regel vom User otobo mit der User-ID 1000 und der Gruppen-ID 1000 ausgeführt. Achten Sie darauf, dass dieser User im Backup-Verzeichnis Schreibrechte hat.

Als erstes legen wir das Volume an.

# create the backup directory on the host
docker_admin>mkdir otobo_backup

# give the backup dir to the user otobo, elevated privs might be needed for that
docker_admin>chown 1000:1000 otobo_backup

# create the Docker volume
docker_admin>docker volume create --name otobo_backup --opt type=none --opt device=$PWD/otobo_backup --opt o=bind

# inspect the volume out of curiosity
docker_admin>docker volume inspect otobo_backup

Um das Backup zu erstellen, benötigen wir eine laufende Datenbank und die Volumes otobo_opt_otobo sowie otobo_backup. Das bedeutet, Webserver und OTOBO Daemon können, müssen aber nicht, gestoppt werden.

  # create a backup
  docker_admin>docker run -it --rm --volume otobo_opt_otobo:/opt/otobo --volume otobo_backup:/otobo_backup --network otobo_default rotheross/otobo:latest-10_0 scripts/backup.pl --extra-dump-options="--single-transaction" -d /otobo_backup

  # check the backup file
  docker_admin>tree otobo_backup

.. note::

  --extra-dump-options="--single-transaction" prevents the database tables from being locked, so OTOBO can still be used during the backup.

Bemerkung

Bevor Sie die Datenbank wiederherstellen, stellen Sie sicher, dass die Datenbank ``otobo``vorhanden ist und keine Tabellen enthält.

Um eine bestehende otobo Datenbank zu löschen und eine neue zu erstellen können folgende Befehle verwendet werden. Zuerst müssen Sie sich hierzu mit der MySQL CLI des db Containers verbinden.

Sobald man mit dem MySQL Server verbunden ist, kann die otobo Datenbank gelöscht und neu erstellt werden.

mysql@4f7783595190:/$>DROP DATABASE otobo;
mysql@4f7783595190:/$>CREATE DATABASE otobo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql@4f7783595190:/$>GRANT ALL PRIVILEGES ON otobo.* TO 'otobo'@'%';

Um das System aus einem Backup wiederherstellen zu können, müssen wir angeben, welches Backup verwendet werden soll. Der Platzhalter <TIMESTAMP> steht für einen Wert wie 2020-09-07_09-38.

# restore a backup
docker_admin>docker run -it --rm --volume otobo_opt_otobo:/opt/otobo --volume otobo_backup:/otobo_backup --network otobo_default rotheross/otobo:latest-10_0 scripts/restore.pl -d /opt/otobo -b /otobo_backup/<TIMESTAMP>