Yedeklemeleri zamanlama
Cron ifadeleri, saklama ilkeleri, askıya alma ve devam ettirme ile izleme dahil olmak üzere IBM Bob için otomatik PostgreSQL yedekleme zamanlamalarını yapılandırın ve yönetin.
Zamanlanmış yedeklemeler veritabanı korumasını otomatikleştirir ve veri kaybı riskini azaltır. IBM Bob, yedekleme yapılandırmasında tanımlanan zamanlamaya göre yedeklemeleri yürütmek için Kubernetes CronJob'larını kullanır.
Varsayılan olarak, yedeklemeler Eşgüdümlü Evrensel Zaman (UTC) kullanılarak çalışır.
Yedekleme zamanlamalarını yapılandırma
Yedekleme yapılandırma ConfigMap'indeki schedule alanını güncelleyerek bir yedekleme zamanlaması yapılandırın. Değer, standart cron sözdizimini kullanır ve yedekleme işlerinin ne sıklıkla çalışacağını belirler.
apiVersion: v1
kind: ConfigMap
metadata:
name: bob-postgres-backup-config
namespace: <bob-instance-namespace>
labels:
bob.ibm.com/backup-config: "true"
data:
config.yaml: |
# Cron formatında yedekleme zamanlaması (UTC saat dilimi)
schedule: "0 2 * * *" # Her gün 02:00 UTC
# ... diğer yapılandırmalar ...Cron sözdizimini anlama
Cron zamanlamaları, yürütme sıklığını tanımlayan beş alandan oluşur.
| Alan | Değerler | Özel karakterler |
|---|---|---|
| Dakika | 0–59 | *, ,, -, / |
| Saat | 0–23 | *, ,, -, / |
| Gün | 1–31 | *, ,, -, / |
| Ay | 1–12 | *, ,, -, / |
| Haftanın günü | 0–7 (0 ve 7 Pazar gününü temsil eder) | *, ,, -, / |
Kurtarma noktası hedefleriniz (RPO) ve iş gereksinimlerinizle uyumlu bir zamanlama seçin.
Zamanlama hususları
Saat dilimi (UTC)
Tüm zamanlamalar UTC saat diliminde çalışır. Zamanlamaları yerel saatinize göre değil, UTC saatine göre planlayın. Örneğin:
0 2 * * *= 02:00 UTC = 04:00 CEST (yaz saati) veya 03:00 CET (kış saati)
Eşzamanlı yedeklemeler
Yapılandırılan tüm kümeler aynı zamanlamada eşzamanlı olarak yedeklenir. Bu, depolama G/Ç (I/O) yükünü çarpar ve ağ bant genişliğini tüm yedeklemeler arasında paylaştırır. Kaynak kısıtlı ortamlar için yedeklemeleri kademelendirmek amacıyla farklı zamanlamalara sahip birden fazla ConfigMap oluşturun:
# ConfigMap 1: Saat 02:00'de bob-db
---
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: Saat 03:00'te keycloak-db
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-appYedekleme süresi
Yedekleme çalıştırmaları arasında çakışmayı önlemek için zamanlama yaparken veritabanı boyutunu göz önünde bulundurun.
| Veritabanı boyutu | Beklenen süre |
|---|---|
| 1 GB'den az | 1–5 dakika |
| 1–5 GB | 5–15 dakika |
| 5–20 GB | 15–45 dakika |
| 20–50 GB | 45–120 dakika |
| 50 GB'den fazla | 2+ saat |
Yoğun olmayan saatler
Yedeklemeleri kullanımın düşük olduğu dönemlere zamanlayın. Yoğun iş saatlerinden kaçının ve yedeklemeler sırasında veritabanı performansını izleyin.
Zamanlamayı değiştirme
Yedekleme zamanlamasını güncellemek için yedekleme ConfigMap'ini düzenleyin:
oc edit configmap bob-postgres-backup-config -n <bob-instance-namespace>schedule alanını güncelleyin ve kaydedin. Controller değişikliği otomatik olarak algılar ve CronJob'ları günceller.
Güncellenen zamanlamayı doğrulayın:
oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> -o jsonpath='{.spec.schedule}'Yedeklemeleri askıya alma ve devam ettirme
Yedekleme yapılandırmasını kaldırmadan bakım sırasında yedeklemeleri duraklatmanız gerekiyorsa, Bob özel kaynağında yedeklemeleri askıya alın:
oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
-p '{"spec":{"postgresBackup":{"suspend":true}}}'Yedeklemelerin askıya alınması, yeni işlerin çalışmasını engellerken mevcut tüm yedekleme kaynaklarını korur.
CronJob'ların askıya alındığını doğrulayın:
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# SUSPEND sütununda "True" görünmelidirBakım tamamlandıktan sonra yedeklemeleri devam ettirin:
oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
-p '{"spec":{"postgresBackup":{"suspend":false}}}'Yedekleme etkinliğini izleme
Düzenli izleme, yedekleme işlerinin başarıyla çalışmaya devam etmesini ve kurtarma hedeflerinin karşılanabilmesini sağlamaya yardımcı olur.
# Son yedekleme işlerini listeleyin
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup \
--sort-by=.metadata.creationTimestamp
# CronJob durumunu kontrol edin
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# Son zamanlanan zamanı görüntüleyin
oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> \
-o jsonpath='{.status.lastScheduleTime}'
# Yedekleme loglarını görüntüleyin
oc logs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup --tail=100Yedekleme kapsamındaki boşlukları önlemek için hataları derhal inceleyin.
Yedekleme saklamayı (retention) yönetme
Saklama ilkeleri, daha eski yedekler otomatik olarak silinmeden önce kaç yedekleme kopyasının saklanacağını belirler.
data:
config.yaml: |
# Küme başına saklanacak yedekleme sayısı
retention: 7 # Son 7 yedeklemeyi saklaDaha yüksek saklama değerleri kurtarma esnekliğini artırır ancak ek depolama alanı gerektirir.
Saklama davranışı:
- En eski yedekler her başarılı yedeklemenin ardından otomatik olarak silinir.
- Saklama küme başınadır — her küme kendi sayımını tutar.
- Temizleme işlemi yedek oluşturulduktan hemen sonra gerçekleşir.
Örneğin, retention: 7 ile:
- 1–7. Günler: 7 yedekleme birikir.
-
- Gün: Yeni bir yedek oluşturulur, 1. günün yedeği silinir.
-
- Gün: Yeni bir yedek oluşturulur, 2. günün yedeği silinir.
Manuel bir yedekleme tetikleme
Zamanlama dışında manuel olarak bir yedekleme tetiklemek için:
# CronJob'tan 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>En iyi uygulamalar
- Yedeklemeleri yoğun olmayan saatlere zamanlayın (genellikle yerel saatle 02:00–04:00 arası).
- Öngörülebilirlik için tutarlı bir zamanlama kullanın.
- Zamanlamaları ayarlarken UTC saat dilimini unutmayın.
- Kaynaklar kısıtlıysa yedeklemeleri kademelendirin.
- Yedekleme başarısını düzenli olarak izleyin.
- Geri yükleme prosedürlerini aylık olarak test edin.
- Zamanlamayı ve gerekçesini belgeleyin.
- Yedekleme hataları için uyarılar (alerts) ayarlayın.