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




Kategori: MS SQL Server
Fırat Boyan 08.09.2018 3

SQL Server 2014'te Aktif Database'e Backup Restore Etme İşlemi

SQL Server'da çalışan bir Database üzerinde Backup (yedekleme) ve Restore (geri yükleme) işlemleri, veri kaybını önlemek ve iş sürekliliğini sağlamak açısından kritik bir önem taşır. Özellikle üretim ortamında aktif olarak kullanılan bir Database'de bu işlemleri gerçekleştirmek dikkat ve planlama gerektirir. Full Backup ve Differential Backup stratejileri, çalışan bir Database'de veri kaybı yaşamadan bu işlemleri yapabilmeyi mümkün kılar. SQL Server, yedekleme ve geri yükleme işlemlerini, Database'in kullanıma kapatılmasına gerek kalmadan gerçekleştirebilir.

Full Backup, bir Database'in tamamının yedeklenmesi anlamına gelir ve çalışan bir Database'de bu işlem sırasında Database aktif olarak kullanılmaya devam edebilir. SQL Server, yedekleme işlemi sırasında Copy-on-Write mantığını kullanır; yani, yedekleme işlemi başladığında o anki Database durumu korunur ve bu esnada Database'de yapılan değişiklikler yedeklemeyi etkilemez. Bu sayede, Database üzerinde çalışan kullanıcılar veya işlemler yedekleme süresince kesintisiz devam ederken, Database'in tam bir kopyası oluşturulabilir. Ancak, büyük Database'lerde Full Backup işlemi uzun sürebileceğinden, genellikle haftalık ya da aylık olarak planlanır.

Differential Backup ise, son alınan Full Backup'tan bu yana değişen verilerin yedeklenmesini sağlar. Çalışan bir Database'de bu işlem, Full Backup'tan çok daha hızlı gerçekleşir ve daha az disk alanı kullanır. Bu durum, özellikle büyük veri setlerinde performansı artırır ve yedekleme işlemlerinin minimum kaynak kullanımıyla tamamlanmasını sağlar. Differential Backup, Database'in sürekli aktif olduğu ortamlarda veri kaybını minimize eder ve daha sık aralıklarla yedek alınmasına olanak tanır.

Restore işlemi, veri kaybı durumunda veya eski bir Database sürümüne geri dönme ihtiyacı olduğunda kullanılır. Çalışan bir Database'de geri yükleme işlemi genellikle Database'i kısa bir süreliğine Offline duruma getirir. Geri yükleme işlemi sırasında, en son alınan Full Backup ve ardından en güncel Differential Backup kullanılarak Database eksiksiz bir şekilde geri yüklenir. Bu işlem dikkatle planlanmalı ve iş sürekliliğini en az kesintiye uğratacak şekilde gerçekleştirilmelidir. Özellikle kritik Database'lerde Restore işlemi öncesinde test ortamında işlem doğrulanmalı ve tüm yedekler sağlıklı bir şekilde alınmış olmalıdır.

SQL Server'ın sağladığı online yedekleme ve geri yükleme özelliği, çalışan bir Database üzerinde operasyonel kesintiler olmadan veri güvenliğini sağlayabilir. Bu özellik, veritabanı yöneticilerine esneklik kazandırır ve Database'in kullanıma kapatılmasına gerek kalmadan düzenli yedekleme yapılmasına olanak tanır. Ancak Restore işlemi sırasında Database genellikle kısa süreliğine erişime kapatılacağından, bu işlemin iş yüküne göre dikkatlice zamanlanması önemlidir.

Çalışan bir Database'e, herhangi bir zaman diliminde tekrar Database Backup (veri tabanı yedek alma) işlemi uyguladığınızı varsayalım. Bu yedeği de mevcutta çalışmakta olan Ör. Database001 isimli çalışan veri tabanım üzerinde sağ tıklayıp sırası ile  Taks > Restore > Database... seçeneklerini seçerek Restore Database – Database001 penceresi açılıp, Database Restore adımlarını tekrar uyguladığımda;

