Yedekleme gerçekleştirme
IBM Bob veritabanları için otomatik PostgreSQL yedeklemelerini yapılandırın ve yedekleme işlerinin düzgün çalıştığını doğrulayın.
IBM Bob veritabanları için otomatik PostgreSQL yedeklemelerini yapılandırmak üzere bu prosedürü kullanın. Yedeklemeler yapılandırıldıktan sonra operatör, zamanlanmış yedekleme işlerini otomatik olarak oluşturur ve yönetir.
Başlamadan önce
Yedeklemeleri yapılandırmadan önce aşağıdaki önkoşulları doğrulayın:
- Kümede desteklenen bir storage class mevcuttur.
- Veritabanı kimlik bilgisi secret'ları mevcuttur.
- Yeterli depolama kapasitesi ayrılmıştır.
- PostgreSQL kümeleri çalışır durumda ve sağlıklıdır.
Yedeklemeleri yapılandırın ve etkinleştirin
Yedekleme zamanlamasını, saklama ilkesini, depolama yapılandırmasını ve hedef veritabanı kümelerini tanımlayan bir yedekleme ConfigMap'i oluşturun.
Operatör, şu etiketle etiketlenmiş tüm ConfigMap'leri otomatik olarak bulur:
bob.ibm.com/backup-config: "true"Yapılandırma dosyasını oluşturun:
apiVersion: v1
kind: ConfigMap
metadata:
name: bob-postgres-backup-config
namespace: <bob-instance-namespace>
labels:
bob.ibm.com/backup-config: "true" # Gerekli
app.kubernetes.io/name: bob
app.kubernetes.io/component: postgres-backup
data:
config.yaml: |
# Cron formatında yedekleme zamanlaması (UTC saat dilimi)
schedule: "0 2 * * *"
# Yedekleme PVC'leri için storage class
backupStorageClass: "nfs-storage"
# Küme başına saklanacak yedekleme sayısı (varsayılan: 7)
retention: 7
# Küme başına yedekleme PVC boyutu (varsayılan: 10Gi)
pvcSize: "10Gi"
# İsteğe bağlı: PostgreSQL image geçersiz kılma
# Belirtilmezse, çalışan kümelerden image otomatik olarak algılanır
# postgresImage: "icr.io/cpopen/ibm-postgresql:16.4"
# Yedeklenecek kümeler
# Belirtilmezse, varsayılan olarak bob-db ve bob-keycloak-db kullanılır
clusters:
- name: bob-db
database: bob
secretName: bob-db-app
- name: bob-keycloak-db
database: app # Not: Keycloak veritabanının adı "app"tir
secretName: bob-keycloak-db-appConfigMap'i uygulayın:
oc apply -f backup-config.yamlBob özel kaynağında (custom resource) yedekleme yönetimini etkinleştirin:
apiVersion: bob.ibm.com/v1beta1
kind: Bob
metadata:
name: bob-instance
namespace: <bob-instance-namespace>
spec:
postgresBackup:
enabled: true
suspend: falseBu ayar, operatöre yedekleme kaynaklarını otomatik olarak oluşturmasını ve yönetmesini bildirir.
Güncellenen özel kaynağı uygulayın:
oc apply -f bob-cr.yamlOperatörün zamanlanmış yedekleme altyapısını başarıyla oluşturduğunu doğrulayın.
CronJob'ları kontrol edin:
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backupBeklenen çıktı:
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> 1mPVC'leri kontrol edin:
oc get pvc -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backupYedekleme script'i ConfigMap'ini kontrol edin:
oc get configmap postgres-backup-script -n <bob-instance-namespace>Bob CR event'lerini kontrol edin:
oc describe bob bob-instance -n <bob-instance-namespace>IBM, ilk yapılandırmadan sonra manuel bir yedekleme çalıştırmanızı önerir. Test amaçlı bir yedekleme, zamanlanmış yedeklemelere güvenmeden önce bağlantıyı, izinleri, depolama yapılandırmasını ve yedekleme yürütmesini doğrular.
Oluşturulan CronJob'tan tek seferlik bir yedekleme işi (job) oluşturun:
# CronJob'tan manuel olarak bir job oluşturun
oc create job --from=cronjob/bob-db-backup-cronjob manual-backup-$(date +%s) -n <bob-instance-namespace>
# Job'ı izleyin
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# Job loglarını görüntüleyin
oc logs -n <bob-instance-namespace> job/manual-backup-<timestamp>Yedekleme tamamlandıktan sonra, yedekleme dosyalarının başarıyla oluşturulduğunu doğrulayın.
Aşağıdakileri doğrulayın:
- Job başarıyla tamamlandı.
- Yedekleme dosyası mevcut.
- Meta veri dosyası mevcut.
- Yedekleme boyutu makul görünüyor.
- Job loglarında hiçbir hata görünmüyor.
# Job durumunu kontrol edin
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# Yedekleme loglarını görüntüleyin
oc logs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup --tail=50
# Yedekleme dosyalarına erişin
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"
}
}]
}
}'
# Pod içinde:
ls -lh /backups/bob-db/
cat /backups/bob-db/backup_bob_*.sql.gz.metaBaşarılı bir yedekleme şuna benzer bir çıktı üretir:
==========================================
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
==========================================Yapılandırma parametreleri
| Parametre | Gerekli | Varsayılan | Açıklama |
|---|---|---|---|
schedule | Evet | — | Cron zamanlama ifadesi (UTC saat dilimi). |
backupStorageClass | Evet | — | Yedekleme PVC'leri için storage class. |
retention | Hayır | 7 | Küme başına saklanacak yedekleme sayısı. |
pvcSize | Hayır | 10Gi | Küme başına PVC boyutu. |
postgresImage | Hayır | Otomatik algılanır | Yedekleme işleri için PostgreSQL image'ı. |
clusters | Hayır | Varsayılan kümeler | Yedeklenecek kümelerin listesi. |
Depolama boyutlandırma yönergeleri
Küme başına gereken depolama alanını hesaplamak için:
Gereken boyut = (veritabanı boyutu × 0.3) × saklama × 1.5
Örnek:
- Veritabanı: 5 GB
- Sıkıştırma: 0.3 (%70 sıkıştırma)
- Saklama (retention): 7 yedekleme
- Güvenlik faktörü: 1.5
Gereken: 5 × 0.3 × 7 × 1.5 = 15.75 GB ≈ 20 GB| Veritabanı boyutu | Önerilen PVC | Saklama |
|---|---|---|
| 1 GB'den az | 5 Gi | 7 |
| 1–5 GB | 10 Gi | 7 |
| 5–20 GB | 50 Gi | 7 |
| 20–50 GB | 100 Gi | 5 |
| 50 GB'den fazla | Özel | 3–5 |