Makale Özeti

Bu makalemde sizlere SQL Server 2008 ile birlikte gelen Sıkıştırılmış Yedekleme (Compressed Backup) özelliğinden bahsedeceğim.

Makale

Merhaba arkadaşlar,

Bu makalemde sizlere SQL Server 2008 ile birlikte gelen Sıkıştırılmış Yedekleme (Compressed Backup) özelliğinden bahsedeceğim.

Bazılarınızın da bildiği gibi, bu sıkıştırılmış yedekleme özelliği gerçekten çok gerekiyordu. Veritabanı yöneticileri açısından veritabanları konusundaki en önemli şeyler güvenlik, verinin kullanılabilirliği ve performanstır. Yedekleme, veritabanı yöneticileri için hayati ve sürekli yapılması gereken bir işlemdir. Her zaman son yedeğiniz kadar güvendesinizdir.

SQL Server 2008' den önceki SQL Server versiyonlarında maalesef sıkıştırma özelliği yoktu. Bazı veritabanı yöneticileri bu ihtiyaçlarını üçüncü parti yazılımlar (Red-Gate Backup gibi) kullanarak gideriyordu.

Peki, sıkıştırma neden gerekiyor? Yukarıda da dediğim gibi, veritabanı yöneticilerinin sürekli yedek almaları gerekiyor. Diskler artık eskisi gibi pahalı değiller, çok daha kolay alabiliyoruz; fakat eğer doğru ve düzenli bir şekilde kullanılmazlarsa bir süre sonra disk yönetimi de sorun olmaya başlıyor. Örnek vermek gerekirse, SQL Server sunucularından sorumlu olduğum büyük bir firma, disklerini çok kötü kullanıyordu. Raporlarımda sürekli belirtmeme rağmen gelişi güzel yedekler alıp oraya buraya atıyorlardı ve sonunda ne oldu tahmin edin! Evet, patladılar =)

Eğer yedeklerimizi düzenli ve kontrollü bir şekilde alırsak, böyle sorunlarla karşılaşmayız. Neyse, çok dağıtmadan hemen sıkıştırmanın neden gerektiğine de bir vurgu yapıp hemen yeni özelliklerden bahsedeyim. Gerçi artık vurguya da gerek kalmadı, söylemek istediğim şeyi sanırım çoktan anlamışsınızdır... Bol yedek alacağımız için, disk alanlarından kazanmamız gerekiyor. Ayrıca, sıkıştırma yöntemi kullanacağımız için dosya boyutu daha küçük olacak, yani G\Ç (I\O) işlemleri de azalacak. Her şekilde kazanmış oluyoruz. Tek kayıp var, ondan da sırası gelince bahsedeceğim.

Sıkıştırılmış Yedek özelliği sadece SQL Server 2008' in Enterprise Sürümünde olacak arkadaşlar. Bununla birlikte, bir SQL Server 2008 Enterprise sürümüyle sıkıştırılmış veritabanı yedeği, başka bir SQL Server 2008 sürümüyle (meselâ Standard veya Express) açılabilecek; fakat diğer sürümler maalesef sıkıştırılmış yedek alamayacaklar. Ayrıca, SQL Server' ın eski versiyonları (90, 80, 70...) SQL Server 2008 ile alınan sıkıştırılmış yedekleri açamayacaklar.

Sıkıştırılmış bir yedek ile sıkıştırılmamış bir yedek aynı medya-set' inde saklanamaz.

Her şeyin ama her şeyin bir bedeli olduğuna inanırım; evet, bunun da bir bedeli var! Fiyatı hariç =) Bedeli şu: İşlemci. Evet arkadaşlar, sıkıştırma işlemi, işlemcinizi yoracak. Bununla birlikte, yukarıda da bahsettiğim gibi yedek alma süresini düşüreceği için G\Ç' dan ("Girdi\Çıktı" Bu terimden, fiziksel disklere yapılan yazma ve okumalar kastediliyor.) kâr edeceksiniz.

