Skip to content

OTOBO / Znuny - Sicherung und Wiederherstellung - Backup

Überlegungen zum Betrieb von OTOBO

Die Standard-Skripte backup.pl und restore.pl können auch mit OTOBO unter Docker verwendet werden. Jedoch müssen einige docker-spezifische Einschränkungen bedacht werden.

Zunächst müssen wir sicherstellen, dass die Sicherungsdateien nicht im Dateisystem erstellt werden, das intern zu einem Docker-Container gehört. Denn in diesem Fall würden die erstellten Dateien verloren gehen, wenn der Container gestoppt wird. Das bedeutet, dass das Sicherungsverzeichnis sich innerhalb eines Volumes befinden muss. In diesem Handbuch betrachten wir nur den einfachsten Fall, in dem das Sicherungsverzeichnis ein lokales Verzeichnis auf dem Docker-Host ist. Der Standort des Sicherungsverzeichnisses im Container kann frei gewählt werden. In diesem Beispiel wählen wir das lokale Verzeichnis otobo_backup als Standort auf dem Host und /otobo_backup als Standort im Container.

Zweitens laufen Befehle im Docker-Container üblicherweise als der Benutzer otobo mit der Benutzer-ID 1000 und der Gruppen-ID 1000. Es muss sichergestellt werden, dass dieser Benutzer im Sicherungsverzeichnis schreiben kann.

Zuerst müssen wir das Volume erstellen.

  1. Erstellen des Sicherungsverzeichnisses auf dem Host
    bash
    mkdir otobo_backup
  2. Das Sicherungsverzeichnis dem Benutzer otobo zuweisen, erhöhte Privilegien könnten dafür benötigt werden.
    bash
    chown 1000:1000 otobo_backup
  3. Das Docker-Volume erstellen
    bash
    docker volume create --name otobo_backup --opt type=none --opt device=$PWD/otobo_backup --opt o=bind
  4. Inspektion des Volumes aus Neugier
    bash
    docker volume inspect otobo_backup
  5. Erstellen einer Sicherung
    bash
    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
  6. Überprüfen der Sicherungsdatei
    bash
    tree otobo_backup

INFO

--extra-dump-options="--single-transaction" verhindert, dass die Datenbanktabellen gesperrt werden, sodass OTOBO während der Sicherung weiterhin verwendet werden kann.

INFO

Um die Datenbank wiederherzustellen, stellen Sie sicher, dass die Datenbank otobo existiert und keine Tabellen enthält.

Um eine vorhandene otobo-Datenbank zu löschen und eine neue zu erstellen, können Sie die folgenden Befehle verwenden. Zuerst müssen Sie sich mit dem MySQL-CLI des db Containers verbinden.

bash
cd /opt/otobo-docker
docker-compose exec db bash
mysql -u root -p${MYSQL_ROOT_PASSWORD}

Sobald Sie mit dem MySQL-Server verbunden sind, können Sie die otobo Datenbank löschen und neu erstellen.

bash
DROP DATABASE otobo;
CREATE DATABASE otobo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON otobo.* TO 'otobo'@'%';

Für die Wiederherstellung der Sicherung müssen wir auch angeben, welche Sicherung wiederhergestellt werden soll. Der Platzhalter <TIMESTAMP> ist etwas wie 2024-09-07_09-38.

bash
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>