SQL SERVER RECOVERY MODELLLERİ İLE BACKUP- RESTORE İŞLEMLERİ

 Herkese merhaba arkadaşlar,

Bu makalemizde SQL Server’da recovery modelleri ile backup-restore işlemlerini anlatacağım.

SQL Server’da 3 farklı Recovery modeli vardır;

  1. Full Recovery Model
  2. Simple Recovery Model
  3. Bulk Logged Recovery Model

★ Bu üç model arasındaki temel fark Transaction Log’ların saklanış biçimidir.

Kısaca modellerimizden bahsedelim;

1.Full Recovery Model

  • Veritabanımızda veri kaybına yol açmak istemiyorsak Full Recovery Model tercih etmeliyiz.
  • Bu modelde veritabanı üzerinde gerçekleştirilen tüm Transaction’lar “.ldf” dosyalarında tutulur.
  • Her işlem transaction log dosyasına kaydedildiği için en güvenilir recovery modelidir.

2. Simple Recovery Model

  • Simple Recovery Model’ de de yapılan tüm işlemler Transaction Log’lara kaydedilir, fakat her Checkpoint’ten sonra aktif olmayan sanal kayıtlar Transaction Log dosyasından silinirler.
  • Bundan dolayı bu modelde tutulan Transaction Log dosyası sürekli büyümez.
  • Bu modelde geriye dönük Transaction Log’lar silindiği için Backup ve Restore işlemleri mümkün değildir.
  • Bu yüzden de veri kaybı olasılığı çok yüksek olacaktır.

3)Bulk Logged Recovery Model

  • Toplu olarak günlüğe kaydedilen recovery modeli, büyük miktarda verinin toplu içe aktarılmasının performansını iyileştirmek için aralıklı kullanım için tasarlanmıştır. Toplu olarak günlüğe kaydedilen kurtarma modelinde bazı işlemlerin minimum düzeyde günlüğe kaydedilmesi dışında, full recovery modeli ile hemen hemen aynıdır. 
  • Minimum düzeyde günlük kaydı, bu büyük ölçekli toplu işlemler sırasında mümkün olan en iyi performansı ve tüketilen en az alanı sağlayan, belirli bir noktadan sonra kurtarmayı desteklemeden yalnızca işlemi kurtarmak için gereken bilgilerin loga kaydedilmesi anlamına gelir. Bu toplu işlemler, BULK INSERT, SELECT INTO ve dizin yeniden oluşturma işlemlerini içerir.
  • Veritabanının uzun süre Bulk logged kurtarma modelinde tutulması önerilmez.

Not: Bulk işlemler tek tek Transaction Log dosyasına yazılmadığı için Full Recovery Model’e göre daha hızlı yapılır.

FULL RECOVERY MODELİN BACKUP-RESTORE İŞLEMLERİ

  1. Northwind veri tabanının properties bölümünde options kısmına geliyoruz. Daha sonra recovery modelinin full modda olduğunu görüyoruz.

2. Northwind veritabanının backup işlemini bu şekilde alıyoruz.

3.Backup options kısmından Compression bölümünde “compression backup” seçeneğini seçiyoruz. Bunun sebebi alacağımız backup işleminin gereksiz yer kaplamasını önlemektir.

4. Backup alma işlemini arayüzden gerçekleştireceğimiz gibi aşağıda örnek olarak ekleyeceğim script ilede gerçekleştirirebilirsiniz.

BACKUP DATABASE [NORTHWND] TO  DISK = N’C:\BACKUP\Northwind_20220615.bak’ WITH NOFORMAT, NOINIT,  NAME = N’NORTHWND-Full Database Backup’,

SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10

GO

5.Şimdi aldığımız yedeği Restore yapacağız. Full moddaki veri tabanının full backup restore işleminden sonra log backup aldık ve log’u restore ettik.

USE [master]

RESTORE DATABASE [AdventureWorks2019] FROM  DISK = N’C:\BACKUP\AdventureWorks2019.bak’ WITH  FILE = 3,  NORECOVERY,  NOUNLOAD,  REPLACE,  STATS = 5

RESTORE LOG [AdventureWorks2019] FROM  DISK = N’D:\BACKUP\Adventureworks2019_log.bak’ WITH  FILE = 1,  NOUNLOAD,  STATS = 5

GO

6. Simple Recovery İle Backup İşlemi

Aşağıdaki sorgu ile recovery modelimizi simple modeline çektik.

USE master; 

–Make sure the database is using the simple recovery model. 

ALTER DATABASE NORTHWND SET RECOVERY SIMPLE; 

GO

7. Simple moddaki veri tabanımızın full backup işlemini gerçekleştirdik.

— Back up the full NORTHWND database. 

BACKUP DATABASE NORTHWND  

TO DISK = ‘C:\BACKUP\NORTHWND.bak’  

WITH FORMAT; 

GO 

8. Aldığımız full backup işleminden sonra restore işlemini gerçekleştiriyoruz.

–Restore the full database backup (from backup set 1). 

RESTORE DATABASE NORTHWND  

FROM DISK = ‘C:\BACKUP\NORTHWND.bak’  

WITH FILE=1, NORECOVERY; 

Norecovery ile restore ettikten sonra NORTHWND veri tabanının restoring moda geçtiğini gözlemledik. Bir sonraki aldığımız differential backupın restore işleminden sonra veri tabanı restoring moddan çıkacaktır.

Son olarak aşağıdaki sorgu ile differential backup restore işlemini tamamladık.

–Restore the differential backup (from backup set 2). 

RESTORE DATABASE NORTHWND  

FROM DISK = ‘C:\BACKUP\NORTHWND.bak’  

WITH FILE=2, RECOVERY; 

GO

Benim anlatacaklarım bu kadardı. Umarım faydalı olmuştur. Bir sonraki makalede görüşmek üzere ❀

Referanslar

https://academy.sqlbak.com/category/sql-server-backup/recovery-models/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.