SQL Database Restore

Restore of Database Failed Hatası

Bu hata, SQL Server’da bir Database geri yükleme işlemi sırasında geri yüklenmek istenen veritabanının mevcut olduğu durumlarda ve geri yükleme işlemi sonrasında veritabanının erişime açılmasıyla ilgili gerekli adımların tamamlanmaması sonucunda ortaya çıkar. Mevcut veritabanı üzerine yazılmadan işlem yapılmaya çalışıldığında veya geri yükleme işlemi tamamlandıktan sonra veritabanı erişime açılmadığında bu hatayla karşılaşılır. Özellikle geri yükleme işlemi sırasında gerekli izinlerin verilmemesi ya da işlem sonrasında veritabanının tam anlamıyla erişilebilir hale getirilmemesi, geri yükleme işleminin başarısızlıkla sonuçlanmasına yol açar.

SQL Database Restore

Restore of Database Failed Hata Çözümü

Çalışan bir Database üzerinde Database Restore (yedekten dönme) işlemi gerçekleştirebilmek için Restore Database penceresinde Select a page altındaki Options alanında tıklıyorum. Bu alanda Restore options bölümünde;

1- Overwrite the existing database (WITH REPLACE)

Bu seçenek, geri yükleme işlemi sırasında mevcut Database'in üzerine yazılmasını sağlar. Yani, eğer aynı isimde bir Database zaten varsa, bu Database silinir ve geri yüklenecek olan yedekle değiştirilir. WITH REPLACE komutu, mevcut Database'i zorla değiştirmek için kullanılır.

2- Recovery state: RESTORE WITH RECOVERY

Bu seçenek, geri yükleme işlemi tamamlandıktan sonra Database'i erişilebilir duruma getirir. Yani, geri yüklenen Database hemen erişilebilir hale gelir ve daha fazla geri yükleme işlemi yapılamaz. RESTORE WITH RECOVERY, Database'i normal çalışma moduna geri döndürür ve geri yüklenecek başka işlem kalmadığını belirtir.

Bu iki seçenek birlikte kullanıldığında, mevcut Database'in üzerine yazılır ve geri yükleme işlemi tamamlandıktan sonra Database, erişime açık hale gelir.

WITH REPLACE Seçeneği Seçilmezse

» Database Adı Çakışması: Geri yüklenecek olan yedek ile hedef Database aynı isimdeyse, SQL Server mevcut veritabanının üzerine yazmaya çalışır. Ancak WITH REPLACE seçeneği kullanılmadığında, SQL Server bunu bir çakışma olarak değerlendirir ve geri yükleme işlemini durdurur. Bu çakışmanın sonucu olarak geri yükleme işlemi başarısız olur ve mevcut Database'in korunması amacıyla üzerine yazılmasına izin verilmez.

» Yedek Dosyasının İkinci Defa Yüklenememesi: Aynı veritabanının yedeklerini tekrar tekrar geri yüklemeniz gerekiyorsa, her geri yüklemede WITH REPLACE seçeneğinin kullanılmaması, işlemde tutarsızlıklara ve hatalara neden olabilir. Özellikle test ortamlarında sıkça geri yükleme yapılıyorsa, bu seçeneğin atlanması işlemin sürekliliğini engeller.

WITH REPLACE seçeneği, mevcut veritabanını tamamen silip yerine yedekten geri yükleme işlemi yapmak için zorunludur. Bu seçenek işaretlenmediğinde SQL Server mevcut Database'in üzerine yazmayı engeller, bu da geri yükleme işleminin başarısızlıkla sonuçlanmasına neden olur.

RESTORE WITH RECOVERY Seçeneği Seçilmezse

