Uygulamada 3-2-1 yedekleme: gerçekte nasıl yapıyoruz
3 kopya, 2 farklı ortam, 1 tesis dışı. İşte tam olarak nasıl yaptığımız — ve bir şey bozulduğunda neler olduğu.
Test etmediğiniz yedek, yedek değildir. Bir dilektir.
3-2-1 kuralı 1987'den beri var ve neredeyse kimse onu doğru uygulamıyor. Biz uyguluyoruz — çünkü bir RAID yeniden oluşturma sırasında 18 aylık müşteri verisini neredeyse kaybediyorduk. O günden beri katıyız. 3 kopyamız: (1) canlı veritabanı replikası (ikinci düğüm, akışlı replikasyon), (2) yerel fiziksel diske günlük pg_dump, (3) günlük tesis dışı senkronizasyon (başka bir veri merkezi, rsync + zfs anlık görüntüsü). 2 ortamımız: hızlı geri yükleme için NVMe SSD, arşiv için SATA HDD. 1 tesis dışı kopyamız: farklı bir fiziksel lokasyon.
Haftalık geri yükleme testi
Her cuma saat 16:00'da otomatik bir geri yükleme testi çalışır: rastgele bir müşteri veritabanı bir test sunucusuna geri yüklenir, bir duman testi betiği çalışır (temel sorgular) ve sonuç yeşilse başarı kaydedilir. Kırmızı → ekip anında uyarılır. 14 ayda 3 geri yükleme sorunu ortaya çıktı — hiçbiri canlı veride değil, hepsi yedek bozulmasıydı. Üçü de 6 saat içinde çözüldü.
RPO ve RTO hedefleri
- 1. seviye (Netorigo Financial): RPO 15 dk, RTO 2 saat
- 2. seviye (ERP, Logistics): RPO 1 saat, RTO 4 saat
- 3. seviye (pazarlama, bloglar): RPO 24 saat, RTO 24 saat
- Aylık felaket kurtarma tatbikatı — bir test sistemini gerçekten yıkıp yeniden kuruyoruz
- Tatbikat tam bir gün değil, 30 dakika sürer — tutturulamıyorsa yedekleme iyi değildir