İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.



Kategori: MS SQL Server
Fırat Boyan 05.07.2016 0

SQL Server 2014'te Database Backup Alma İşlemi

SQL Server üzerindeki Database (veri tabanı) Backup (yedek) işlemi, Database üzerinde yer alan tüm verilerin kaybolma ve bozulma riskine karşı bir yedeğinin ya da başka bir deyişle bir kopyasının saklanmasıdır. Daha sonra bu Backup verileri, ihtiyaç duyulduğunda, Database restore (veri tabanı geri yükleme) yapılarak olası veri kayıplarının önüne geçmiş oluruz. SQL Server Management Studio ile Database (veri tabanı) Backup (yedek) alma işlemine geçmeden önce SQL Server Backup seçeneklerini bilmek gerekir. SQL Server üzerinde 3 farklı Backup çeşiti bulunmaktadır. Bunlar;

Full Backup: Adından anlaşılacağı üzere Database (veri tabanı) Backup (yedek) anı itibariyle Database Full Backup (veri tabanı tam yedek) içine kopyalanır. Full Backup dosyası ile başka bir şeye ihtiyaç duymadan Backup (yedek) alındığı tarihe veri tabanı Restore (yedekten dönme) işlemi yapılabilir.
Differential Backup: Çok fazla verinin bulunduğu, boyutları yüksek ve sürekli olarak data işlenen Database'in sürekli olarka Full Backup ile Backup işlemi yapmak, hem uzun işlem süresi hem de gereksiz disk kullanımlarına neden olur. Böyle durumlarda sadece değişen kısımların yedeğinin alınması Differential Backup seçeneği ile yapabilirsiniz.
Transaction Log Backup: Transaction, ilgili Database üzerinde yapılan her işlemin bilgilerinin tutulduğu Log dosyasıdır. Yedekleme sadece bu kayıtları kapsar.

Recovery Model

SQL Server Management Studio ile Database Backup (veri tabanı yedek alma) işleminden önce yapılması gereken ilk işlem, Recovery Model yapılandırmaktır. Recovery Model yapılandırma zorunluluğumuzun sebebi, Sql Server Database Backup (Sql Server veri tabanı yedek alma) işlemi yapılırken örneğin;

Full Recovery Model
mdf + ldf restore edeceğim, Log doayasını çok detaylı tut demektir. Backup alırken bu şekilde Backup alır. Bunun avantajı, Recovery yaparken detaylarda istediğim saate geri dönebilirim.
Örneğin Cuma gecesi bir bir Full Backup aldınız. Takip eden haftanın da Çarşamba gecesi bir Differential Backup aldınız ve 2 saatte bir de Transaction Log Backup alıyorsunuz. Perşembe günü sabah 08:20’de bir sıkıntı oldu ve uygulamacılar sizden en son yedeği yüklemenizi istiyorlar. Yapmanız gereken sırasıyla; önce Full Backup’ı, sonra Differential Backup’ı, sonrasında ise Differential Backup’tan sonra alınan tüm Log Backup’ları sırayla Perşembe 08:00’e kadar restore etmeniz olacaktır. Bu şekilde son ana kadar dönebilirsiniz.

Full Recovery Model kullanıyorsanız, mutlaka Transaction Log Backup almalısınız. Transcastion Log Backup almamanız durumunda, yapılan tüm işlemler Log'landığı ve otomatik olarak silinmediği için bir süre sonra diskinizi dolduracaktır. Transaction Log Backup aldığınızda, Log dosyasında kaydedilen bu Log'lar silineceği için aşırı büyümesini engellenecektir.
Logların silinmesi işi gözünüzü korkutuyor olabilir. Bu silinme işlemi, endişe edilecek bir durum değildir. Aksine, yapılması zorunlu bir işlemdir. Aldığınız Log Backup’ta bu veriler mevcuttur. Herhangi bir sorun anında bu Log Backup dosyalarını kullanarak yukarda anlattığım gibi istediğiniz ana dönebilirsiniz. Hangi sıklıkla Log Backup alacağınız kurumunuzun politikasıyla alakalı olup, genellikle önemli ve büyük uygulamalarda 2 saatte bir alınmaktadır.

