Önce iki soru: RPO ve RTO
- RPO (Recovery Point Objective): En fazla ne kadar veri kaybını kabul edebiliriz? (ör. 15 dakika)
- RTO (Recovery Time Objective): Sistem en geç ne kadar sürede ayağa kalkmalı? (ör. 1 saat)
Yedekleme stratejisi bu iki sayıdan türetilir. “Her gece tam yedek” stratejisinin RPO'su 24 saattir.
Recovery model
| Model | Günlük yedeği | Belirli bir ana dönüş | Kullanım |
|---|---|---|---|
| SIMPLE | Yok; günlük kendiliğinden temizlenir | Hayır, yalnızca son yedeğe | Test, geliştirme, kaybı tolere edilebilen veri |
| FULL | Var ve zorunlu | Evet (point-in-time) | Canlı sistemler |
| BULK_LOGGED | Var | Kısmen | Büyük toplu yüklemeler sırasında geçici |
Yedek türleri
- Tam (full): Veritabanının tamamı.
- Fark (differential): Son tam yedekten beri değişen kapsamlar.
- Günlük (log): Son günlük yedeğinden beri günlük kayıtları; zincir oluşturur.
BACKUP DATABASE anadolu TO DISK = N'D:\yedek\anadolu_full.bak' WITH COMPRESSION, CHECKSUM; BACKUP DATABASE anadolu TO DISK = N'D:\yedek\anadolu_diff.bak' WITH DIFFERENTIAL, COMPRESSION, CHECKSUM; BACKUP LOG anadolu TO DISK = N'D:\yedek\anadolu_1015.trn' WITH COMPRESSION, CHECKSUM;
Geri yükleme sırası
Örnek strateji: Pazar 00:00 tam, her gece fark, her 15 dakikada günlük yedeği. Çarşamba 10:20'de bir tablo yanlışlıkla silindi; 10:19'a dönmek istiyoruz:
Veritabanı hâlâ ayaktaysa ilk iş son günlük yedeği (tail-log backup) almaktır: son günlük yedeğinden sonraki işlemler başka yerde yoktur, geri yükleme başlayınca kaybolur. WITH NORECOVERY veritabanını geri yüklemeye hazır duruma alır; dosyalar hasarlıysa NO_TRUNCATE eklenir.
BACKUP LOG anadolu TO DISK = N'...tail.trn' WITH NORECOVERY; -- önce son günlük yedeği
RESTORE DATABASE anadolu FROM DISK = N'...full.bak' WITH NORECOVERY; -- Pazar tam
RESTORE DATABASE anadolu FROM DISK = N'...diff_sali.bak' WITH NORECOVERY; -- son fark (Salı gecesi)
RESTORE LOG anadolu FROM DISK = N'...0000.trn' WITH NORECOVERY; -- farktan sonraki tüm günlükler, sırayla
-- ...
RESTORE LOG anadolu FROM DISK = N'...1030.trn'
WITH STOPAT = '2025-03-12 10:19:00', RECOVERY; -- belirli ana kadar, sonra aç
NORECOVERY, veritabanını sonraki yedekleri kabul edecek şekilde açık bırakır; son adımda RECOVERY ile kullanıma açılır.
| SQL türü | Araçlar |
|---|---|
| PostgreSQL | pg_dump (mantıksal), pg_basebackup + WAL arşivi (fiziksel, belirli ana dönüş) |
| MySQL | mysqldump, binlog ile belirli ana dönüş; büyük sistemlerde Percona XtraBackup |
| Oracle | RMAN (Recovery Manager) |