Appearance
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.
- Erstellen des Sicherungsverzeichnisses auf dem Hostbash
mkdir otobo_backup
- Das Sicherungsverzeichnis dem Benutzer otobo zuweisen, erhöhte Privilegien könnten dafür benötigt werden.bash
chown 1000:1000 otobo_backup
- Das Docker-Volume erstellenbash
docker volume create --name otobo_backup --opt type=none --opt device=$PWD/otobo_backup --opt o=bind
- Inspektion des Volumes aus Neugierbash
docker volume inspect otobo_backup
- Erstellen einer Sicherungbash
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
- Überprüfen der Sicherungsdateibash
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>