Bulked-Logged Recovery Model
mdf + ldf + Transaction Log kaydını da tutar ve Backup alırken bu şekilde Backup alır. Ancak Transaction Log kaydı az detaylıdır. Bunun dezavantajı, Recovery ederken detaylarda istediğim saate geri dönemiyor olmamdır. Bulk Logged Recovery Model, Full Recovery Model’den farklı olarak SELECT INTO, BULK INSERT, BCP, CREATE INDEX gibi Bulk işlemlerin tamamı Log'lanmaz ki Bulk işlemlerin yoğun olduğu veritabanlarında Transaction Log dosyasının çok büyümesi engellenmiş olacağı için, genelde tercih etmediğim bir Recovery Modeldir ama Transaction Log Backup alınabiliyor ancak, eğer son Transaction Log Backup’ta bulk işlem ile ilgili bir kayıt varsa, restore yapılamıyor. Bulk Logged Recovery Mode’u sadece geçici olarak kullanabilirsiniz. Örneğin Full Recovery Model’i kullanıyorsunuz ve büyük bir bulk işlem yığını yapacaksınız ve diskinizde yeterli alan da yer yoksa veri tabanı Recovery Model'ini Bulk Logged yapıp, işleminiz bitince tekrar Full’e çekebilirsiniz.

Simple Recovery Model
sadece mdf kaydı tutar, ldf yoktur + Transaction Log kaydını çok çok az tutar. Recovery Model simple olan veri tabanları için Transaction Log Backup alınmaz. Özetle Recovery Model kullanmanın sebebi, Recover ederken hangi materyali (örn. mdf + ldf) kullanacaksın demektir. Bu nedenle öncelikle Recovery Model yapılandırmam gereklidir.

Recovery Model Yapılandırma

Recovery Model yapılandırmak için Database üzerinde sağ tıklanır ve Properties seçeneği seçilir.

SQL Server Backup

Database Properties pencesi altında Options sekmesine tıklanır. Options sekmesinde Recovery Model ayarlaması, yukarıda belirttiğim bilgilere göre yapılandırılır.

SQL Server Backup

Database Backup (veri tabanı yedekleme)

Recovery Model yapılandırmamızı tamamladıktan sonra, veri tabanı yedek alma işlemlerine başlayabiliriz. SQL Server veri tabanı yedeği iki şekilde alınabilir.

1- .bak dosyası ile SQL Server Database Backup İşlemleri
2- Backup Device ile SQL Server Database Backup İşlemleri

1- .bak dosyası ile SQL Server Database Bakcup İşlemleri

.bak dosyası ile Disk üzerine Backup alındığı zaman, Backup detaylarını göremezsiniz. Yani aldığım Backup detaylarında ne aldığım, ne zaman aldığım (Full Backup, Differential Backup ya da Transaction Log Backup) gibi bilgileri göremem. Bu, .bak dosyası ile Database yedek alma işleminin dezavantajıdır.

1.1- .bak dosyası ile veri tabanı yedeği almak için SQL Server Management Studio'da ilgili Database üzerinde sağ tuş Tasks > Backup seçeneğine tıklıyorum.

SQL Server Backup

1.2- Back Up Database – DATABASE001 ekranı açılıyor. Bu ekranda General sekmesinde; 

a- Source
b- Backup Component
c- Destination


bölümleri bulunmaktadır.

a- Source Ayarları:
a.1- Database: SQL Server üzerinde hangi Database üzerinde Backup almak istiyorsak onu seçebilirsiniz.
a.2- Recovery Model: Recovery Model; yukarıda detaylıca belirttiğim gibi, mdf, ldf ve Transaction Log'larının nasıl kaydedileceği ile ilgili ayarları içerir. SQL Server üzerinde üç farklı Recovery Model seçeneği bulunduğundan bahsetmiştim. Hatırlayacak olursak bunlar; Full, Simple ve Bulk Logged seçenekleridir.

