Tworzenie i przywracanie kopii zapasowych

Konfiguruj, zarządzaj i przywracaj kopie zapasowe bazy danych PostgreSQL dla IBM Bob on-premises, aby chronić dane aplikacji i wspierać scenariusze odzyskiwania.

IBM Bob on-premises używa modelu konfiguracji kopii zapasowych opartego na ConfigMap, który oddziela operacje tworzenia kopii zapasowych od zasobu niestandardowego (CR) Bob. Zadania tworzenia kopii zapasowych są automatycznie planowane i zarządzane za pomocą Kubernetes CronJobs, z konfigurowalnymi zasadami retencji i ustawieniami pamięci masowej.

Kopie zapasowe PostgreSQL tworzą możliwą do przywrócenia kopię baz danych IBM Bob i Keycloak. Te kopie zapasowe mogą być używane do odzyskiwania danych po awarii, migracji danych między klastrami lub przywracania poprzedniego znanego dobrego stanu bazy danych.

IBM Bob obsługuje zarówno automatyczne zaplanowane kopie zapasowe, jak i ręczne wykonywanie kopii zapasowych.

Kluczowe funkcje

Automatyczne planowanie

Kopie zapasowe są wykonywane automatycznie przy użyciu Kubernetes CronJobs. Harmonogramy kopii zapasowych są definiowane za pomocą standardowych wyrażeń cron, co pozwala na skonfigurowanie częstotliwości tworzenia kopii zapasowych w oparciu o wymagania operacyjne i odzyskiwania.

Automatyczne zarządzanie retencją

Retencja kopii zapasowych jest zarządzana automatycznie, aby pomóc w kontrolowaniu zużycia pamięci masowej. Po każdej udanej kopii zapasowej starsze kopie zapasowe przekraczające skonfigurowany limit retencji są usuwane. Domyślnie system zachowuje siedem najnowszych kopii zapasowych na klaster.

Obsługa kopii zapasowych wielu klastrów

Pojedyncza konfiguracja kopii zapasowych może zarządzać kopiami zapasowymi dla wielu klastrów PostgreSQL. Operator tworzy i utrzymuje dedykowane zasoby kopii zapasowych dla każdego skonfigurowanego klastra, umożliwiając scentralizowane zarządzanie kopiami zapasowymi w całym wdrożeniu.

Automatyczne wykrywanie obrazu PostgreSQL

System kopii zapasowych może automatycznie wykrywać i używać obrazu kontenera PostgreSQL z działających klastrów baz danych. Eliminuje to potrzebę ręcznego określania wersji obrazu i pomaga zapewnić kompatybilność między zadaniami tworzenia kopii zapasowych a docelowym środowiskiem bazy danych.

Konfiguracja oparta na ConfigMap

Ustawienia kopii zapasowych są przechowywane w dedykowanym ConfigMap, niezależnie od zasobu niestandardowego (CR) Bob. Ta separacja upraszcza zarządzanie operacyjne i umożliwia modyfikowanie harmonogramów kopii zapasowych, ustawień pamięci masowej i zasad retencji niezależnie od konfiguracji wdrożenia aplikacji.

Automatyczna kompresja

Zrzuty bazy danych są automatycznie kompresowane za pomocą gzip przed zapisaniem. Kompresja zmniejsza wymagania dotyczące pamięci masowej i pomaga zoptymalizować przechowywanie kopii zapasowych w ramach dostępnej pojemności pamięci masowej.

Śledzenie metadanych kopii zapasowych

Każda kopia zapasowa zawiera plik metadanych zawierający szczegóły, takie jak znacznik czasu kopii zapasowej, nazwa bazy danych, host, port i rozmiar kopii zapasowej. Informacje te pomagają w weryfikacji integralności kopii zapasowej, śledzeniu historii kopii zapasowych i identyfikowaniu właściwej kopii zapasowej do przywrócenia.

Co zawiera kopia zapasowa

Kopie zapasowe bazy danych przechwytują wszystkie obiekty bazy danych PostgreSQL i dane wymagane do odtworzenia środowiska bazy danych.

