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.
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.
| Champ | Valeurs | Caractères spéciaux |
|---|---|---|
| Minute | 0–59 | *, ,, -, / |
| Heure | 0–23 | *, ,, -, / |
| Jour | 1–31 | *, ,, -, / |
| Mois | 1–12 | *, ,, -, / |
| Jour de la semaine | 0–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-appDuré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ées | Durée prévue |
|---|---|
| Moins de 1 Go | 1–5 minutes |
| 1–5 Go | 5–15 minutes |
| 5–20 Go | 15–45 minutes |
| 20–50 Go | 45–120 minutes |
| Supérieure à 50 Go | 2+ 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=100Examinez 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 sauvegardesDes 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.