PITR hangi parçalarla çalışır?
PostgreSQL PITR için iki ana parça gerekir: belirli bir andaki base backup ve o andan sonra üretilen WAL kayıtları. Base backup tek başına sizi yalnızca yedeğin alındığı ana götürür. WAL kayıtları ise o andan sonra yapılan değişiklikleri tekrar oynatarak daha yakın bir zamana dönmenizi sağlar.
Bu yüzden “yedek alıyoruz” cümlesi PITR için yeterli değildir. WAL arşivinin düzenli çalışması, dosyaların kaybolmaması, saklama süresinin iş ihtiyacıyla uyumlu olması ve geri yükleme sırasında doğru sırayla okunabilmesi gerekir.
- Base backup geri dönüşün başlangıç noktasıdır.
- WAL arşivi başlangıçtan hedef zamana kadar olan değişiklikleri taşır.
- Restore target time, teknik saat değil iş kararına bağlı bir kesme noktasıdır.
- Tatbikat yapılmadıysa PITR sadece varsayımdır.
Restore target time nasıl seçilir?
En zor karar çoğu zaman komut değil, hangi ana dönüleceğidir. Yanlışlıkla silme işlemi 14:03:20’de yapıldıysa hedef zaman 14:03:19 gibi görünür. Ama uygulamada aynı dakikada geçerli siparişler, ödemeler veya kullanıcı işlemleri de olmuş olabilir.
Bu nedenle hedef zaman belirlenirken uygulama logu, denetim kaydı, kullanıcı etkisi ve iş tarafının kabul edebileceği veri kaybı birlikte okunmalıdır. PITR teknik olarak sizi bir ana yaklaştırır; hangi anın doğru olduğu iş kararıdır.
Hedef zaman karar notu
Olay: İlk fark edildiği zaman: Hatalı işlem zamanı: Önerilen restore_target_time: Bu zamandan sonra kaybedilecek geçerli işlemler: İş tarafı onayı: Geri dönüş yerine düzeltme sorgusu mümkün mü: Karar:
Geri yükleme açıldı diye iş bitmez
Restore başarıyla tamamlandığında PostgreSQL ayağa kalkabilir; ama bu, uygulamanın doğru veriyle çalıştığı anlamına gelmez. Kritik tablolar, beklenen kayıtlar, sequence değerleri, kullanıcı yetkileri ve uygulamanın temel okuma/yazma akışı kontrol edilmelidir.
Tatbikatın amacı yalnızca veritabanını açmak değildir. Amaç, ekiplerin olay günü hangi sırayla hareket edeceğini ve hangi kanıta bakacağını önceden görmesidir.
Restore sonrası temel doğrulama
select now() as restore_check_time; select count(*) from orders where created_at >= current_date - interval '1 day'; select max(id) from orders; select last_value from orders_id_seq; -- Uygulamanın kritik okuma/yazma akışı ayrı test edilmelidir.
PITR planını canlıya çıkmadan önce deneyin
PITR, ilk kez gerçek olay sırasında denenmemelidir. Küçük bir tatbikat ortamı açıp son base backup ve WAL arşiviyle belirli bir saate dönmek, hem teknik açıkları hem de ekip içi iletişim boşluklarını erkenden gösterir.
Tatbikat sonunda süre, eksik adımlar, manuel müdahaleler ve karar notları saklanmalıdır. Bir sonraki tatbikatın daha kısa ve daha sakin geçmesi böyle mümkün olur.