Pianificazione dei backup
Configura e gestisci le pianificazioni automatiche dei backup PostgreSQL per IBM Bob, incluse le espressioni cron, le policy di retention, la sospensione e la ripresa, e il monitoraggio.
I backup pianificati automatizzano la protezione del database e riducono il rischio di perdita di dati. IBM Bob utilizza Kubernetes CronJob per eseguire i backup in base alla pianificazione definita nella configurazione di backup.
Per impostazione predefinita, i backup vengono eseguiti usando il Tempo Universale Coordinato (UTC).
Configurazione delle pianificazioni di backup
Configura una pianificazione di backup aggiornando il campo schedule nella ConfigMap di configurazione del backup. Il valore utilizza la sintassi cron standard e determina con quale frequenza vengono eseguiti i job di backup.
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 ...Comprensione della sintassi cron
Le pianificazioni cron sono composte da cinque campi che definiscono la frequenza di esecuzione.
| Campo | Valori | Caratteri speciali |
|---|---|---|
| Minuto | 0–59 | *, ,, -, / |
| Ora | 0–23 | *, ,, -, / |
| Giorno | 1–31 | *, ,, -, / |
| Mese | 1–12 | *, ,, -, / |
| Giorno della settimana | 0–7 (0 e 7 rappresentano domenica) | *, ,, -, / |
Scegli una pianificazione che sia in linea con i tuoi Recovery Point Objective (RPO) e i requisiti aziendali.
Considerazioni sulla pianificazione
Fuso orario (UTC)
Tutte le pianificazioni vengono eseguite nel fuso orario UTC. Pianifica gli orari in base all'ora UTC, non all'ora locale. Ad esempio:
0 2 * * *= 02:00 UTC = 04:00 CEST (estate) o 03:00 CET (inverno)
Backup simultanei
Tutti i cluster configurati eseguono il backup simultaneamente con la stessa pianificazione. Questo moltiplica il carico di I/O sullo storage e condivide la larghezza di banda di rete tra tutti i backup. Per scaglionare i backup negli ambienti con risorse limitate, crea più ConfigMap con pianificazioni diverse:
# 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-appDurata del backup
Considera la dimensione del database durante la pianificazione per evitare sovrapposizioni tra le esecuzioni di backup.
| Dimensione database | Durata prevista |
|---|---|
| Meno di 1 GB | 1–5 minuti |
| 1–5 GB | 5–15 minuti |
| 5–20 GB | 15–45 minuti |
| 20–50 GB | 45–120 minuti |
| Più di 50 GB | Più di 2 ore |
Ore di bassa attività
Pianifica i backup durante i periodi di basso utilizzo. Evita le ore di punta lavorative e monitora le prestazioni del database durante i backup.
Modifica della pianificazione
Per aggiornare la pianificazione di backup, modifica la ConfigMap di backup:
oc edit configmap bob-postgres-backup-config -n <bob-instance-namespace>Aggiorna il campo schedule e salva. Il controller rileva automaticamente la modifica e aggiorna i CronJob.
Verifica la pianificazione aggiornata:
oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> -o jsonpath='{.spec.schedule}'Sospensione e ripresa dei backup
Se devi mettere in pausa i backup durante la manutenzione senza rimuovere la configurazione di backup, sospendi i backup nella custom resource Bob:
oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
-p '{"spec":{"postgresBackup":{"suspend":true}}}'La sospensione dei backup preserva tutte le risorse di backup esistenti impedendo l'esecuzione di nuovi job.
Verifica che i CronJob siano sospesi:
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# The SUSPEND column should show "True"Riprendi i backup al termine della manutenzione:
oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
-p '{"spec":{"postgresBackup":{"suspend":false}}}'Monitoraggio dell'attività di backup
Il monitoraggio regolare aiuta a garantire che i job di backup continuino a essere eseguiti correttamente e che gli obiettivi di recovery possano essere raggiunti.
# 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=100Analizza tempestivamente i guasti per prevenire lacune nella copertura dei backup.
Gestione della retention dei backup
Le policy di retention determinano quante copie di backup vengono conservate prima che i backup più vecchi vengano rimossi automaticamente.
data:
config.yaml: |
# Number of backups to retain per cluster
retention: 7 # Keep last 7 backupsValori di retention più elevati migliorano la flessibilità di recovery ma richiedono storage aggiuntivo.
Comportamento della retention:
- I backup più vecchi vengono eliminati automaticamente dopo ogni backup riuscito.
- La retention è per cluster — ogni cluster mantiene il proprio conteggio.
- La pulizia avviene immediatamente dopo la creazione del backup.
Ad esempio, con retention: 7:
- Giorni 1–7: accumula 7 backup.
- Giorno 8: crea un nuovo backup, elimina il backup del giorno 1.
- Giorno 9: crea un nuovo backup, elimina il backup del giorno 2.
Attivazione di un backup manuale
Per attivare manualmente un backup al di fuori della pianificazione:
# 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 practice
- Pianifica i backup durante le ore di bassa attività (tipicamente dalle 02:00 alle 04:00 ora locale).
- Usa una pianificazione coerente per la prevedibilità.
- Ricorda il fuso orario UTC quando imposti le pianificazioni.
- Scagliona i backup se le risorse sono limitate.
- Monitora regolarmente il successo dei backup.
- Testa le procedure di ripristino mensilmente.
- Documenta la pianificazione e la motivazione.
- Configura gli avvisi per i guasti dei backup.