SQL Server Atlanan Yedek: Full ve Log Yedek Zincirini Kontrol Etme
Son başarılı full/differential/log yedeklerini ve SQL Agent job hatalarını kontrol eder; RPO açığını kapatırken yedek zincirini bozmadan yeni yedek alır.
Operasyonel Güvenlik ve Risk Uyarısı
Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.
1. Belirti / Symptom
- M33'te full yedek yaşı hedefi aşıyor, log yedeği aralığı uzuyor veya SQL Agent backup job başarısız.
- `msdb.dbo.backupset` içinde beklenen başarılı yedek kaydı yok. **Bu yalnızca o instance'ın msdb geçmişidir**; harici/managed yedekleri dışlayabilir.
2. Etki / Impact
Felaket halinde son sağlam yedeğe kadar veri kaybı (RPO) ve kurtarma süresinde artış (RTO). FULL/BULK_LOGGED modelde log yedeği alınmıyorsa transaction log büyüyebilir; `mssql-transaction-log-full` senaryosunu tetikleyebilir.
3. Teşhis / Diagnosis
SELECT d.name, d.recovery_model_desc,
MAX(CASE WHEN b.type = 'D' THEN b.backup_finish_date END) AS last_full,
MAX(CASE WHEN b.type = 'I' THEN b.backup_finish_date END) AS last_diff,
MAX(CASE WHEN b.type = 'L' THEN b.backup_finish_date END) AS last_log
FROM sys.databases AS d
LEFT JOIN msdb.dbo.backupset AS b ON b.database_name = d.name
WHERE d.database_id > 4 AND d.state_desc = 'ONLINE'
GROUP BY d.name, d.recovery_model_desc
ORDER BY d.name;`SIMPLE` modelde log yedeği beklemeyin. `COPY_ONLY` full yedek, differential base'i değiştirmez; normal full zincirini ayrıca değerlendirin.
4. Müdahale / Response
BACKUP DATABASE [OrnekDb]
TO DISK = N'D:\SQLBackups\OrnekDb_emergency_copy_20261103.bak'
WITH COPY_ONLY, CHECKSUM, STATS = 10;Bu, normal full job'ının yerine **kalıcı olarak geçmez**; log aralığının uygunluğunu ayrıca inceleyin.
BACKUP LOG [OrnekDb]
TO DISK = N'D:\SQLBackups\OrnekDb_log_20261103_001.trn'
WITH CHECKSUM, STATS = 10;Düzenli job'ı hemen onarıp yeniden başlatın; harici yedek yazılımının zincir politikasıyla koordinasyon kurun.
5. **Kalıcı çözüm:** Yedek başarı alarmına ek olarak dosya varlığı, yaşı, otomatik restore testi ve RPO/RTO karşılanmasını izleyecek iş akışı kurun.
5. Doğrulama / Verification
- `msdb.dbo.backupset` içinde yeni yedek `backup_finish_date` ile görünüyor; dosya hedef depolamada mevcut.
- `RESTORE VERIFYONLY FROM DISK = N'D:\SQLBackups\OrnekDb_emergency_copy_20261103.bak' WITH CHECKSUM;` hatasız. **VERIFYONLY gerçek restore testi değildir**; izole sunucuda tam restore + gerekiyorsa differential/log zinciriyle açılma testi yapın.
- M33 RPO hedefine indi, bir sonraki planlı SQL Agent job başarılı tamamlandı.
6. Geri Alma / Rollback
- Yedek almak veri değişikliği değildir; oluşturulan dosyayı hemen silmek yerine retention ve zincir güvenliğine göre saklayın.
- Job değişikliğini önceki yapılandırmasına döndürün; bir kere kaçırılan RPO zaman aralığı sonradan tamamen geri alınamaz.