Full Backup: Adından anlaşılacağı üzere Backup anı itibariyle Database'im tüm Backup bilgisi içine kopyalanır. Full Backup dosyası ile başka bir şeye ihtiyaç duymadan Backup alındığı tarihe, Recovery Model Full yapıldıysa, veri tabanı Restore işlemi yapılabilir.
Differential Backup: Çok fazla verinin bulunduğu, boyutları yüksek ve sürekli olarak data işlenen Database'i sürekli olarka Full Backup ile Backup işlemi yapmak, hem uzun işlem süresi hem de gereksiz disk kullanımlarına neden olur. Böyle durumlarda sadece değişen kısımların yedeğinin alınmasını Differential Backup seçeneği ile yapabilirsiniz.
Transaction Log Backup: Transaction, ilgili Database üzerinde yapılan her işlemin bilgilerinin tutulduğu Log dosyasıdır. Yedekleme sadece bu kayıtları kapsar.
Copy only Backup: Bu Backup alma işleminin Backup zincirine dahil edilip edilmeyeceği ile ilgili ayardır.

NOT: Şahsi tavsiyem; veri tabanı yedeğinizi Transaction Log Backup olarak alacaksanız, Recovery Model'inizi Full tutmanız yönünde olacaktır.

a.3- Backup Type: Backup türlerine konunun başında değinmiştim. Full Backup almak istediğimizi belirterek ilerleyeceğim.

b- Backup Component Bölümü Ayarları:
b.1- Database: Tüm Database üzerinde Backup alınacaksa, bu seçenek seçilir.
b.2- Files and filegroups: Database'e ait bir File Group Backup (yedek) alınacaksa, bu seçenek seçilir.

c- Destination Ayarları:
c.1- Backup To: Bu bölümde alınan Backup nerede saklanacağıyla ilgili ayarlar yapılandırabilirsiniz. Disk ve Tape seçenekleri ile, alt kısımda alınan yedeğin nereye kopyalanacağı ile ilgili dosya ayarlarını yapabilirsiniz. Disk seçeneği seçili iken varsayılan olarak C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup dizini altına almaktadır. Dilerseniz Add butonuna tıklayarak bu dizini değiştirebilirsiniz.

SQL Server Backup

1.3- Yine aynı ekranda Backup Options sekmesinde;

a- Backup set bölümü ayarları:
a.1- Name: Yedeğimize bir isim veriyoruz.
1.2- Description: Backup ilgili bir açıklama eklemek isterseniz bu bölümü kullabilirsiniz.
a.3- Backup set will expire: Alınan Backup hangi tarihe kadar geçerli olacağıyla ilgili ayarın yapıldığı bölümdür.

1.4- Gerekli ayaları yapılandırdıktan sonra OK tuşuna bastığınızda, eğer herhangi bir hata almadıysanız, işlem başarılı bir şekilde tamamlanacaktır.

SQL Server Backup

1.5- Veri tabanı yedek alma işleminden sonra Destination yolunu değiştirmediyseniz C:\Program Files/Microsoft SQL Server/MSSQL12.MSSQLSERVER/MSSQL/Backup dizi altında .bak uzantılı yedeğiniz hazır olacaktır.

SQL Server Backup
 

2- Backup Device ile SQL Server Database Bakcup İşlemleri

Backup Device ile Backup alındığında, alınan Backup'ın detaylarını görebilirsiniz. Yani aldığım Backup detaylarında ne zaman aldığım, ne aldığım (Full Backup, Differential Backup ya da Transaction Log Backup) gibi bilgileri görebilme şansına sahibim. Bu, .bak dosyası ile Database yedek alma işleminin dezavantajıdır. Backup Device ile Backup almak için;

2.1- Server Objects üzerinde sağ tıklıyorum ve sırası ile New > Backup Device... seçeneğine tıklıyorum.

SQL Server Backup

2.2- Backup Device penceresi açılacaktır. Backup Device penceresi altında oluşturmak istediğim Backup Device'a Device name alanında bir isim veriyorum.
Verdiğim isim, Full-DEVICE01. Destination alanında ise Backup Device'ın nereye kaydedileceğini belirliyorum. Normal şartlarda bu Path, sizin Storage cihazınız olabilir.

SQL Server Backup

2.3- Görüldüğü gibi, Server Objects > Backup Devices altında oluşturmuş olduğum Full-DEVICE01 adındaki Backup Device'ım oluşmuştur.

SQL Server Backup