» Database’in Erişime Kapatılması: Geri yükleme işlemi tamamlandıktan sonra veritabanı erişime açılmaz ve NORECOVERY modunda kalır. Bu durumda veritabanı, veritabanı yönetim sisteminde Restoring modunda görünür ve herhangi bir işlem yapılamaz. Yani, veritabanı geri yüklenmiş olsa dahi SQL Server, geri yükleme işleminin devam edeceğini düşünür ve veritabanını erişime açmaz.

» İşlemin Tamamlanmaması: Geri yükleme işlemi tamamlandıktan sonra RESTORE WITH RECOVERY komutunun verilmemesi, işlemin bitmemiş gibi algılanmasına yol açar. Veritabanını erişime açmak için bu komutun mutlaka işlenmesi gerekir. Aksi takdirde SQL Server, veritabanını geri yükleme aşamasında bırakır ve başka Transaction Log dosyalarının yükleneceğini varsayar.

SQL Database Restore

Çalışan bir veri tabanında Differential Backup Restore İşlemleri

Eğer elinizde Differential Backup varsa ve daha öcesinde Full Backup aldıysanız, Full Backup üzerine Differential Backup ile yedeğini aldığınız değişen verileri Restore edebilmek için;

İlk geri yükleme işleminde RESTORE WITH RECOVERY seçeneğini seçmiştik çünkü o adımda geri yükleme işlemi tamamlandığında Database'in hemen erişilebilir olmasını istemiştik. Ancak, şu an RESTORE WITH NORECOVERY seçeneğini seçiyoruz çünkü Differential Backup veya Transaction Log Backup gibi ek yedeklemeleri geri yüklemeye devam etmek istiyoruz.

RESTORE WITH NORECOVERY seçeneği, SQL Server'a Recover işleminin henüz tamamlanmadığını ve başka yedeklerin geri yükleneceğini bildirir. Bu nedenle, Database'in erişime açılmadan, geri yükleme modunda kalması sağlanır. Eğer bu adımda RESTORE WITH RECOVERY seçilmiş olsaydı, Database'in geri yükleme işlemi sonlandırılır ve ek yedeklerin geri yüklenmesine izin verilmezdi.

Bu geçişi yapmamızın nedeni, Full Backup yüklendikten sonra Differential Backup gibi ek adımları yükleyebilmek için Database'i NORECOVERY modunda tutmamızın gerekmesidir. NORECOVERY seçeneği, geri yükleme zincirini tamamlarken Database'in açık işlemler veya başka veri kayıplarını önlemek adına kilitli kalmasını sağlar.

SQL Database Restore

Bu makalemde Çalışan bir veri tabanında FULL Database (veri tabanı) Backup Restore ve DIFFERENTIAL Database (veri tabanı) Backup Resote (veri tabanı yedekten dönme) işlemlerinin nasıl yapılacağına değindim.

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 onlarca 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 önde gelen entegratör firmalarından olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum.

Ek olarak, 2015 yılında Network Akademi bünyesinde Microsoft Certified Trainer (MCT) ünvanı ile Sistem ve Network Uzmanlık eğitimleri vermeye başladım. Sistem ve Network Uzmanlığı alanındaki eğitmenlik serüvenime Network Akademi bünyesinde devam etmekteyim.

YORUMLAR
Bu makaleye 3 yorum yapıldı.
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.


02.06.2020 miraç kahraman
hocam selamun aleyküm,biraz geç oldu ama umarım cevaplarsınız,ben knight online dbsini koymaya çalıştım aynı hatayı aldım,dediklerinizi yapıyorm tekrardan aynı sorun çıkıyor,benim ne yapmam gerekli ? format ta attım ama yine durum aynı. yardımcı olursanız sevinirim

02.06.2020 Fırat Boyan
Merhaba, "knight online dbsini koymaya çalıştım" derken? yaptığın şeyi biraz daha net açıklar mısın?


10.09.2018 Enes Aslan
Emeğinize sağlık hocam.