MSSQL Server’da Database Recovery Advisor ile Timeline ve Point in Time

Bir veritabanını geri yüklemek (Restore) istediğinizde, SQL Server arka planda tüm yedekleme geçmişini (msdb veritabanındaki tabloları) tarar. Recovery Advisor, bu geçmişi analiz ederek veritabanını istediğiniz ana döndürmek için en kısa ve hatasız yolu (Full + Differential + Log zinciri) otomatik olarak çıkaran bir rehberdir.

SQL Server Management Studio (SSMS) içerisinde yer alan akıllı bir motordur. Yani sen bir düğmeye basıp “Recovery Advisor oluştur” demezsin; o zaten arka planda her an senin için çalışır. Ancak onun çalışabilmesi için bazı ön hazırlıkların ve verilerin olması şarttır.

Recovery Advisor’ın sana bir plan sunabilmesi için geçmişi bilmesi gerekir. Bu geçmişi msdb adı verilen sistem veritabanındaki tablolardan okur.

  • Sen her yedek aldığında (Full, Diff veya Log), SQL Server bu bilgiyi msdb.dbo.backupset ve msdb.dbo.backupmediafamily gibi tablolara kaydeder.
  • Eğer bu tabloları temizlediysen (Cleanup yaptıysan) veya yedeği başka bir sunucudan getirdiysen, Advisor “geçmişi” göremediği için sana otomatik bir plan sunamaz.

Timeline, Recovery Advisor’ın size sunduğu görsel bir paneldir. Veritabanınızın yedekleme geçmişini bir film şeridi gibi görmenizi sağlar.

Normalde yedekler listede alt alta dizilir ve hangi saatte tam olarak ne olduğunu anlamak zordur. Timeline panelinde:

  • Koyu Yeşil Çizgiler: Full yedekleri,
  • Beyaz Alanlar: Differential yedekleri,
  • Yeşil Alanlar: Transaction Log yedeklerini temsil eder.

Aşağıdaki resimde dikkat edilirse Transaction log yedekler full backup’tan sonraki tüm değerleri almaktadır.

Timeline özelliğini kullanabilmek ve “dakika dakika” geriye gidebilmek için tek bir teknik şart vardır:

  • Recovery Model = Full olmalıdır.
  • Eğer model “Simple” ise, Timeline’da sadece Full yedeklerin olduğu noktaları (koyu yeşil noktalar) görürsün. Aradaki dakikalara (yeşil alanlara) tıklayamazsın.

Restore to kısmında en son alınan backup zamanını  göstermektedir. Bu kısımda sağ tarafta bulunan Timeline ifadesine tıklarsak restore edilecek full-diff ve log backuptaki bir tarih veya saat dilimine manuel bir şekilde dönmüş oluruz. Bu yapının oluşmasını sağlayan database recovery advisor motorudur.

Full diff ve log backup’ları yüklersek aşağıdaki resimde görmüş olduğumuz gibi istediğimiz ana dönebiliriz. Full diff ve log backup’ların aynı anda yüklenmesi için aynı path’te olması şart değildir full backup A diskinde log diff backup farklı disklerde olabilmektedir.

USE [master]
RESTORE DATABASE [AdventureWorks2017] FROM  DISK = N'C:\Backup\Full.bak' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 5
RESTORE DATABASE [AdventureWorks2017] FROM  DISK = N'C:\Backup\Diff.bak' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 5
RESTORE LOG [AdventureWorks2017] FROM  DISK = N'C:\Backup\log1.trn' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 5
RESTORE LOG [AdventureWorks2017] FROM  DISK = N'C:\Backup\log2.trn' WITH  FILE = 1,  NOUNLOAD,  STATS = 5,  
STOPAT = N'2026-02-16T23:26:45'
GO

Belirlediğimiz bir ana dönmek istiyorsak STOPAT komutu kullanılmaktadır. Bu ifade point in time yapısını göstermektedir. Yukarıdaki Timeline bölümünde point in time belirleyebildiğimiz gibi log dosyalarınıda restore ederken karşılaşırız. Log dosyası seçimi yaptıktan sonra işaretlenmiş olan restore kısmında checkboxs’ı işaretliyoruz.  Daha sonra alt kısımda bulunan point in time kısmının ne işe yaradığına değinelim.

Point in time işlemi örneğin bizim restoring modda olan database üzerine en son alınan log backup tarihinden önceki bir alana dönebiliriz. Point in time ifadesindeki 3 noktaya tıklıyoruz. Çünkü bu ekranda Timeline bölümü bulunmamaktadır.

Bu ekranda log backup hangi tarihte alınmışsa o tarihten önceki yedeğe dönebiliriz.

Backup tarih ve zamanı öğrenmek için seçmiş olduğumuz log dosyasının yanındaki backup tarih ve zamanına bakabiliriz.

Script’ini aldığımızda STOPAT komutuyla hangi ana dönüleceğini belirtiyoruz.

RESTORE LOG [AdventureWorks2023] FROM  DISK = N'C:\veritabanı\AdventureWork2012_LOG.trn' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD, 
STATS = 10,  STOPAT = N'2024-09-13T22:20:32'
GO

Eğer veritabanınız “Simple Recovery Model” ise Timeline üzerinde sadece Full ve Diff yedekleri görürsünüz, dakikalık veya saniyelik hassas geri dönüş yapamazsınız. Bu özellikten tam verim almak için veritabanının “Full Recovery Model” olması şarttır. Point in time ifadesi son log backup restore ederken son anda herhangi bir bölüme geçmemizi sağlayan başka bir özelliktir.

Başka makalede görüşmek dileğiyle..

İsraf etmeyin. İsra-26

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir