Backup und Wiederherstellung

Konfiguriere, verwalte und stelle PostgreSQL-Datenbank-Backups für IBM Bob On-Premises wieder her, um Anwendungsdaten zu schützen und Recovery-Szenarien zu unterstützen.

IBM Bob On-Premises verwendet ein ConfigMap-basiertes Backup-Konfigurationsmodell, das Backup-Operationen von der benutzerdefinierten Bob-Ressource (CR) trennt. Backup-Jobs werden automatisch über Kubernetes-CronJobs geplant und verwaltet, mit konfigurierbaren Aufbewahrungsrichtlinien und Speichereinstellungen.

PostgreSQL-Backups erstellen eine wiederherstellbare Kopie der IBM-Bob- und Keycloak-Datenbanken. Diese Backups können verwendet werden, um Daten nach einem Ausfall wiederherzustellen, Daten zwischen Clustern zu migrieren oder einen früheren bekannt-guten Datenbankzustand wiederherzustellen.

IBM Bob unterstützt sowohl automatisierte geplante Backups als auch manuelle Backup-Ausführung.

Hauptfunktionen

Automatisierte Planung

Backups werden automatisch mit Kubernetes-CronJobs ausgeführt. Backup-Zeitpläne werden mit Standard-Cron-Ausdrücken definiert, sodass du die Backup-Häufigkeit basierend auf betrieblichen und Recovery-Anforderungen konfigurieren kannst.

Automatisches Aufbewahrungsmanagement

Die Backup-Aufbewahrung wird automatisch verwaltet, um den Speicherverbrauch zu kontrollieren. Nach jedem erfolgreichen Backup werden ältere Backups, die das konfigurierte Aufbewahrungslimit überschreiten, entfernt. Standardmäßig behält das System die sieben aktuellsten Backups pro Cluster.

Multi-Cluster-Backup-Unterstützung

Eine einzige Backup-Konfiguration kann Backups für mehrere PostgreSQL-Cluster verwalten. Der Operator erstellt und pflegt dedizierte Backup-Ressourcen für jeden konfigurierten Cluster und ermöglicht so ein zentralisiertes Backup-Management im gesamten Deployment.

PostgreSQL-Image-Automatische-Erkennung

Das Backup-System kann das PostgreSQL-Container-Image von laufenden Datenbank-Clustern automatisch erkennen und verwenden. Dadurch entfällt die Notwendigkeit, die Image-Version manuell anzugeben, und es wird die Kompatibilität zwischen Backup-Jobs und der Zieldatenbankumgebung sichergestellt.

ConfigMap-basierte Konfiguration

Backup-Einstellungen werden in einer dedizierten ConfigMap gespeichert, getrennt von der benutzerdefinierten Bob-Ressource (CR). Diese Trennung vereinfacht das Betriebsmanagement und ermöglicht es, Backup-Zeitpläne, Speichereinstellungen und Aufbewahrungsrichtlinien unabhängig von der Anwendungs-Deployment-Konfiguration zu ändern.

Automatische Komprimierung

Datenbank-Dumps werden automatisch mit gzip komprimiert, bevor sie gespeichert werden. Komprimierung reduziert den Speicherbedarf und hilft, die Backup-Aufbewahrung innerhalb der verfügbaren Speicherkapazität zu optimieren.

Backup-Metadaten-Tracking

Jedes Backup enthält eine Metadatendatei mit Details wie dem Backup-Zeitstempel, Datenbanknamen, Host, Port und Backup-Größe. Diese Informationen helfen dir, die Backup-Integrität zu validieren, den Backup-Verlauf zu verfolgen und das richtige Backup für die Wiederherstellung zu identifizieren.

Was in einem Backup enthalten ist

Datenbank-Backups erfassen alle PostgreSQL-Datenbankobjekte und -daten, die zum Rekonstruieren einer Datenbankumgebung erforderlich sind.

Backups umfassen:

  • PostgreSQL-Datenbanken (falls konfiguriert):
    • Bob-Datenbank (bob) — die primäre Anwendungsdatenbank, einschließlich Benutzerkonten und Authentifizierungsinformationen, Projekte und Konversationen, Code-Analyseergebnisse sowie anwendungsspezifische Konfiguration und Einstellungen.
    • Keycloak-Datenbank (app) — die Keycloak-Datenbank für Authentifizierung und Identitätsmanagement, einschließlich Benutzeranmeldeinformationen und Profilinformationen, OAuth- und OpenID-Connect-(OIDC-)Konfigurationen, Realm-Einstellungen sowie Client- und Identitätsprovider-Konfigurationen.
  • Datenbankschema — alle Objekte, die zum Rekonstruieren der Datenbankstruktur erforderlich sind, einschließlich Tabellen, Indizes und Constraints; gespeicherte Prozeduren und Funktionen; Views und Trigger; sowie Sequenzen und benutzerdefinierte Typen.
  • Datenbankdaten — der Backup-Prozess verwendet pg_dump, um einen vollständigen PostgreSQL-Datenbank-Dump zu erstellen, der alle in Datenbanktabellen gespeicherten Daten, alle Zeilen und Datensätze sowie Binary Large Objects (BLOBs) erfasst, sofern vorhanden.

Was nicht in einem Backup enthalten ist

PostgreSQL-Backups erfassen keine Kubernetes-Ressourcen oder Anwendungskonfiguration.

Die folgenden Elemente müssen separat verwaltet werden:

  • ConfigMaps
  • Secrets
  • Deployments und Services
  • Ingress-Ressourcen
  • Anwendungsprotokolle
  • Modelldaten und Embeddings
  • Nicht-datenbank-bezogene Persistent Volumes

Backup-Architektur

IBM Bob verwendet Kubernetes-native Ressourcen zum Erstellen und Verwalten von Datenbank-Backups.

KomponenteZweck
Benutzerdefinierte Bob-RessourceAktiviert oder pausiert Backup-Operationen
Backup-ConfigMapDefiniert Zeitpläne, Speicher, Aufbewahrung und Zieldatenbanken
CronJobsFühren geplante Backups aus
Persistent Volume ClaimsSpeichern Backup-Dateien
Backup-SkripteErstellen Backups und verwalten Aufbewahrung

Der Backup-Prozess folgt diesem Workflow:

Bob CR (enabled: true) → ConfigMap Discovery → Controller Reconciliation → CronJob Execution
  1. Der Controller entdeckt die ConfigMap mit dem Label bob.ibm.com/backup-config: "true".
  2. Der Controller erstellt CronJobs und PVCs für jeden konfigurierten Cluster.
  3. CronJobs werden nach Zeitplan ausgeführt und führen pg_dump aus, um komprimierte SQL-Dumps zu erstellen.
  4. Das Backup-Skript verwaltet die Aufbewahrung und löscht automatisch alte Backups.
  5. Jedes Backup enthält eine Metadatendatei mit Zeitstempel, Größe und Datenbankinformationen.

Wenn Backups aktiviert sind, erkennt der Operator automatisch die Backup-Konfiguration, erstellt die erforderlichen Ressourcen und plant Backup-Jobs entsprechend der konfigurierten Häufigkeit.

Backup-Dateistruktur

Backup-Dateien werden auf dedizierten Persistent Volume Claims (PVCs) gespeichert. Jeder konfigurierte PostgreSQL-Cluster hat sein eigenes Verzeichnis mit den Backup-Dateien und zugehörigen Metadaten.

/backups/
├── bob-db/
│   ├── backup_bob_20260902_020000.sql.gz
│   └── backup_bob_20260902_020000.sql.gz.meta
└── bob-keycloak-db/
    ├── backup_app_20260902_020000.sql.gz
    └── backup_app_20260902_020000.sql.gz.meta

Der Backup-Prozess generiert die folgenden Dateien für jedes Backup:

  • .sql.gz — komprimierter SQL-Dump (Klartextformat, gzip-komprimiert)
  • .sql.gz.meta — Metadatendatei mit Zeitstempel, Datenbankname, Größe, Host und Port

Recovery-Möglichkeiten

IBM Bob unterstützt mehrere Recovery-Szenarien, um dir zu helfen, Daten wiederherzustellen, nach Ausfällen zu erholen und Datenbanken zwischen Umgebungen zu migrieren:

  • Vollständige Datenbankwiederherstellung — stelle eine gesamte PostgreSQL-Datenbank aus einer Backup-Datei wieder her.
  • Point-in-time-Recovery — stelle eine Datenbank auf eine bestimmte Backup-Instanz wieder her, indem du die erforderliche Backup-Datei anhand ihres Zeitstempels auswählst.
  • Cluster-übergreifende Migration — stelle ein Backup in einem anderen PostgreSQL-Cluster wieder her und ermögliche so die Datenbankmigration zwischen Umgebungen.
Wie ist dieses Thema?