Database Recovery Advisor(Point-in-time Restore)

17 Eki by NURULLAH ÇAKIR

Database Recovery Advisor(Point-in-time Restore)

Database Recovery Advisor ile backup’larımızı SSMS üzerinden istediğimiz bir ana kolaylıkla dönebiliyoruz. Örneğin Backup 12:34’te alınmış ve biz 12:31’e dönmek istiyoruz. Bu işlemi SSMS üzerinden kolayca yapabiliyoruz.

 

AdventureWorks2014Yeni isimli bir veritabanımız var. Bu veritabanından düzenli olarak full ve log backup aldığımızı varsayıyorum. Örneğin gün içinde 11:02’de full backup, 11:07’de de log backup aldığımızı düşünelim. Öncelikle 11:02’de full backup’ı norecovery olarak restore edip daha sonra da log backup’ı restore edersem 11:07’ye dönmüş olurum. Ama 11:05’e dönmek istersem point-in-time restore işlemi yapmam gerekir. Backup-Restore işlemleri için “Backup Restore İşlemleri” isimli makaleme göz atmak isteyebilirsiniz.

 

Database Recovery Advisor SQL Server 2012’de hayatımıza girmeden önce bu işlemi SSMS üzerinden yapamıyorduk. Artık SSMS üzerinden de kolay bir şekilde point-in-time restore yapabiliyoruz.

 

Yukarıda anlattığım senaryo için, 11:05’e SSMS üzerinden point-in-time restore işlemini gerçekleştirelim.

 

Öncelikle ben geri dönüşleri disklerimde yer olduğu sürece mevcut veritabanının üzerine yapmıyorum. Bu örnektede başka bir isimle restore edeceğim.

 

Bu işlemi iki yöntemle yapacağım.

 

1.Yöntem’de full backup’ı manual restore edip daha sonra point-in-time restore işlemini yapacağım.

 

2.Yöntem’de de direk full backup restore + point-in-time restore işlemini database recovery advisor ile görsel bir şekilde tek seferde yapacağım.

 

1.yöntem

Öncelikle full backup’ı norecovery mode’da AdventureWorks2014point_in_time_restore ismiyle restore edin. Sonrasında ise transaction log backup kısmına geldiğimizde aşağıdaki gibi  veritabanı üzerinde sağ tıklayarak Tasks-Restore-Transaction Log… diyoruz.

 

 

 

Karşımıza gelen ekranda From Device kısmında sağdaki …’ya tıklayarak Add diyoruz. ilgili log backup’ı bulup çift tıklayarak sonrasında ok diyoruz.

 

Daha sonra aşağıda gördüğünüz gibi Restore’un altındaki kutucuğu tıklıyoruz.

 

Son olarakda en alttaki Restore to kısmında Point in time’ı seçerek sağ tarafındaki …’ya tıklayarak dönmek istediğimiz saat dakika ve saniyeyi yazıyoruz.

 

Ok diyerek işlemi tamamlayabilirsiniz ama ben genelde sol üstte gördüğünüz Script ifadesine tıklayarak script’i alır ve çalıştırırım. Size de bu şekilde yapmanızı tavsiye ederim.

 

 

Aşağıdaki script’te gördüğünüz gibi LOG dosyasını STOPAT komutuyla restore ederek point-in-time restore işlemini gerçekleştiriyor.

 

RESTORE LOG [AdventureWorks2014point_in_time_restore]
FROM  DISK = N'C:\MSSQL\AdventureWorks2014Yeni_1107_Log.trn'
WITH  FILE = 1,  NOUNLOAD,  STATS = 10,  STOPAT = N'2017-10-17T11:05:00'

 

 

Eğer restore etmek istediğiniz aşağıdaki gibi hata alıyorsanız makalenin sonundaki çözümü uygulamanız gerekir.

 

The file ‘xxx.mdf’ cannot be overwritten. It is being used by database”.

 

2.Yöntem

1.Yöntem’deki adımları tek seferde database recovery advisor ile daha kolay bir şekilde de yapabiliriz. Veritabanını yine farklı bir isimle restore edeceğiz.

 

Öncelikle SSMS üzerinde Databases’e sağ tıklayarak aşağıdaki gibi Restore Database… diyoruz.

 

 

Daha sonra source kısmından Database’i seçip hangi veritabanına ait backup’ları restore edeceksek o veritabanını seçiyoruz. Biz AdventureWorks2014Yeni veritabanına ait backup’ları restore edeceğimiz için bu seçimi yapıyoruz.

 

Daha sonra destination kısmında database ismi olarak AdventureWorks2014Yeni_full_pointintimeline yazıyoruz. Böylece mevcut veritabanının üzerine yazmak yerine yeni bir veritabanı oluşturacak.

 

Daha sonra Destination kısmında Timeline yazan buton’a tıklıyoruz ve aşağıdaki gibi Specific date and time’ı seçiyoruz Date ve time kısımlarından dönmek istediğimiz tarih, saat, dakika ve saniye bilgilerini girerek ok’e tıklıyoruz.

 

Gördüğünüz gibi dönmek istediğimiz an’ı girdiğimizde Database Recovery Advisor bu ana dönmek için en uygun yöntemi seçti.

 

Her hafta Pazar günü 19:00’de full backup, her akşam  19:00’da differential backup, 2 saatte bir de log backup aldığınızı düşünün.

 

Eğer Salı günü 21:07’ye dönmek isteseydiniz öncelikle Pazar günkü full backup’ı norecovery mode’da,

 

Sonrasında Salı günü 19:00’da alınan differential backup’ı norecovery mode’da,

 

Daha sonra da Salı günü 20:00’da alınan log backup’ı norecovery mode’da restore edecektik.

 

Son olarak ta 22:00’da alınan log backup’ı 21:07’de stop at ile duracak şekilde recovery mode’da restore edecektik. Database Recovery Advisor ile bunu kolay bir şekilde tek seferde yapabiliyoruz.

 

NOT: Alınmış backup’ların aynı path’te duruyor olması gerekiyor.

 

 

Bu işlemleri tamamladıktan sonra Restore ekranınız aşağıdaki gibi gözükmeli.

 

 

OK diyerek işlemi tamamlayabilirsiniz ya da Script kutucuğuna tıklayarak script’ini alarak da çalıştırabilirsiniz.

 

OK dediğinizde aşağıdaki gibi bir hata alabilirsiniz.

 

The file ‘xxx.mdf’ cannot be overwritten. It is being used by database”.

 

Bu hatayı almamızın sebebi REPLACE komutuyla mevcut veritabanının üzerine yazmak yerine yeni bir veritabanını aynı dosya isimleriyle oluşturmak istememiz.

 

 

Files sekmesine gelip aynı isimde olan dosyaları Relocate all files to folder’dan başka bir klasöre koyarak,

 

Ya da alt taraftaki Restore As kısmından file isimlerini manual olarak değiştirerek bu sorunu çözebilirsiniz.

 

Loading

Bir yanıt yazın

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