Merhaba Arkadaşlar,

Bu Yazımda sizlere SQL Server 2008  de Database Snapshot işlemini anlatacağım. Snapshot alma işlemi SQL Server 2005 le beraber gelen bir özelliktir ve daha sonra gelen 2008 ve 2012 de de devam eden bir özelliktir. Database Snapshot;  En basit tanımıyla Veritabanının Herhangi bir anında alınan Salt okunur bir kopyası bir Fotoğrafı bir görüntüsüdür diyebiliriz.

Snapshot işlemi yapıldığı zaman SQL Server hedef seçilen Veritabanının o anki görüntüsünü alır fakat fiziksel olarak Diskte Snapshot ı alınan verinin o anki hali bulunmaz. Snapshot alınırken o an için veritabanında commit lenmemiş Transactionlar varsa bunlar Rollback yapılır. Snapshot ı alınan veritabanında yapılan değişiklikler Snapshot için ayrılan Sparse File a yazılır. Böylece Client eğer Snapshot dan bir Select çektiği zaman ilgili data değişmişse eğer SQL Server değişmiş datayı Sparse file dan okurken, değişikliğe uğramamış bir datayı orijinal veritabanından okuyacaktır. Bu senaryoyu özetleyen en güzel portre MSDN in yayınladığı aşağıdaki resimdir.

Yukarıdaki Resimde 1.durumda Kaynak Veritabanının 10 Page inden 3 ü Update ediliyor. Bu Update edilen Page ler yine 1.durumda görüldüğü gibi Sparse File a yazılıyor.  2.Durumda Kaynak veritabanından 10 page den 7 si update ediliyor ve bu 7 Page de sparse file a yazılıyor.  Snapshot için bir Rapor yada Sorgu çekildiği zaman Eski Page ler için SQL Server Source Database i okurken update e uğrayan page leri SQL Server Sparse file dan okur.

Snapshot ın temel amacı veritabanının herhangi bir anında yedeğini almak  ve varsa raporlamaları Snapshot üzerinden yaparak belirli bir aralık için Stabil Rapor oluşturmaktır Ana veritabanında bir Admin veya küçük hatalar meydana gelirse Snapshot dan eski haline dönülür. Ancak şu çok önemlidir ki Snapshot Ana veritabanına bire bir bağlıdır ana veritabanı Silinirse yada göçerse Snapshot dan ana veritabanına dönülemez. O yüzden Snapshot işlemi tam olarak bir Backup Stratejisi denemez.

SQL Server Snapshot İşleminin Avantajları

  1. Raporlama için Avantajlı bir yöntemdir. Anlık gerekmeyen ve sadece belirli zamanlar için Raporlama yapan kişiler e çok gerekli ve mükemmel bir özelliktir. Çünkü Raporlama yapacağı zaman bu özellik sayesinde Stabil data okunacaktır. Buda raporlama için çok önemlidir.
  2. Yine Rapor oluşturmak için Historical data bulundurmayı sağlar.
  3. Fiziksel kopya oluşturmadığı için Disk alanı bakımından normal kopyalama yerine kullanılabilir. Snapshot dosyasında sadece değişmiş veriler saklanır orijinal veriler Source database den okunur.
  4. Kaynak veritabanına Zarar vermemek koşuluyla normal Backup-Restore yapma işlemine göre çok hızlı backup-restore yapılır. Ancak Kaynak veritabanına bir zarar gelirse Snapshot işlemi restore yapılamaz duruma gelir.
  5. Administrative hatalarına karşı etkilidir. Yanlış çalıştırılan bir Update ve Insert scriptinden yada drop edilen bir tablo gibi bir hatadan hemen hızlıca Snapshot restore sayesinde dönülebilir.
  6. Kullanıcılara hazır test database sunar. Kullanıcı istediği kadar hata yapsın bundan geri dönmek çok kolay olacaktır.

SQL Server Snapshot İşleminin Dezavantajları

  1. Performans gerektiren Veritabanları için ekstra yüktür. Veritabanında değişen her page i Snapshot a da kopyaladığı için Veritabanına ve Disk e ekstra bir yük oluşturur.
  2. Snapshot veritabanı, Ana veritabanına bağlı olduğu için Ana veritabanı göçerse  yada Ana Veritabanı Offline modda olduğunda Snapshot da erişilmez.
  3. Snapshot işlemi Effective bir Backup-Restore süreci olarak kullanılamaz.
  4. Snapshot veritabanı Sadece Read-Only dir. Herhangi bir data değişmez değişmesi istendiğinde tekrar Snapshot alınır.
  5. Snapshot ile Source Database aynı instance üzerinde olmak zorundadır.
  6. Sürekli çok fazla Transaction barındıran Veritabanları için kötü bir yöntemdir önerilmez.
  7. Snapshot işlemi Full Text İndexing i desteklememektedir.
  8. Snapshot işlemi Sadece SQL Server ın Enterprise Versiyonlarında bulunmaktadır. Diğer SQL Server Versiyonlarında yoktur bu özellik.
  9. Model,Master,tempdb gibi Sistem veritabanlarının Snapshot ı alınmaz.
  10. Database Snapshot işlemi Sadece NTFS dosya sistemini desteklemektedir, FAT32 Dosya sistemine sahip Snapshot Sparse file oluşturulamaz.

SQL Server da Database Snapshot işleminin en efektif ve en çok kullanıldığı yeri özetleyen resim aşağıdaki gibidir.

Resimden de anlaşıldığı üzere Snapshot işlemi Mirroring yapılan Production sistemlerde Mirror Sunucu üzerinde ki veritabanının Snapshot ı alınarak Mirror Sunucu üzerinde ki Snapshot database de sadece Raporlama ortamı sağlanır.

Böylece Bir SQL Server yazımın daha sonuna gelmiş bulunmaktayım. Bir sonraki yazıda görüşmek dileğiyle Esen Kalın….

 

Mehmet Salih Deveci

Veritabanı Yöneticisi

Reklamlar
yorum
  1. Yavuz Buğra Bal dedi ki:

    15:57de yazmıssın 🙂 Bizde hiç vakit kalmıyor yazı yazmayı bırak 2 tane makale bıle okuyamıyoruz 🙂 İş kebapmış hemşo ….

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      Kanka daha önceden hazırlıyorum ya.. İş zamanı makale bazen yazıyorum oda gerçekten çok boş oldumsa…

  2. Yavuz Buğra Bal dedi ki:

    İyi bakalım bizde ebys 2 haftadır genel müdürlükte aktif olarak kullanılmakta. Çıkan hatalarla boğuşmaktayım 🙂

  3. Yavuz Buğra Bal dedi ki:

    bizde 2 haftadır genel müdürlük olarak ebys kullanımına başladık çıkan hataları bulup düzeltme işlemlerini yapıyorum.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s