Bu sıkıştırma işinin gördüğünüz gibi bazı maliyetleri olacağı için, bu işe kalkışmadan önce gerekli performans testlerini yapmanızı tavsiye ederim. Ve de yedeklerinizi iş saatleri dışında almanızı tavsiye ederim. İşlemci o zamanlar daha az kullanılıyor olacaktır. Ayrıca, sıkıştırılmış yedek alacağınız zaman iş saatlerinde işlemcinize ekstra yük bindirmemiş olursunuz. Performans testlerini Yönetimsel Araçlar' daki Sistem Monitörü ile yapabilirsiniz.

Sıkıştırılmış veritabanı yedeği özelliği hem sunucu düzeyinde varsayılan olarak ayarlanabilir, hem de yedek alırken T-SQL komutunun içerisinde siz de belirleyebilirsiniz. Ve tabii ki, SSMS' te yedekleme işlemi için menüleri kullanarak da belirlenebilir.

Bu yöntemlere dair bir kaç tane örnek ve resim de göstermek istiyorum sizlere.

Sunucu düzeyinde ayar yapmak için:
- sp_configure Transact-SQL komutunu kullanabilirsiniz,

veya

- SSMS arayüzünü kullanarak, aşağıdaki resimde de gösterdiğim yerden varsayılan ayar değişikliğini yapabilirsiniz.

 

Sunucu düzeyinde yapılan varsayılan sıkıştırılmış yedek alma ayarından farklı bir yedek almak için ise aşağıdaki yöntemleri kullanabilirsiniz:

- BACKUP DATABASE \ LOG komutu ile birlikte WITH NO_COMPRESSION veya WITH COMPRESSION anahtarlarını kullanabilirsiniz.

veya

- SSMS kullanarak aldığınız yedeğin Seçenekler menüsünden "Compress backup" veya "Do not commpress backup" seçeneklerini kullanarak ihtiyacınıza göre yedek alabilirsiniz. Ayarı nereden yapacağınıza dair de bir resim ekliyorum aşağıya.
 

Tabii bir de veritabanlarının neye göre ve ne kadar sıkıştırılacağı konusu var. Bu konuda da aşağıdaki bilgileri dikkate alın. Veritabanlarınızın yedekleri, bu kriterlere göre çok veya az sıkıştırılacaktır.

- Verinin tipi: Her zaman olduğu gibi (Winzip veya Winrar vb. programlarda) karakterler daha çok sıkıştırılır.

- Sayfa (Page)' lardaki satırların veri bütünlüğü: Tipik olarak, bir sayfadaki satırlarda bulunan verriler aynı değerleri içeriyorsa önemli bir miktarda sıkıştırma oranı yakalayabilirsiniz. Tam tersi bir senaryoda ise, yani eğer her sayfada büyük ve sadece bir satır varsa veya veritabanınızda hep farklı farklı, birbirine benzemeyen veriler varsa o zaman sıkıştırılmış veritabanı yedeğinizin boyutu, hiç sıkıştırılma işlemine uğramamış veritabanı yedeğiyle aynı olacaktır büyük ihtimalle.

- Verilerinizi şifreli olup olmadığı (Encrypted): Sıkıştırılmış veritabanı yedeğiniz, şifrelenmemiş benzerlerine göre çok daha az sıkıştırılacaktır.

- Veritabanınızın sıkıştırılmış olup olmadığı: Bu durumda sıkıştırılmış veritabanı yedeğiniz neredeyse hiç bir boyut azalmasına neden olmayacaktır.

Not: Bu son öğede lütfen yanlış anlaşılma olmasın. SQL Server 2008' de, veritabanını da sıkıştırabiliyorsunuz. Yani veritabanını sıkıştırmak başka bir işlem, sıkıştırılmış veritabanı yedeği almak başka bir işlem.

Özet:
Size bu makalemde SQL Server 2008 Enterprise Edition ile birlikte gelecek olan Yedek Sıkıştırma (Backup Compression) özelliğini anlatmaya çalıştım. Umarım yararlı olmuştur.


Ekrem Önsoy