Planifier des sauvegardes

Configurez et gérez les planifications de sauvegarde automatique PostgreSQL pour IBM Bob, y compris les expressions cron, les politiques de rétention, la suspension et la reprise, ainsi que la surveillance.

Les sauvegardes planifiées automatisent la protection de la base de données et réduisent le risque de perte de données. IBM Bob utilise des CronJobs Kubernetes pour exécuter les sauvegardes conformément au calendrier défini dans la configuration de sauvegarde.

Remarque :

Par défaut, les sauvegardes s'exécutent en temps universel coordonné (UTC).

Configurer les planifications de sauvegarde

Configurez une planification de sauvegarde en mettant à jour le champ schedule dans la ConfigMap de configuration de sauvegarde. La valeur utilise la syntaxe cron standard et détermine la fréquence d'exécution des tâches de sauvegarde.

apiVersion: v1
kind: ConfigMap
metadata:
  name: bob-postgres-backup-config
  namespace: <bob-instance-namespace>
  labels:
    bob.ibm.com/backup-config: "true"
data:
  config.yaml: |
    # Planification de sauvegarde au format cron (fuseau horaire UTC)
    schedule: "0 2 * * *"  # Tous les jours à 02h00 UTC

    # ... autres configurations ...

Comprendre la syntaxe cron

Les planifications cron se composent de cinq champs qui définissent la fréquence d'exécution.

ChampValeursCaractères spéciaux
Minute0–59*, ,, -, /
Heure0–23*, ,, -, /
Jour1–31*, ,, -, /
Mois1–12*, ,, -, /
Jour de la semaine0–7 (0 et 7 représentent le dimanche)*, ,, -, /

Sélectionnez une planification qui correspond à vos objectifs de point de reprise (RPO) et à vos exigences opérationnelles.

Considérations de planification

Fuseau horaire (UTC)

Toutes les planifications s'exécutent dans le fuseau horaire UTC. Planifiez les horaires en fonction de l'heure UTC et non de votre heure locale. Par exemple :

  • 0 2 * * * = 02h00 UTC = 04h00 CEST (été) ou 03h00 CET (hiver)

Sauvegardes simultanées

Tous les clusters configurés sont sauvegardés simultanément selon le même calendrier. Cela multiplie la charge d'E/S de stockage et partage la bande passante réseau entre toutes les sauvegardes. Pour échelonner les sauvegardes dans des environnements à ressources limitées, créez plusieurs ConfigMaps avec des planifications différentes :

# ConfigMap 1 : bob-db à 02h00
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: bob-db-backup-config
  labels:
    bob.ibm.com/backup-config: "true"
data:
  config.yaml: |
    schedule: "0 2 * * *"
    clusters:
      - name: bob-db
        database: bob
        secretName: bob-db-app
---
# ConfigMap 2 : keycloak-db à 03h00
apiVersion: v1
kind: ConfigMap
metadata:
  name: keycloak-db-backup-config
  labels:
    bob.ibm.com/backup-config: "true"
data:
  config.yaml: |
    schedule: "0 3 * * *"
    clusters:
      - name: bob-keycloak-db
        database: app
        secretName: bob-keycloak-db-app

Durée de sauvegarde

Tenez compte de la taille de la base de données lors de la planification afin d'éviter les chevauchements entre les exécutions de sauvegarde.

Taille de la base de donnéesDurée prévue
Moins de 1 Go1–5 minutes
1–5 Go5–15 minutes
5–20 Go15–45 minutes
20–50 Go45–120 minutes
Supérieure à 50 Go2+ heures

Heures creuses

Planifiez les sauvegardes pendant les périodes de faible utilisation. Évitez les heures de pointe et surveillez les performances de la base de données pendant les sauvegardes.

Modifier la planification

Pour mettre à jour la planification de sauvegarde, modifiez la ConfigMap de sauvegarde :

oc edit configmap bob-postgres-backup-config -n <bob-instance-namespace>

Mettez à jour le champ schedule et enregistrez. Le contrôleur détecte automatiquement la modification et met à jour les CronJobs.

Vérifiez la planification mise à jour :

oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> -o jsonpath='{.spec.schedule}'

Suspendre et reprendre les sauvegardes

Si vous devez interrompre temporairement les sauvegardes pendant une maintenance sans supprimer la configuration de sauvegarde, suspendez les sauvegardes dans la ressource personnalisée Bob :

oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
  -p '{"spec":{"postgresBackup":{"suspend":true}}}'

La suspension des sauvegardes préserve toutes les ressources de sauvegarde existantes tout en empêchant l'exécution de nouvelles tâches.

Vérifiez que les CronJobs sont suspendus :

oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# La colonne SUSPEND doit afficher "True"

Reprenez les sauvegardes une fois la maintenance terminée :

oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
  -p '{"spec":{"postgresBackup":{"suspend":false}}}'

Surveiller l'activité de sauvegarde

Une surveillance régulière permet de s'assurer que les tâches de sauvegarde continuent de s'exécuter avec succès et que les objectifs de reprise peuvent être atteints.

# Lister les tâches de sauvegarde récentes
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup \
  --sort-by=.metadata.creationTimestamp

# Vérifier l'état des CronJobs
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup

# Afficher l'heure de la dernière planification
oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> \
  -o jsonpath='{.status.lastScheduleTime}'

# Afficher les journaux de sauvegarde
oc logs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup --tail=100

Examinez rapidement les échecs pour éviter les interruptions dans la couverture des sauvegardes.

Gérer la rétention des sauvegardes

Les politiques de rétention déterminent le nombre de copies de sauvegarde stockées avant que les anciennes sauvegardes ne soient automatiquement supprimées.

data:
  config.yaml: |
    # Nombre de sauvegardes à conserver par cluster
    retention: 7  # Conserver les 7 dernières sauvegardes

Des valeurs de rétention plus élevées améliorent la flexibilité de reprise mais nécessitent un espace de stockage supplémentaire.

Comportement de rétention :

  • Les sauvegardes les plus anciennes sont automatiquement supprimées après chaque sauvegarde réussie.
  • La rétention est calculée par cluster — chaque cluster gère son propre décompte.
  • Le nettoyage intervient immédiatement après la création de la sauvegarde.

Par exemple, avec retention: 7 :

  • Jours 1–7 : Accumulation de 7 sauvegardes.
  • Jour 8 : Création d'une nouvelle sauvegarde, suppression de la sauvegarde du jour 1.
  • Jour 9 : Création d'une nouvelle sauvegarde, suppression de la sauvegarde du jour 2.

Déclencher une sauvegarde manuelle

Pour déclencher manuellement une sauvegarde en dehors de la planification :

# Créer un job à partir du CronJob
oc create job --from=cronjob/bob-db-backup-cronjob \
  manual-backup-$(date +%s) -n <bob-instance-namespace>

# Surveiller le job
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup

# Afficher les journaux du job
oc logs -n <bob-instance-namespace> job/manual-backup-<timestamp>

Bonnes pratiques

  • Planifiez les sauvegardes pendant les heures creuses (généralement 02h00–04h00 heure locale).
  • Utilisez une planification cohérente pour plus de prévisibilité.
  • Gardez à l'esprit le fuseau horaire UTC lors de la définition des planifications.
  • Échelonnez les sauvegardes si les ressources sont limitées.
  • Surveillez régulièrement le succès des sauvegardes.
  • Testez les procédures de restauration chaque mois.
  • Documentez la planification et sa justification.
  • Configurez des alertes pour les échecs de sauvegarde.
Comment trouvez-vous ce sujet ?