Backup dan pemulihan
Konfigurasikan, kelola, dan pulihkan backup database PostgreSQL untuk IBM Bob on-premises guna melindungi data aplikasi dan mendukung skenario pemulihan.
IBM Bob on-premises menggunakan model konfigurasi backup berbasis ConfigMap yang memisahkan operasi backup dari custom resource (CR) Bob. Pekerjaan backup dijadwalkan dan dikelola secara otomatis melalui Kubernetes CronJob, dengan kebijakan retensi dan pengaturan penyimpanan yang dapat dikonfigurasi.
Backup PostgreSQL membuat salinan yang dapat dipulihkan dari database IBM Bob dan Keycloak. Backup ini dapat digunakan untuk memulihkan data setelah pemadaman, memigrasikan data antar cluster, atau mengembalikan database ke kondisi yang diketahui baik sebelumnya.
IBM Bob mendukung backup terjadwal otomatis dan eksekusi backup manual.
Fitur utama
Penjadwalan otomatis
Backup dieksekusi secara otomatis menggunakan Kubernetes CronJob. Jadwal backup didefinisikan menggunakan ekspresi cron standar, memungkinkanmu mengonfigurasi frekuensi backup berdasarkan kebutuhan operasional dan pemulihan.
Manajemen retensi otomatis
Retensi backup dikelola secara otomatis untuk membantu mengontrol konsumsi penyimpanan. Setelah setiap backup berhasil, backup lama yang melebihi batas retensi yang dikonfigurasi akan dihapus. Secara default, sistem menyimpan tujuh backup terbaru per cluster.
Dukungan backup multi-cluster
Satu konfigurasi backup dapat mengelola backup untuk beberapa cluster PostgreSQL. Operator membuat dan memelihara resource backup khusus untuk setiap cluster yang dikonfigurasi, memungkinkan manajemen backup terpusat di seluruh deployment.
Deteksi otomatis image PostgreSQL
Sistem backup dapat secara otomatis mendeteksi dan menggunakan container image PostgreSQL dari cluster database yang sedang berjalan. Ini menghilangkan kebutuhan untuk menentukan versi image secara manual dan membantu memastikan kompatibilitas antara pekerjaan backup dan lingkungan database target.
Konfigurasi berbasis ConfigMap
Pengaturan backup disimpan dalam ConfigMap khusus, terpisah dari custom resource (CR) Bob. Pemisahan ini menyederhanakan manajemen operasional dan memungkinkan jadwal backup, pengaturan penyimpanan, dan kebijakan retensi dimodifikasi secara independen dari konfigurasi deployment aplikasi.
Kompresi otomatis
Dump database secara otomatis dikompresi menggunakan gzip sebelum disimpan. Kompresi mengurangi kebutuhan penyimpanan dan membantu mengoptimalkan retensi backup dalam kapasitas penyimpanan yang tersedia.
Pelacakan metadata backup
Setiap backup menyertakan file metadata yang berisi detail seperti timestamp backup, nama database, host, port, dan ukuran backup. Informasi ini membantu kamu memvalidasi integritas backup, melacak riwayat backup, dan mengidentifikasi backup yang tepat untuk pemulihan.
Apa yang disertakan dalam backup
Backup database merekam semua objek dan data database PostgreSQL yang diperlukan untuk merekonstruksi lingkungan database.
Backup meliputi:
- Database PostgreSQL (jika dikonfigurasi):
- Database Bob (
bob) — database aplikasi utama, termasuk akun pengguna dan informasi autentikasi, proyek dan percakapan, hasil analisis kode, serta konfigurasi dan pengaturan khusus aplikasi. - Database Keycloak (
app) — database Keycloak yang digunakan untuk autentikasi dan manajemen identitas, termasuk kredensial pengguna dan informasi profil, konfigurasi OAuth dan OpenID Connect (OIDC), pengaturan realm, serta konfigurasi client dan identity provider.
- Database Bob (
- Skema database — semua objek yang diperlukan untuk membuat ulang struktur database, termasuk tabel, indeks, dan constraint; stored procedure dan fungsi; view dan trigger; serta sequence dan tipe kustom.
- Data database — proses backup menggunakan
pg_dumpuntuk membuat dump database PostgreSQL lengkap, merekam semua data yang tersimpan dalam tabel database, semua baris dan record, serta binary large object (BLOB) jika ada.
Apa yang tidak disertakan dalam backup
Backup PostgreSQL tidak merekam resource Kubernetes atau konfigurasi aplikasi.
Item-item berikut harus dikelola secara terpisah:
- ConfigMap
- Secret
- Deployment dan Service
- Resource Ingress
- Log aplikasi
- Data model dan embedding
- Persistent volume non-database
Arsitektur backup
IBM Bob menggunakan resource native Kubernetes untuk membuat dan mengelola backup database.
| Komponen | Tujuan |
|---|---|
| Custom resource Bob | Mengaktifkan atau menangguhkan operasi backup |
| Backup ConfigMap | Mendefinisikan jadwal, penyimpanan, retensi, dan database target |
| CronJob | Mengeksekusi backup terjadwal |
| Persistent volume claim | Menyimpan file backup |
| Skrip backup | Membuat backup dan mengelola retensi |
Proses backup mengikuti alur kerja ini:
Bob CR (enabled: true) → Penemuan ConfigMap → Rekonsiliasi Controller → Eksekusi CronJob- Controller menemukan ConfigMap dengan label
bob.ibm.com/backup-config: "true". - Controller membuat CronJob dan PVC untuk setiap cluster yang dikonfigurasi.
- CronJob dieksekusi sesuai jadwal, menjalankan
pg_dumpuntuk membuat dump SQL terkompresi. - Skrip backup mengelola retensi, secara otomatis menghapus backup lama.
- Setiap backup menyertakan file metadata dengan timestamp, ukuran, dan info database.
Ketika backup diaktifkan, operator secara otomatis menemukan konfigurasi backup, membuat resource yang diperlukan, dan menjadwalkan pekerjaan backup sesuai frekuensi yang dikonfigurasi.
Struktur file backup
File backup disimpan pada persistent volume claim (PVC) khusus. Setiap cluster PostgreSQL yang dikonfigurasi memiliki direktori sendiri yang berisi file backup dan metadata terkait.
/backups/
├── bob-db/
│ ├── backup_bob_20260902_020000.sql.gz
│ └── backup_bob_20260902_020000.sql.gz.meta
└── bob-keycloak-db/
├── backup_app_20260902_020000.sql.gz
└── backup_app_20260902_020000.sql.gz.metaProses backup menghasilkan file berikut untuk setiap backup:
.sql.gz— dump SQL terkompresi (format plain text, dikompresi gzip).sql.gz.meta— file metadata dengan timestamp, nama database, ukuran, host, dan port
Kemampuan pemulihan
IBM Bob mendukung berbagai skenario pemulihan untuk membantu kamu memulihkan data, mengatasi kegagalan, dan memigrasikan database antar lingkungan:
- Pemulihan database penuh — pulihkan seluruh database PostgreSQL dari file backup.
- Pemulihan point-in-time — pulihkan database ke instance backup tertentu dengan memilih file backup berdasarkan timestampnya.
- Migrasi lintas cluster — pulihkan backup ke cluster PostgreSQL yang berbeda, memungkinkan migrasi database antar lingkungan.