Zum Hauptinhalt springen

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​

ParameterDescriptionExample
-c dumpBefehl zum Erstellen eines BackupsErforderlich
-tid <id>Zu sichernde Tenant-IDsbeg, 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-dataAuch die CrateDB-Streamdaten-Archive des Tenants einschließen (erzeugt ein *.octobak.zip). Erfordert aktivierte Streamdaten am TenantOptional

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.

tipp

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​

ParameterDescriptionExample
-c restoreBefehl zum Wiederherstellen eines BackupsErforderlich
-tid <id>Ziel-Tenant-IDsbeg, energy-community
-db <name>Name der Zieldatenbanksbeg, 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öglichensbeg, 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-dataAuch die CrateDB-Streamdaten-Archive aus einer *.octobak.zip wiederherstellen. Bei einer einfachen *.tar.gz wirkungslosOptional
-wWatch-Modus zur FortschrittsüberwachungOptional, 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
warnung

Wichtiger Sicherheitshinweis: Wiederherstellungsoperationen ersetzen bestehende Tenant-Daten vollständig. Erstellen Sie stets ein aktuelles Backup, bevor Sie in Produktivumgebungen Wiederherstellungsoperationen durchführen.

tipp

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