Repository-Backup & -Wiederherstellung
OctoMesh bietet umfassende Backup- und Wiederherstellungsfähigkeiten für Repositories über das octo-cli-Werkzeug. Diese
Operationen werden vom Bot-Dienst ausgeführt und gewährleisten Datenintegrität und -verfügbarkeit für Disaster-Recovery-Szenarien.
Repository-Backup
Standardmäßig enthält ein Backup die MongoDB-Repository-Daten des Tenants (Entitäten, Assoziationen und Metadaten) als
komprimiertes *.tar.gz. Mit der Option --include-archive-data erfasst das Backup zusätzlich die
CrateDB-Streamdaten-Archive des Tenants und erzeugt einen größeren *.octobak.zip-Container. Backups werden mit dem Befehl dump
durchgeführt.
Syntax des Backup-Befehls
octo-cli -c dump -tid <tenant-id> -f <output-file> [--include-archive-data]
Parameter
| Parameter | Description | Example |
|---|---|---|
-c dump | Befehl zum Erstellen eines Backups | Erforderlich |
-tid <id> | Zu sichernde Tenant-ID | sbeg, energy-community |
-f <file> | Pfad zur Ausgabedatei. Verwenden Sie *.tar.gz für ein reines MongoDB-Backup oder *.octobak.zip, wenn Archivdaten eingeschlossen werden | ./backup.tar.gz, ./backup.octobak.zip |
-iad, --include-archive-data | Auch die CrateDB-Streamdaten-Archive des Tenants einschließen (erzeugt ein *.octobak.zip). Erfordert aktivierte Streamdaten am Tenant | Optional |
Backup-Beispiel
# MongoDB-only backup of the 'sbeg' tenant
octo-cli -c dump -tid sbeg -f ./sbeg-backup-2025-08-12.tar.gz
# Backup including CrateDB stream-data archives (produces an .octobak.zip)
octo-cli -c dump -tid sbeg -f ./sbeg-backup-2025-08-12.octobak.zip --include-archive-data
Backup-Inhalt
Ein einfaches *.tar.gz-Backup enthält die MongoDB-Repository-Daten:
- Alle Runtime-Entitäten und ihre Attribute
- Assoziationsdaten, die Entitäten verknüpfen
- Construction-Kit-Metadaten
- AutoIncrement-Zustände
- Tenant-Konfiguration und -Einstellungen
- Index-Definitionen und Constraints
Wenn --include-archive-data verwendet wird, ist das Artefakt ein *.octobak.zip, das den MongoDB-Dump sowie die
CrateDB-Streamdaten-Archive des Tenants (eine NDJSON-Datei pro Archiv) und ein Manifest umfasst, das das Schema und die Zeilenanzahl jedes Archivs
beschreibt.
Um die Zeilen eines einzelnen Archivs (statt eines ganzen Tenants) zu exportieren oder zu importieren, verwenden Sie die dedizierten Befehle
ExportArchiveData
und ImportArchiveData.
Siehe den Leitfaden Stream Data archives für die Archivkonzepte.
Repository-Wiederherstellung
Die Repository-Wiederherstellung stellt Tenant-Daten aus Backup-Archiven wieder her. Der Wiederherstellungsprozess behandelt sowohl die Erstellung neuer Tenants als auch das Ersetzen bestehender Tenants.
Syntax des Wiederherstellungsbefehls
octo-cli -c restore -tid <tenant-id> -db <database-name> -f <backup-file> -w [--restore-archive-data]
Parameter
| Parameter | Description | Example |
|---|---|---|
-c restore | Befehl zum Wiederherstellen eines Backups | Erforderlich |
-tid <id> | Ziel-Tenant-ID | sbeg, energy-community |
-db <name> | Name der Zieldatenbank | sbeg, production-db |
-oldDb <name> | Wenn die Datenbank zuvor einen anderen Namen hatte, können Sie mit dieser Option die Wiederherstellung unter einem „neuen" Tenant-Namen ermöglichen | sbeg, production-db |
-f <file> | Pfad zur Backup-Datei. Akzeptiert eine *.tar.gz (nur MongoDB) oder eine *.octobak.zip (MongoDB + Archivdaten) | /path/to/backup.octobak.zip |
-rad, --restore-archive-data | Auch die CrateDB-Streamdaten-Archive aus einer *.octobak.zip wiederherstellen. Bei einer einfachen *.tar.gz wirkungslos | Optional |
-w | Watch-Modus zur Fortschrittsüberwachung | Optional, aber empfohlen |
Wiederherstellungs-Beispiel
# Restore 'sbeg' tenant from backup file
octo-cli -c restore -tid sbeg -db sbeg -f /users/gerald/Downloads/mongodb-backup-sbeg-2025_08_12_03_00.tar.gz -w
Wiederherstellungsverhalten
Die Wiederherstellungsoperation folgt bestimmten Regeln, die davon abhängen, ob der Ziel-Tenant existiert:
Bestehender Tenant
- Vollständiges Ersetzen: Wenn der Tenant bereits existiert, wird er vollständig durch die Backup-Daten ersetzt
- Datenüberschreibung: Alle bestehenden Entitäten, Assoziationen und Konfigurationen werden entfernt
- Ausfallzeit: Der Tenant ist während des Ersetzungsprozesses vorübergehend nicht verfügbar
Neuer Tenant
- Neuerstellung: Erstellt einen neuen Tenant mit der angegebenen Tenant-ID
- Datenbankanbindung: Bindet den Tenant an die angegebene Datenbank an
- Konfigurationseinrichtung: Richtet alle erforderlichen Indizes und Constraints ein
Backup- & Wiederherstellungs-Workflow
Reguläre Backup-Strategie
#!/bin/bash
# Daily backup script example
DATE=$(date +%Y_%m_%d_%H_%M)
TENANT_ID="sbeg"
BACKUP_DIR="/backups"
BACKUP_FILE="${BACKUP_DIR}/mongodb-backup-${TENANT_ID}-${DATE}.tar.gz"
# Create backup
octo-cli -c dump -tid ${TENANT_ID} -f ${BACKUP_FILE}
# Verify backup was created
if [ -f "${BACKUP_FILE}" ]; then
echo "Backup created successfully: ${BACKUP_FILE}"
# Optional: Upload to cloud storage, notify administrators, etc.
else
echo "ERROR: Backup failed for tenant ${TENANT_ID}"
exit 1
fi
Disaster-Recovery-Prozess
# 1. Stop application services (if needed)
# systemctl stop octo-mesh-service
# 2. Restore from latest backup
octo-cli -c restore -tid production -db production-db -f /backups/latest-backup.tar.gz -w
# 3. Verify restoration
# Check entity counts, run validation queries, etc.
# 4. Restart services
# systemctl start octo-mesh-service
Bewährte Vorgehensweisen
Backup-Strategie
- Regelmäßiger Zeitplan: Implementieren Sie automatisierte tägliche oder stündliche Backups je nach Datenkritikalität
- Aufbewahrungsrichtlinie: Bewahren Sie mehrere Backup-Versionen auf (täglich für 30 Tage, wöchentlich für 12 Wochen, monatlich für 12 Monate)
- Externe Speicherung: Speichern Sie Backups an mehreren Orten (lokal, Cloud, entferntes Rechenzentrum)
- Validierung: Testen Sie die Backup-Integrität regelmäßig, indem Sie Test-Wiederherstellungen durchführen
Backup-Benennung
- Einheitliches Format: Verwenden Sie eine standardisierte Benennung mit Zeitstempeln:
mongodb-backup-{tenant}-{YYYY_MM_DD_HH_MM}.tar.gz - Aussagekräftige Namen: Nehmen Sie Tenant-ID und Umgebungsinformationen auf
- Versionskontrolle: Pflegen Sie Backup-Kataloge mit Metadaten zu jedem Backup
Wiederherstellungsplanung
- Testumgebung: Testen Sie Wiederherstellungsverfahren stets zuerst in Nicht-Produktivumgebungen
- Ausfallzeitplanung: Planen Sie Wiederherstellungsoperationen während Wartungsfenstern
- Verifikationsschritte: Bereiten Sie Validierungsabfragen vor, um den Wiederherstellungserfolg zu bestätigen
- Rollback-Plan: Erstellen Sie ein aktuelles Backup, bevor Sie eine Wiederherstellung durchführen
Sicherheitsüberlegungen
- Zugriffssteuerung: Beschränken Sie Backup- und Wiederherstellungsoperationen ausschließlich auf autorisiertes Personal
- Verschlüsselung: Verschlüsseln Sie Backup-Dateien im Ruhezustand und bei der Übertragung
- Audit-Trail: Protokollieren Sie alle Backup- und Wiederherstellungsoperationen zur Compliance
- Netzwerksicherheit: Verwenden Sie sichere Kanäle für die Übertragung von Backup-Dateien
- Secret-Attribute: Backups enthalten Secret-Attribute in verschlüsselter Form. Eine Wiederherstellung behält sie verschlüsselt. In einer anderen Umgebung gelten Werte mit unbekannter Key-ID als nicht gesetzt (
keyMissing) und müssen neu eingegeben werden, oder sie werden lesbar, wenn der Quellschlüssel dem Key Ring hinzugefügt wird. Disaster Recovery braucht den Dump und die Sicherung des Key Rings (siehe Wiederherstellung über Umgebungen hinweg)
Überwachung & Verifikation
Backup-Verifikation
# Check backup file size and integrity
ls -lh ./backup.tar.gz
tar -tzf ./backup.tar.gz | head -10
# Verify backup contains expected collections
# (Restore to test environment and validate)
Wiederherstellungs-Verifikation
# After restore, verify tenant is accessible
octo-cli -c query -tid sbeg -q "{ \"ckTypeId\": \"System/Entity\" }" -l 5
# Check entity counts match expectations
# Verify critical business data is present
# Test application functionality
Wichtiger Sicherheitshinweis: Wiederherstellungsoperationen ersetzen bestehende Tenant-Daten vollständig. Erstellen Sie stets ein aktuelles Backup, bevor Sie in Produktivumgebungen Wiederherstellungsoperationen durchführen.
Verwenden Sie das Flag -w (watch) während Wiederherstellungsoperationen, um den Fortschritt zu überwachen und potenzielle Probleme frühzeitig im
Prozess zu erkennen.
Fehlerbehebung
Häufige Probleme
- Unzureichender Speicherplatz: Stellen Sie ausreichend Platz für Backup-Dateien und deren Extraktion sicher
- Berechtigungsfehler: Überprüfen Sie die Dateisystemberechtigungen für Backup-Verzeichnisse
- Netzwerk-Timeouts: Stellen Sie bei großen Backups stabile Netzwerkverbindungen sicher
- Versionskompatibilität: Stellen Sie die Backup-Kompatibilität mit der aktuellen OctoMesh-Version sicher
Wiederherstellungsszenarien
- Teilweiser Datenverlust: Verwenden Sie eine selektive Wiederherstellung mit bestimmten Datumsbereichen
- Korruptionswiederherstellung: Stellen Sie aus dem aktuellsten sauberen Backup wieder her
- Migrationsunterstützung: Verwenden Sie Backup/Restore für die Tenant-Migration zwischen Umgebungen