Full Backup Alma

Adından anlaşılacağı üzere Database (veri tabanı), Backup (yedek) anı itibariyle Database Full Backup (yedek) içine kopyalanır. Full Backup dosyası ile başka bir şeye ihtiyaç duymadan Backup (yedek) alındığı tarihe Database Restore (veri tabanı geri yükleme ) işlemi yapılabilir. Daha önceden de belirttiğim gibi mdf + ldf yedeğini alacaktır.

2.4.1- SQL Server Management Studio'da Database üzerinde sağ tuş Tasks > Backup seçeneğine tıklıyorum.
2.4.2- Back Up Database – DATABASE001 ekranı açılıyor. Bu ekranda daha önce .bat dosyası ile Database (veri tabanı) Backup (yedek) alma işleminde anlattığım gibi Source bölümündeki ayarları yapılandırdıktan sonra Destination alanında Add... butonuna basıyorum.
2.4.3- Select Backup Destination penceresinde Backup Device seçeneğini seçiyorum ve daha önceden oluşturduğum Full- DEVICE001 ismindeki Full Backup Device'ımı seçerek OK butonuna basıyorum.

SQL Server Backup

NOT: Buradaki File Name alanı da dikkatinizi çekmiş olmalı. .bat dosyası ile Database Backup işleminde .bat dosyasının Path'i buradadır. Dilerseniz bunu da değiştirebilirsiniz.

2.4.4- Görüldüğü gibi Backup Device üzerine veri tabanı yedek alma işlemini gerçekleştirdim.

SQL Server Backup

2.4.5- Veri tabanı yedeğimi Backup Device üzerine aldıktan sonra, oluşturduğum Full-DEVICE001 ismindeki Full Backup Device'ım üzerinde sağ tıklayarak Properties seçeneğini seçiyorum.

SQL Server Backup

2.4.6- Back Up Database – DATABASE001 ekranı açılıyor. Bu pencerede Select a page altında bulunan Media Contents'e tıkladığımızda, Backup sets altında DEVICE001 ismindeki Full Backup Device'ımın detaylarını görüntülüyorum.

SQL Server Backup

Bu makalemde detaylı bir biçimde SQL Server veri tabanı yedek alma işlemini anlatmaya çalıştım. Bir sonraki makalemde ise SQL Server Database (veri tabanı) Recovery (Yedekten dönme) konusuna değiniyor olacağım.

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar Hakkında

firatboyan.com


1985 yılında Alanya'da doğdum. İlk, orta ve lise öğrenimimi Alanya'da tamamladım. Liseden mezun olduktan sonra Akdeniz Üniversitesi Bilgisayar Teknolojisi Ön Lisans programına yerleştim ve bu programdan mezun oldum. Ön Lisans programından mezun olduktan bir süre sonra Dikey Geçiş Sınavı (DGS) ile İstanbul Teknik Üniversitesi (İTÜ) Bilgisayar Mühendisliği Lisans programına yerleştim. 2003 yılından beri Bilgi Teknolojileri sektöründe Sistem ve Network alanlarında çalışıyorum. Bir çok firma bünyesinde farklı projelerde yer alarak bu alanda yıllar içinde ciddi bir bilgi birikimi ve deneyimler kazandım. Bilgi Teknolojileri sektöründeki profesyonel çalışma hayatımın uzunca bir dönemini entegratör firma bazında, ağılıklı olarak Microsoft ürünleri üzerine danışman olarak sürdürüyor ve yüksek seviyeli projeler geliştiriyorum. Uzunca bir süredir de Türkiye'nin en önde gelen entegratör firması olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum. Ek olarak, 2015 yılında Network Akademi bünyesinde Sistem ve Network Uzmanlık eğitimleri vermeye başladım ve 2017 yılında da eğitmenlik tecrübemi, Microsft Certified Trainer (MCT) ünvanı ile taçlandırdım. Eğitmenlik serüvenime 2021 yılından beri Bilge Adam bünyesinde MCT ünvanı ile devam etmekteyim.

YORUMLAR
Bu makaleye henüz yorum yapılmadı! İlk yorum yapan sen ol.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.


750 karakter yazabilirsiniz.
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.