Sauvegarde et restauration

Configurez, gérez et restaurez les sauvegardes de base de données PostgreSQL pour IBM Bob on-premises afin de protéger les données applicatives et de prendre en charge les scénarios de reprise.

IBM Bob on-premises utilise un modèle de configuration de sauvegarde basé sur des ConfigMaps qui sépare les opérations de sauvegarde de la ressource personnalisée (CR) Bob. Les tâches de sauvegarde sont automatiquement planifiées et gérées via des CronJobs Kubernetes, avec des politiques de rétention et des paramètres de stockage configurables.

Les sauvegardes PostgreSQL créent une copie restaurable des bases de données IBM Bob et Keycloak. Ces sauvegardes peuvent être utilisées pour récupérer des données après une panne, migrer des données entre clusters ou restaurer un état stable antérieur de la base de données.

IBM Bob prend en charge à la fois les sauvegardes automatiques planifiées et l'exécution manuelle de sauvegardes.

Fonctionnalités clés

Planification automatisée

Les sauvegardes sont exécutées automatiquement à l'aide de CronJobs Kubernetes. Les planifications de sauvegarde sont définies à l'aide d'expressions cron standard, vous permettant de configurer la fréquence de sauvegarde en fonction des exigences opérationnelles et de reprise.

Gestion automatique de la rétention

La rétention des sauvegardes est gérée automatiquement pour aider à contrôler la consommation de stockage. Après chaque sauvegarde réussie, les sauvegardes plus anciennes qui dépassent la limite de rétention configurée sont supprimées. Par défaut, le système conserve les sept sauvegardes les plus récentes par cluster.

Prise en charge des sauvegardes multi-clusters

Une seule configuration de sauvegarde peut gérer les sauvegardes de plusieurs clusters PostgreSQL. L'opérateur crée et gère des ressources de sauvegarde dédiées pour chaque cluster configuré, permettant une gestion centralisée des sauvegardes sur l'ensemble du déploiement.

Détection automatique de l'image PostgreSQL

Le système de sauvegarde peut détecter et utiliser automatiquement l'image de conteneur PostgreSQL des clusters de bases de données en cours d'exécution. Cela élimine la nécessité de spécifier manuellement la version de l'image et garantit la compatibilité entre les tâches de sauvegarde et l'environnement de base de données cible.

Configuration basée sur des ConfigMaps

Les paramètres de sauvegarde sont stockés dans une ConfigMap dédiée, distincte de la ressource personnalisée (CR) Bob. Cette séparation simplifie la gestion opérationnelle et permet de modifier les planifications de sauvegarde, les paramètres de stockage et les politiques de rétention indépendamment de la configuration du déploiement de l'application.

Compression automatique

Les dumps de base de données sont automatiquement compressés à l'aide de gzip avant d'être stockés. La compression réduit les besoins de stockage et optimise la rétention des sauvegardes dans la limite de la capacité de stockage disponible.

Suivi des métadonnées de sauvegarde

Chaque sauvegarde comprend un fichier de métadonnées contenant des détails tels que l'horodatage de la sauvegarde, le nom de la base de données, l'hôte, le port et la taille de la sauvegarde. Ces informations vous aident à valider l'intégrité des sauvegardes, à suivre l'historique des sauvegardes et à identifier la sauvegarde appropriée pour la restauration.

Ce qui est inclus dans une sauvegarde

Les sauvegardes de base de données capturent tous les objets et données de base de données PostgreSQL nécessaires pour reconstruire un environnement de base de données.

