Backup durchführen
Konfiguriere automatisierte PostgreSQL-Backups für IBM-Bob-Datenbanken und überprüfe, ob Backup-Jobs korrekt ausgeführt werden.
Verwende dieses Verfahren, um automatisierte PostgreSQL-Backups für IBM-Bob-Datenbanken zu konfigurieren. Nachdem Backups konfiguriert sind, erstellt und verwaltet der Operator automatisch geplante Backup-Jobs.
Voraussetzungen
Überprüfe vor der Konfiguration von Backups die folgenden Voraussetzungen:
- Eine unterstützte Storage-Klasse ist im Cluster verfügbar.
- Datenbankberechtigungs-Secrets sind vorhanden.
- Ausreichend Speicherkapazität ist zugewiesen.
- PostgreSQL-Cluster werden ausgeführt und sind fehlerfrei.
Backups konfigurieren und aktivieren
Erstelle eine Backup-ConfigMap, die den Backup-Zeitplan, die Aufbewahrungsrichtlinie, die Speicherkonfiguration und die Zieldatenbank-Cluster definiert.
Der Operator erkennt automatisch jede ConfigMap mit dem Label:
bob.ibm.com/backup-config: "true"Erstelle die Konfigurationsdatei:
apiVersion: v1
kind: ConfigMap
metadata:
name: bob-postgres-backup-config
namespace: <bob-instance-namespace>
labels:
bob.ibm.com/backup-config: "true" # Required
app.kubernetes.io/name: bob
app.kubernetes.io/component: postgres-backup
data:
config.yaml: |
# Backup schedule in cron format (UTC timezone)
schedule: "0 2 * * *"
# Storage class for backup PVCs
backupStorageClass: "nfs-storage"
# Number of backups to retain per cluster (default: 7)
retention: 7
# Size of backup PVC per cluster (default: 10Gi)
pvcSize: "10Gi"
# Optional: PostgreSQL image override
# If not specified, image is auto-detected from running clusters
# postgresImage: "icr.io/cpopen/ibm-postgresql:16.4"
# Clusters to back up
# If omitted, defaults to bob-db and bob-keycloak-db
clusters:
- name: bob-db
database: bob
secretName: bob-db-app
- name: bob-keycloak-db
database: app # Note: Keycloak database is named "app"
secretName: bob-keycloak-db-appConfigMap anwenden:
oc apply -f backup-config.yamlBackup-Management in der benutzerdefinierten Bob-Ressource aktivieren:
apiVersion: bob.ibm.com/v1beta1
kind: Bob
metadata:
name: bob-instance
namespace: <bob-instance-namespace>
spec:
postgresBackup:
enabled: true
suspend: falseDiese Einstellung weist den Operator an, Backup-Ressourcen automatisch zu erstellen und zu verwalten.
Aktualisierte benutzerdefinierte Ressource anwenden:
oc apply -f bob-cr.yamlÜberprüfe, ob der Operator die geplante Backup-Infrastruktur erfolgreich erstellt hat.
CronJobs prüfen:
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backupErwartete Ausgabe:
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
bob-db-backup-cronjob 0 2 * * * False 0 <none> 1m
bob-keycloak-db-backup-cronjob 0 2 * * * False 0 <none> 1mPVCs prüfen:
oc get pvc -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backupBackup-Skript-ConfigMap prüfen:
oc get configmap postgres-backup-script -n <bob-instance-namespace>Bob-CR-Events prüfen:
oc describe bob bob-instance -n <bob-instance-namespace>IBM empfiehlt, nach der Erstkonfiguration ein manuelles Backup durchzuführen. Ein Test-Backup validiert die Konnektivität, Berechtigungen, Speicherkonfiguration und Backup-Ausführung, bevor man sich auf geplante Backups verlässt.
Einen einmaligen Backup-Job aus dem generierten CronJob erstellen:
# Manually 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>Validiere nach Abschluss des Backups, dass die Backup-Dateien erfolgreich erstellt wurden.
Überprüfe Folgendes:
- Der Job wurde erfolgreich abgeschlossen.
- Die Backup-Datei ist vorhanden.
- Die Metadatendatei ist vorhanden.
- Die Backup-Größe erscheint plausibel.
- In den Job-Protokollen erscheinen keine Fehler.
# Check job status
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# View backup logs
oc logs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup --tail=50
# Access backup files
oc run backup-check -n <bob-instance-namespace> --image=busybox --rm -it --restart=Never \
--overrides='{
"spec": {
"containers": [{
"name": "backup-check",
"image": "busybox",
"command": ["sh"],
"stdin": true,
"tty": true,
"volumeMounts": [{
"name": "backup",
"mountPath": "/backups"
}]
}],
"volumes": [{
"name": "backup",
"persistentVolumeClaim": {
"claimName": "bob-db-backup-pvc"
}
}]
}
}'
# Inside the pod:
ls -lh /backups/bob-db/
cat /backups/bob-db/backup_bob_*.sql.gz.metaEin erfolgreiches Backup erzeugt eine Ausgabe ähnlich der folgenden:
==========================================
PostgreSQL Backup Script
==========================================
Cluster: bob-db
Database: bob
Timestamp: 20260902_020000
Backup file: /backups/bob-db/backup_bob_20260902_020000.sql.gz
Retention: 7 backups
==========================================
Starting pg_dump...
✓ Backup completed successfully
Size: 1.2G
✓ Metadata file created
Cleaning up old backups...
Current backup count: 7
✓ Cleanup completed
==========================================
✓ Backup process completed successfully
==========================================Konfigurationsparameter
| Parameter | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
schedule | Ja | — | Cron-Zeitplanausdruck (UTC-Zeitzone). |
backupStorageClass | Ja | — | Storage-Klasse für Backup-PVCs. |
retention | Nein | 7 | Anzahl der beizubehaltenden Backups pro Cluster. |
pvcSize | Nein | 10Gi | PVC-Größe pro Cluster. |
postgresImage | Nein | Automatisch erkannt | PostgreSQL-Image für Backup-Jobs. |
clusters | Nein | Standard-Cluster | Liste der zu sichernden Cluster. |
Speichergrößenrichtlinien
So berechnest du den erforderlichen Speicher pro Cluster:
Required size = (database size × 0.3) × retention × 1.5
Example:
- Database: 5 GB
- Compression: 0.3 (70% compression)
- Retention: 7 backups
- Safety factor: 1.5
Required: 5 × 0.3 × 7 × 1.5 = 15.75 GB ≈ 20 GB| Datenbankgröße | Empfohlener PVC | Aufbewahrung |
|---|---|---|
| Weniger als 1 GB | 5 Gi | 7 |
| 1–5 GB | 10 Gi | 7 |
| 5–20 GB | 50 Gi | 7 |
| 20–50 GB | 100 Gi | 5 |
| Mehr als 50 GB | Benutzerdefiniert | 3–5 |