Backups planen
Konfiguriere und verwalte automatisierte PostgreSQL-Backup-Zeitpläne für IBM Bob, einschließlich Cron-Ausdrücken, Aufbewahrungsrichtlinien, Pausieren und Fortsetzen sowie Monitoring.
Geplante Backups automatisieren den Datenbankschutz und reduzieren das Risiko von Datenverlust. IBM Bob verwendet Kubernetes-CronJobs, um Backups gemäß dem in der Backup-Konfiguration definierten Zeitplan auszuführen.
Standardmäßig werden Backups in der koordinierten Weltzeit (UTC) ausgeführt.
Backup-Zeitpläne konfigurieren
Konfiguriere einen Backup-Zeitplan, indem du das Feld schedule in der Backup-Konfigurations-ConfigMap aktualisierst. Der Wert verwendet Standard-Cron-Syntax und bestimmt, wie oft Backup-Jobs ausgeführt werden.
apiVersion: v1
kind: ConfigMap
metadata:
name: bob-postgres-backup-config
namespace: <bob-instance-namespace>
labels:
bob.ibm.com/backup-config: "true"
data:
config.yaml: |
# Backup schedule in cron format (UTC timezone)
schedule: "0 2 * * *" # Daily at 2:00 AM UTC
# ... other configuration ...Cron-Syntax verstehen
Cron-Zeitpläne bestehen aus fünf Feldern, die die Ausführungsfrequenz definieren.
| Feld | Werte | Sonderzeichen |
|---|---|---|
| Minute | 0–59 | *, ,, -, / |
| Stunde | 0–23 | *, ,, -, / |
| Tag | 1–31 | *, ,, -, / |
| Monat | 1–12 | *, ,, -, / |
| Wochentag | 0–7 (0 und 7 stehen für Sonntag) | *, ,, -, / |
Wähle einen Zeitplan, der deinen Recovery Point Objectives (RPOs) und Geschäftsanforderungen entspricht.
Planungsüberlegungen
Zeitzone (UTC)
Alle Zeitpläne werden in der UTC-Zeitzone ausgeführt. Plane Zeitpläne gemäß UTC-Zeit, nicht deiner Ortszeit. Zum Beispiel:
0 2 * * *= 2:00 Uhr UTC = 4:00 Uhr MESZ (Sommer) oder 3:00 Uhr MEZ (Winter)
Gleichzeitige Backups
Alle konfigurierten Cluster werden gleichzeitig nach demselben Zeitplan gesichert. Dadurch wird die Storage-I/O-Last multipliziert und die Netzwerkbandbreite über alle Backups verteilt. Um Backups in ressourcenbeschränkten Umgebungen zeitlich zu verschieben, erstelle mehrere ConfigMaps mit unterschiedlichen Zeitplänen:
# ConfigMap 1: bob-db at 2 AM
---
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 at 3 AM
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-appBackup-Dauer
Berücksichtige die Datenbankgröße bei der Zeitplanung, um Überschneidungen zwischen Backup-Läufen zu vermeiden.
| Datenbankgröße | Erwartete Dauer |
|---|---|
| Weniger als 1 GB | 1–5 Minuten |
| 1–5 GB | 5–15 Minuten |
| 5–20 GB | 15–45 Minuten |
| 20–50 GB | 45–120 Minuten |
| Mehr als 50 GB | 2+ Stunden |
Außerhalb der Spitzenlastzeiten
Plane Backups für Zeiten mit geringer Nutzung. Vermeide Hauptgeschäftszeiten und überwache die Datenbankleistung während der Backups.
Zeitplan ändern
Um den Backup-Zeitplan zu aktualisieren, bearbeite die Backup-ConfigMap:
oc edit configmap bob-postgres-backup-config -n <bob-instance-namespace>Aktualisiere das Feld schedule und speichere. Der Controller erkennt die Änderung automatisch und aktualisiert die CronJobs.
Aktualisierten Zeitplan überprüfen:
oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> -o jsonpath='{.spec.schedule}'Backups pausieren und fortsetzen
Wenn du Backups während einer Wartung pausieren möchtest, ohne die Backup-Konfiguration zu entfernen, pausiere Backups in der benutzerdefinierten Bob-Ressource:
oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
-p '{"spec":{"postgresBackup":{"suspend":true}}}'Das Pausieren von Backups erhält alle vorhandenen Backup-Ressourcen, während verhindert wird, dass neue Jobs ausgeführt werden.
Überprüfe, ob CronJobs pausiert sind:
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# The SUSPEND column should show "True"Backups nach Abschluss der Wartung fortsetzen:
oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
-p '{"spec":{"postgresBackup":{"suspend":false}}}'Backup-Aktivität überwachen
Regelmäßiges Monitoring stellt sicher, dass Backup-Jobs weiterhin erfolgreich ausgeführt werden und Recovery-Ziele erreicht werden können.
# List recent backup jobs
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup \
--sort-by=.metadata.creationTimestamp
# Check CronJob status
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# View last scheduled time
oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> \
-o jsonpath='{.status.lastScheduleTime}'
# View backup logs
oc logs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup --tail=100Untersuche Fehler umgehend, um Lücken in der Backup-Abdeckung zu vermeiden.
Backup-Aufbewahrung verwalten
Aufbewahrungsrichtlinien bestimmen, wie viele Backup-Kopien gespeichert werden, bevor ältere Backups automatisch entfernt werden.
data:
config.yaml: |
# Number of backups to retain per cluster
retention: 7 # Keep last 7 backupsHöhere Aufbewahrungswerte verbessern die Recovery-Flexibilität, erfordern jedoch zusätzlichen Speicher.
Aufbewahrungsverhalten:
- Älteste Backups werden nach jedem erfolgreichen Backup automatisch gelöscht.
- Aufbewahrung gilt pro Cluster — jeder Cluster führt seine eigene Zählung.
- Bereinigung erfolgt unmittelbar nach der Backup-Erstellung.
Zum Beispiel mit retention: 7:
- Tage 1–7: 7 Backups ansammeln.
- Tag 8: Neues Backup erstellen, Backup von Tag 1 löschen.
- Tag 9: Neues Backup erstellen, Backup von Tag 2 löschen.
Manuelles Backup auslösen
So löst du ein Backup außerhalb des Zeitplans manuell aus:
# Create a job from the CronJob
oc create job --from=cronjob/bob-db-backup-cronjob \
manual-backup-$(date +%s) -n <bob-instance-namespace>
# Monitor the job
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# View job logs
oc logs -n <bob-instance-namespace> job/manual-backup-<timestamp>Best Practices
- Plane Backups für Zeiten außerhalb der Spitzenlastzeiten (typischerweise 2–4 Uhr Ortszeit).
- Verwende einen konsistenten Zeitplan für Vorhersagbarkeit.
- Bedenke die UTC-Zeitzone beim Festlegen von Zeitplänen.
- Verschiebe Backups zeitlich, wenn Ressourcen knapp sind.
- Überwache den Backup-Erfolg regelmäßig.
- Teste Wiederherstellungsverfahren monatlich.
- Dokumentiere den Zeitplan und die Begründung.
- Richte Benachrichtigungen für Backup-Fehler ein.