Les sauvegardes comprennent :

  • Bases de données PostgreSQL (si configurées) :
    • Base de données Bob (bob) — la base de données principale de l'application, comprenant les comptes utilisateurs et les informations d'authentification, les projets et conversations, les résultats d'analyse de code, ainsi que la configuration et les paramètres spécifiques à l'application.
    • Base de données Keycloak (app) — la base de données Keycloak utilisée pour l'authentification et la gestion des identités, comprenant les identifiants et informations de profil des utilisateurs, les configurations OAuth et OpenID Connect (OIDC), les paramètres de realm, ainsi que les configurations de clients et de fournisseurs d'identité.
  • Schéma de base de données — tous les objets nécessaires pour recréer la structure de la base de données, y compris les tables, index et contraintes ; les procédures stockées et fonctions ; les vues et déclencheurs ; ainsi que les séquences et types personnalisés.
  • Données de base de données — le processus de sauvegarde utilise pg_dump pour créer un dump complet de la base de données PostgreSQL, capturant toutes les données stockées dans les tables de la base de données, l'ensemble des lignes et enregistrements, ainsi que les objets volumineux binaires (BLOB) le cas échéant.

Ce qui n'est pas inclus dans une sauvegarde

Les sauvegardes PostgreSQL ne capturent pas les ressources Kubernetes ni la configuration de l'application.

Les éléments suivants doivent être gérés séparément :

  • ConfigMaps
  • Secrets
  • Deployments et Services
  • Ressources Ingress
  • Journaux applicatifs
  • Données de modèle et embeddings
  • Volumes persistants hors base de données

Architecture de sauvegarde

IBM Bob utilise des ressources natives Kubernetes pour créer et gérer les sauvegardes de bases de données.

ComposantRôle
Ressource personnalisée BobActive ou suspend les opérations de sauvegarde
ConfigMap de sauvegardeDéfinit les planifications, le stockage, la rétention et les bases de données cibles
CronJobsExécutent les sauvegardes planifiées
Persistent Volume Claims (PVC)Stockent les fichiers de sauvegarde
Scripts de sauvegardeCréent les sauvegardes et gèrent la rétention

Le processus de sauvegarde suit ce flux de travail :

Bob CR (enabled: true) → Découverte de la ConfigMap → Réconciliation du contrôleur → Exécution du CronJob
  1. Le contrôleur découvre la ConfigMap portant le label bob.ibm.com/backup-config: "true".
  2. Le contrôleur crée les CronJobs et les PVC pour chaque cluster configuré.
  3. Les CronJobs s'exécutent selon la planification, exécutant pg_dump pour créer des dumps SQL compressés.
  4. Le script de sauvegarde gère la rétention, supprimant automatiquement les anciennes sauvegardes.
  5. Chaque sauvegarde comprend un fichier de métadonnées avec l'horodatage, la taille et les informations de base de données.

Lorsque les sauvegardes sont activées, l'opérateur découvre automatiquement la configuration de sauvegarde, crée les ressources requises et planifie les tâches de sauvegarde selon la fréquence configurée.

Structure des fichiers de sauvegarde

Les fichiers de sauvegarde sont stockés sur des Persistent Volume Claims (PVC) dédiés. Chaque cluster PostgreSQL configuré possède son propre répertoire contenant les fichiers de sauvegarde et les métadonnées associées.

/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

Le processus de sauvegarde génère les fichiers suivants pour chaque sauvegarde :

  • .sql.gz — dump SQL compressé (format texte brut, compressé avec gzip)
  • .sql.gz.meta — fichier de métadonnées avec horodatage, nom de base de données, taille, hôte et port

Capacités de reprise

IBM Bob prend en charge plusieurs scénarios de reprise pour vous aider à restaurer des données, récupérer après des pannes et migrer des bases de données entre environnements :

  • Restauration complète de la base de données — restaurez l'intégralité d'une base de données PostgreSQL à partir d'un fichier de sauvegarde.
  • Restauration à un point dans le temps — restaurez une base de données vers une instance de sauvegarde spécifique en sélectionnant le fichier de sauvegarde requis d'après son horodatage.
  • Migration inter-clusters — restaurez une sauvegarde vers un cluster PostgreSQL différent, permettant la migration de la base de données entre environnements.
Comment trouvez-vous ce sujet ?