WAL arşivleme ve PITR ile felaketten saniyeler öncesine nasıl dönerim?
Soru
Bir siber saldırı veya hatalı kod (örn. `WHERE` koşulu unutulmuş bir `DELETE`) sonucu üretim DB'miz tahrif oldu. Gece alınan SQL backup'ına dönersek 18 saatlik veri kaybımız olur. DB mimarisinde WAL loglarının sürekli S3'e arşivlenmesi ve PITR altyapısı, felaket anından 3 saniye öncesine dönmemizi tam olarak nasıl sağlar? Süreci mimari olarak açıkla.
Cevap
Kısa cevap: Gecelik dump’lar 18 saatlik bir RPO (kabul edilebilir veri kaybı penceresi) demek — üretimde bu kabul edilemez. PITR (Point-in-Time Recovery) bu boşluğu kapatır ve seni hatalı ifadenin saniyeler öncesine geri götürür.
Mantık şu: bir base backup + o andan itibaren her değişikliğin sıralı kaydı (WAL) varsa, istediğin tam ana kadar “ileri sararak” geçmişi yeniden inşa edebilirsin.
- Periyodik base backup al. Düzenli aralıklarla tutarlı bir tam yedek (base backup) al. Bu, kurtarmanın başlangıç noktasıdır; WAL replay’i bu temelin üstüne uygulanır.
- WAL’ı sürekli S3’e arşivle. Write-Ahead Log, DB’deki her değişikliği sırayla yazar.
archive_command(ya da pgBackRest/WAL-G) ile bu WAL segmentlerini üretildikçe S3’e at. Böylece base backup ile şu an arasındaki her işlemin kaydı dışarıda, güvende durur. recovery_target_timeile tam ana kadar replay et. Kurtarırken base backup’ı geri yükle, sonra WAL’ı belirlediğin hedefe kadar oynat:recovery_target_time = '...hatalı DELETE'den 3 saniye öncesi'. Postgres tam o noktada durur — yıkıcı ifadenin hemen öncesinde. “Felaketten bir an önce”ye böyle inersin, dün geceye değil.- Restore’u mutlaka prova et. WAL arşivleme açık ve test edilmiş olmalı, base backup’lar bir takvime bağlı olmalı. En kritiği: kurtarmayı periyodik prova et. Doğrulanmamış bir yedek, Schrödinger’in yedeğidir — açana kadar çalışıp çalışmadığını bilmezsin. Bunu elle yazma; pgBackRest ya da WAL-G kullan.
Sonuç: Base backup + sürekli WAL arşivleme (S3’e) + test edilmiş PITR — 18 saatlik kaybı saniyelere indirir. Üretim DB’sinde sadece gecelik dump’a güvenmek, bir gün gelecek hatalı bir DELETE’te seni saatlerce veri kaybıyla baş başa bırakır; PITR’ı bugünden kur ve restore’u prova et.
İlgili Yazılar
Yorumlar
Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.