Menjadwalkan backup
Konfigurasikan dan kelola jadwal backup PostgreSQL otomatis untuk IBM Bob, termasuk ekspresi cron, kebijakan retensi, suspend dan resume, serta pemantauan.
Backup terjadwal mengotomatiskan perlindungan database dan mengurangi risiko kehilangan data. IBM Bob menggunakan Kubernetes CronJob untuk mengeksekusi backup sesuai jadwal yang didefinisikan dalam konfigurasi backup.
Secara default, backup berjalan menggunakan Coordinated Universal Time (UTC).
Mengonfigurasi jadwal backup
Konfigurasikan jadwal backup dengan memperbarui field schedule dalam ConfigMap konfigurasi backup. Nilainya menggunakan sintaks cron standar dan menentukan seberapa sering pekerjaan backup berjalan.
apiVersion: v1
kind: ConfigMap
metadata:
name: bob-postgres-backup-config
namespace: <bob-instance-namespace>
labels:
bob.ibm.com/backup-config: "true"
data:
config.yaml: |
# Jadwal backup dalam format cron (timezone UTC)
schedule: "0 2 * * *" # Setiap hari pukul 02:00 UTC
# ... konfigurasi lainnya ...Memahami sintaks cron
Jadwal cron terdiri dari lima field yang mendefinisikan frekuensi eksekusi.
| Field | Nilai | Karakter khusus |
|---|---|---|
| Menit | 0–59 | *, ,, -, / |
| Jam | 0–23 | *, ,, -, / |
| Hari | 1–31 | *, ,, -, / |
| Bulan | 1–12 | *, ,, -, / |
| Hari minggu | 0–7 (0 dan 7 mewakili Minggu) | *, ,, -, / |
Pilih jadwal yang selaras dengan recovery point objective (RPO) dan kebutuhan bisnis.
Pertimbangan penjadwalan
Timezone (UTC)
Semua jadwal berjalan dalam timezone UTC. Rencanakan jadwal berdasarkan waktu UTC, bukan waktu lokal. Contohnya:
0 2 * * *= 02:00 UTC = 04:00 CEST (musim panas) atau 03:00 CET (musim dingin)
Backup bersamaan
Semua cluster yang dikonfigurasi melakukan backup secara bersamaan pada jadwal yang sama. Ini melipatgandakan beban I/O penyimpanan dan berbagi bandwidth jaringan di seluruh backup. Untuk menjadwalkan backup secara bertahap pada lingkungan dengan sumber daya terbatas, buat beberapa ConfigMap dengan jadwal berbeda:
# ConfigMap 1: bob-db pukul 02:00
---
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 pukul 03:00
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-appDurasi backup
Pertimbangkan ukuran database saat menjadwalkan untuk menghindari tumpang tindih antara proses backup.
| Ukuran database | Perkiraan durasi |
|---|---|
| Kurang dari 1 GB | 1–5 menit |
| 1–5 GB | 5–15 menit |
| 5–20 GB | 15–45 menit |
| 20–50 GB | 45–120 menit |
| Lebih dari 50 GB | 2+ jam |
Jam sepi
Jadwalkan backup selama periode penggunaan rendah. Hindari jam sibuk bisnis dan pantau performa database selama backup.
Mengubah jadwal
Untuk memperbarui jadwal backup, edit ConfigMap backup:
oc edit configmap bob-postgres-backup-config -n <bob-instance-namespace>Perbarui field schedule dan simpan. Controller secara otomatis mendeteksi perubahan dan memperbarui CronJob.
Verifikasi jadwal yang diperbarui:
oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> -o jsonpath='{.spec.schedule}'Menangguhkan dan melanjutkan backup
Jika perlu menghentikan backup sementara selama pemeliharaan tanpa menghapus konfigurasi backup, tangguhkan backup dalam custom resource Bob:
oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
-p '{"spec":{"postgresBackup":{"suspend":true}}}'Menangguhkan backup mempertahankan semua resource backup yang ada sambil mencegah pekerjaan baru berjalan.
Verifikasi bahwa CronJob ditangguhkan:
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# Kolom SUSPEND harus menampilkan "True"Lanjutkan backup setelah pemeliharaan selesai:
oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
-p '{"spec":{"postgresBackup":{"suspend":false}}}'Memantau aktivitas backup
Pemantauan rutin membantu memastikan pekerjaan backup terus berjalan dengan sukses dan recovery objective dapat terpenuhi.
# Daftar pekerjaan backup terbaru
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup \
--sort-by=.metadata.creationTimestamp
# Periksa status CronJob
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# Lihat waktu penjadwalan terakhir
oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> \
-o jsonpath='{.status.lastScheduleTime}'
# Lihat log backup
oc logs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup --tail=100Selidiki kegagalan dengan segera untuk mencegah kesenjangan dalam cakupan backup.
Mengelola retensi backup
Kebijakan retensi menentukan berapa banyak salinan backup yang disimpan sebelum backup lama secara otomatis dihapus.
data:
config.yaml: |
# Jumlah backup yang disimpan per cluster
retention: 7 # Simpan 7 backup terakhirNilai retensi yang lebih tinggi meningkatkan fleksibilitas pemulihan tetapi memerlukan penyimpanan tambahan.
Perilaku retensi:
- Backup tertua secara otomatis dihapus setelah setiap backup berhasil.
- Retensi per cluster — setiap cluster mempertahankan hitungannya sendiri.
- Pembersihan terjadi segera setelah backup dibuat.
Misalnya, dengan retention: 7:
- Hari 1–7: Akumulasikan 7 backup.
- Hari 8: Buat backup baru, hapus backup hari 1.
- Hari 9: Buat backup baru, hapus backup hari 2.
Memicu backup manual
Untuk memicu backup secara manual di luar jadwal:
# Buat job dari CronJob
oc create job --from=cronjob/bob-db-backup-cronjob \
manual-backup-$(date +%s) -n <bob-instance-namespace>
# Pantau job
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# Lihat log job
oc logs -n <bob-instance-namespace> job/manual-backup-<timestamp>Praktik terbaik
- Jadwalkan backup selama jam sepi (biasanya pukul 02:00–04:00 waktu lokal).
- Gunakan jadwal yang konsisten untuk prediktabilitas.
- Ingat timezone UTC saat menetapkan jadwal.
- Jadwalkan backup secara bertahap jika sumber daya terbatas.
- Pantau keberhasilan backup secara rutin.
- Uji prosedur pemulihan setiap bulan.
- Dokumentasikan jadwal dan alasannya.
- Siapkan alert untuk kegagalan backup.