Kopie zapasowe obejmują:

  • Bazy danych PostgreSQL (jeśli skonfigurowano):
    • Baza danych Bob (bob) — podstawowa baza danych aplikacji, w tym konta użytkowników i informacje uwierzytelniające, projekty i konwersacje, wyniki analizy kodu oraz specyficzna dla aplikacji konfiguracja i ustawienia.
    • Baza danych Keycloak (app) — baza danych Keycloak używana do uwierzytelniania i zarządzania tożsamością, w tym poświadczenia użytkowników i informacje profilowe, konfiguracje OAuth i OpenID Connect (OIDC), ustawienia realm oraz konfiguracje klientów i dostawców tożsamości.
  • Schemat bazy danych — wszystkie obiekty wymagane do odtworzenia struktury bazy danych, w tym tabele, indeksy i ograniczenia; procedury składowane i funkcje; widoki i wyzwalacze; oraz sekwencje i typy niestandardowe.
  • Dane bazy danych — proces tworzenia kopii zapasowej używa pg_dump do utworzenia kompletnego zrzutu bazy danych PostgreSQL, przechwytując wszystkie dane przechowywane w tabelach bazy danych, wszystkie wiersze i rekordy oraz binarne obiekty wielkie (BLOB), jeśli występują.

Czego nie zawiera kopia zapasowa

Kopie zapasowe PostgreSQL nie przechwytują zasobów Kubernetes ani konfiguracji aplikacji.

Następujące elementy muszą być zarządzane oddzielnie:

  • ConfigMaps
  • Secrets
  • Deployments i Services
  • Zasoby Ingress
  • Dzienniki aplikacji
  • Dane modeli i osadzenia (embeddings)
  • Woluminy trwałe niezwiązane z bazą danych

Architektura kopii zapasowych

IBM Bob używa zasobów natywnych dla Kubernetes do tworzenia kopii zapasowych baz danych i zarządzania nimi.

KomponentPrzeznaczenie
Zasób niestandardowy BobWłącza lub zawiesza operacje tworzenia kopii zapasowych
ConfigMap kopii zapasowejDefiniuje harmonogramy, pamięć masową, retencję i docelowe bazy danych
CronJobsWykonują zaplanowane kopie zapasowe
Persistent volume claimsPrzechowują pliki kopii zapasowych
Skrypty kopii zapasowychTworzą kopie zapasowe i zarządzają retencją

Proces tworzenia kopii zapasowych przebiega według następującego przepływu pracy:

Bob CR (enabled: true) → ConfigMap Discovery → Controller Reconciliation → CronJob Execution
  1. Kontroler wykrywa ConfigMap z etykietą bob.ibm.com/backup-config: "true".
  2. Kontroler tworzy CronJobs i PVC dla każdego skonfigurowanego klastra.
  3. CronJobs wykonują się zgodnie z harmonogramem, uruchamiając pg_dump w celu utworzenia skompresowanych zrzutów SQL.
  4. Skrypt kopii zapasowej zarządza retencją, automatycznie usuwając stare kopie zapasowe.
  5. Każda kopia zapasowa zawiera plik metadanych ze znacznikiem czasu, rozmiarem i informacjami o bazie danych.

Po włączeniu kopii zapasowych operator automatycznie wykrywa konfigurację kopii zapasowych, tworzy wymagane zasoby i planuje zadania tworzenia kopii zapasowych zgodnie ze skonfigurowaną częstotliwością.

Struktura plików kopii zapasowej

Pliki kopii zapasowych są przechowywane na dedykowanych roszczeniach woluminów trwałych (PVC). Każdy skonfigurowany klaster PostgreSQL ma własny katalog zawierający pliki kopii zapasowych i powiązane metadane.

/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

Proces tworzenia kopii zapasowej generuje następujące pliki dla każdej kopii zapasowej:

  • .sql.gz — skompresowany zrzut SQL (format zwykłego tekstu, skompresowany gzip)
  • .sql.gz.meta — plik metadanych ze znacznikiem czasu, nazwą bazy danych, rozmiarem, hostem i portem

Możliwości odzyskiwania

IBM Bob obsługuje wiele scenariuszy odzyskiwania, które pomagają przywracać dane, usuwać skutki awarii i migrować bazy danych między środowiskami:

  • Pełne przywrócenie bazy danych — przywrócenie całej bazy danych PostgreSQL z pliku kopii zapasowej.
  • Odzyskiwanie do punktu w czasie — przywrócenie bazy danych do określonej instancji kopii zapasowej poprzez wybranie wymaganego pliku kopii zapasowej na podstawie jego znacznika czasu.
  • Migracja między klastrami — przywrócenie kopii zapasowej do innego klastra PostgreSQL, umożliwiające migrację bazy danych między środowiskami.
Jak oceniasz ten temat?