MongoDB Docker Container unter Plesk in die Sicherung einbeziehen

MongoDB Docker Container unter Plesk in die Sicherung einbeziehen

In einem vorherigen Beitrag hatte ich bereits beschrieben wie MongoDB unter Plesk mit einem Docker Container genutzt werden kann. Hierzu hatten wir mehrere Volume mappings unter einem Data Ordner erstellt. Bei der Sicherung mit Plesk kann es ein Problem werden den Inhalt des MongoDB Docker Containers zu sichern. Hierfür möchte ich hier Lösungsvorschläge aufzeigen.

Ich habe für meine Beispieldomain eine neue Domain angelegt mongo.example.com

Zunächst habe ich den container ausgeschaltet und dann alle Dateien in das Verzeichnis meiner neuen Plesk Domain kopiert

 sudo cp -a /data /var/www/vhosts/mongo.example.com/

Danach habe ich das Volume Mapping in Plesk entsprechend angepasst

und meinen Container mit dem Namen mongo wieder gestartet.

Danach habe ich im Plesk File Manager im home directory von mongo.example.com einen neuen Ordner databackup angelegt.

Danach geht es darum die MongoDB Datenbank korrekt zu sicher und dafür sollte der Container am besten ausgeschaltet sein. Die Dateirechte sollten dabei ebenfalls erhalten bleiben. Deshalb habe ich mich dazu entschlossen ein tar Archiv zu verwenden und den Container automatisch zu stoppen und wieder zu starten.

sudo bash -c 'docker stop mongo && TS=$(date +%Y%m%d) && BACKUP="/var/www/vhosts/mongo.licenseplate.ae/databackup/mongo_backup_${TS}.tar.gz" && tar -cvpzf "$BACKUP" -C /var/www/vhosts/mongo.licenseplate.ae data && chown psaadm:psaadm "$BACKUP" && docker start mongo'

Selbstverständlich wäre das als Cronjob in Plesk viel besser aber Plesk stört sich an den Zahlreichen Anführungszeichen.

Deshalb habe ich unter /root/ mit

cd /root/
nano mongobackup.sh

eine neue Datei mit folgendem Inhalt erstellt

#!/bin/bash
docker stop mongo
TS=$(date +%Y%m%d)
BACKUP="/var/www/vhosts/mongo.example.com/databackup/mongo_backup_${TS}.tar.gz"
tar -cvpzf "$BACKUP" -C /var/www/vhosts/mongo.example.com data
chown psaadm:psaadm "$BACKUP"
docker start mongo

und die Datei danach ausführbar gemacht

chmod +x mongobackup.sh

Nun kann im Plesk Aufgabenmanager des Servers einfach ein Cronjob hinzugefügt werden für den Befehl /root/mongobackup.sh

Ich habe eine tägliche Ausführung um 1 Uhr gewählt.

Was passiert nun genau?

Der MongoContainer wird gestoppt. Es werden alle Daten des Docker Containers gesichert als tar-Archiv mit Dateirechten. Damit es keine Probleme gibt wird nachträglich der Besitzer der Datei verändert, damit der Plesk-Backup-Manager auch Zugriff hat. Der MongoContainer wird wieder gestartet. Das Plesk-Backup wird automatisch alle Dateien im home von mongo.example.com sichern (wie bei anderen Domains auch) und somit sind auch die tar-Archive später im Backup vorhanden.

Natürlich muss das data-Verzeichnis nicht unbedingt in das home von mongo.example.com verschoben werden. Das databackup-Verzeichnis sollte aber auf jedem Fall unter einer Domain liegen (damit es automatisch vom Plesk Backup erfasst wird).

Wem das hier alles zu kompliziert wird kann mich gerne zu günstigen Stundensätzen beauftragen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert