Ana içeriğe geç
Kesit SQL
Orta · Veritabanı Yönetimi (DBA)

Yedek zinciri: geri yükleme planı, RPO hesabı, kırık zincir

Yedek almak iş değil, geri dönebilmek iştir. Geçmiş kaydından hangi dosyaların, hangi sırayla gerektiğini çıkar.

Uygulamada aç, 10 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Temel

RPO, RTO, modeller ve yedek türleri Yedekleme ve geri yükleme dersinde. Burada olaydan sonra sorulan soru var: elimizde ne var, kaç dakikalık veri gider?

Motor sınırıBACKUP ve RESTORE burada çalışmaz. Görevlerde gerçek geçmiş tablosunun msdb.dbo.backupset kurgu kopyasını okursun. Hiçbir dosya yoktur, hiçbir şey geri yüklenmez.
ModelGünlük yedeğiKayıp penceresiBelirli ana dönüş
SIMPLEYokSon yedekten beri her şeyYok, yalnız yedeğin sonu
FULLGerekliNormalde yok; günlük sonu hasarlıysa son günlük yedeğinden beriVar
BULK_LOGGEDGerekliToplu işlem varsa o yedekten beriYok

Geri yükleme sırası

  1. Günlüğe erişiliyorsa son günlük (tail-log) yedeği: WITH NORECOVERY
  2. En son tam yedek
  3. En son fark yedeği, varsa: günlük sayısını azaltır
  4. Sonraki günlük yedekleri sırayla
  5. Kurtar: WITH RECOVERY
-- Çalışmaz, başvuru
USE master;
BACKUP LOG ilgaz_portal TO DISK = 'kuyruk.trn' WITH NORECOVERY;
RESTORE DATABASE ilgaz_portal FROM DISK = 'tam.bak'  WITH NORECOVERY;
RESTORE DATABASE ilgaz_portal FROM DISK = 'fark.bak' WITH NORECOVERY;
RESTORE LOG ilgaz_portal FROM DISK = 'g1.trn' WITH NORECOVERY;
RESTORE LOG ilgaz_portal FROM DISK = 'kuyruk.trn' WITH STOPAT = '2024-11-13 14:36:00', RECOVERY;
RESTORE VERIFYONLY FROM DISK = 'tam.bak' WITH CHECKSUM;
DoğrulamaRESTORE VERIFYONLY yedeğin okunabilir olduğunu sınar, veritabanını kurmaz. Yedeğin işe yaradığının tek kanıtı başka sunucuda düzenli geri yükleme denemesidir: süresi de RTO ölçümün olur.

msdb kaydını okumak

type: D tam, I fark, L günlük. first_lsn ilk kayıt, last_lsn sonraki kayıt: günlük zincirinde her yedeğin first_lsn değeri bir öncekinin last_lsn değerine eşit olmalı. is_copy_only 1 olan yedek normal zincire girmez, fark yedeğinin tabanı olmaz.

SELECT database_name, recovery_model, type, COUNT(*) AS adet, MAX(backup_finish_date) AS son
FROM msdb.dbo.backupset
GROUP BY database_name, recovery_model, type
ORDER BY database_name, type;

Senaryo

ilgaz_portal diski 13 Kasım 14:37'de bozuldu, günlük dosyasına ulaşılamıyor; son günlük yedeği alınamaz. RPO hedefi 15 dakika. Aşağıdaki görevlerde durumu çıkaracaksın.

Alıştırmalara geç (10)