MSSQL Server’da Tek Bir Yedek Dosyasında Birden Fazla Yedek Seti (Backup Sets)

SQL Server’da yedekleme işlemleri sırasında, genellikle her yedek için yeni bir dosya oluşturulması tercih edilse de, teknik olarak birden fazla yedeğin tek bir fiziksel dosya (.bak) içerisinde toplanması mümkündür. Paylaştığınız görsellerde, AdventureWorks2012.bak dosyasının içerisinde 3 farklı yedek setinin (Position 1, 2 ve 3) bulunduğu görülmektedir.

Yedeklerin tek bir dosyada biriktirilmesinin (append) birkaç temel nedeni olabilir:

  • Belirli bir güne veya projeye ait tüm tam (Full), fark (Differential) ve log yedeklerini tek bir konteyner dosyasında tutarak dosya kalabalığını önlemek.
  • Eski sistemlerde teyp (tape) sürücülerine yedek alınırken, medya kapasitesini verimli kullanmak adına yedekler ardışık olarak aynı medyaya yazılırdı.
  • Tek bir dosyayı taşımak veya buluta yüklemek, yüzlerce küçük dosyayı yönetmekten daha pratik olabilir.

SQL Server’da bir yedek alınırken, yedeğin mevcut dosyanın üzerine mi yazılacağı yoksa sonuna mı ekleneceği bir parametre ile belirlenir. Görsellerdeki gibi tek dosyada birden fazla yedek oluşmasının sebebi NOINIT parametresidir.

  • NOINIT (Varsayılan): Yedek, belirtilen dosyanın içindeki mevcut verilere dokunmaz ve yeni yedeği dosyanın sonuna yeni bir “Position” (pozisyon) numarasıyla ekler. SSMS arayüzünde bu seçenek “Append to the existing backup set” (Mevcut yedek kümesine ekle) olarak adlandırılır.
  • INIT: Eğer bu parametre kullanılırsa (veya arayüzde “Overwrite all existing backup sets” seçilirse), dosyanın içindeki eski yedekler silinir ve sadece yeni alınan yedek dosyada yer alır.

Dosya içerisinde birden fazla yedek olduğunda, SQL Server’a hangi pozisyondaki yedeği yüklemek istediğinizi açıkça belirtmeniz gerekir.

Backup alınan veritabanını restore edeceğimiz zaman Device bölümünden ilgili Backup uzantısını seçtikten sonra Contents dersek backup dosyasının üzerine alınmış tüm backup’ları görebiliriz.

Contents kısmında Position 2 olanın seçilip Restore işlemi yapılmaktadır. Eğer kod ile geri yüklemek isterseniz, FILE parametresini kullanmanız şarttır:

RESTORE DATABASE AdventureWorks2012
FROM DISK = '\\S3\backup\AdventureWorks2012.bak'
WITH FILE = 2, -- Burada 2. pozisyondaki yedeği seçiyoruz
RECOVERY, 
REPLACE;

Yukarıdaki resimlerde görülen, yedekleme işlemi sırasında dosyanın sıfırlanmadığını, aksine yeni yedeklerin üst üste eklendiğini göstermektedir. Bu yöntem dosya boyutunu büyütse de geçmişe dönük farklı yedekleri tek bir dosyada saklamanıza olanak tanır.

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

Kötülüğe iyilikle karşılık verin.Fussilet-34

Author: Yunus YÜCEL

Bir yanıt yazın

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