SQL Server 2008 – Sıkıştırılmış Yedekleme Backup Compression
SQL Server 2008 makale serimize aşağıda görmüş olduğunuz kurulum ve kurulum sonrası temel bazı uygulamaları içeren aşağıdaki makaleleler ile sizlerle paylaşmıştık. Eğer SQL Server konusuna yeniyseniz öncelikle aşağıdaki makaleleri okuduktan sonra bu makalemize devam etmenizi öneriyorum.
SQL SERVER 2008 – Nedir – Kurulum Gereksinimleri – Destekleri – IIS 7 Yukleme
SQL SERVER 2008 – Kurulum
SQL SERVER 2008 – Management Studio ile Calışmak
Bu makalemizde sizlerle SQL Server 2008 ile gelen veritabanı bileşenlerinde gelen yeni özelliklerden SIKIŞTIRILMIŞ YEDEKLEME (BACKUP COMPRESSION) özelliğini anlatacağız. İleriki makalelerde ise SQL Server 2008 ile veritabanı bileşenlerinde hem yönetimsel hem de programlama tarafında gelen yeniliklerle beraber iş zekası çözümlari tarafında Analiz Servisleri, Entegrasyon Servisleri ve Raporlama Servislerinde gelen yenilikleri ve bunlara ilişkin örnek uygulamaları sizlerle paylaşıyor olacağız.
Sıkıştırılılmış Yedekleme (Backup Compression) sayesinde SQL Server 2008 ile artık aldığınız yedekleri sıkıştırarak disk üzerinde çok daha az alanlar kullanmalarını sağlayabiliyoruz. Yedek sıkıştırma özelliği sadece SQL Server 2008 Enterprise sürümü ile desteklenmeye başlanan bir özellik. Sıkıştırılarak alınan yedekler SQL Server 2008 ile ve bundan sonra çıkacak SQL Server sürümlerinde çalışan tüm veritabanı sistemlerine geri yükleme yapılabilecek.
Sıkıştırılmış yedekleme özelliği SQL Server 2008’de varsayılan olarak kapalı durumda gelir. Bu özelliği aktifleştirmek ya da değiştirmek isterseniz SQL Management Studio konsolunda SQL Server bilgisayarınızın Properties’inde gelen Database Settings sayfasındaki Compress Backup kutucuğunu kullanmalısınız.
NOT: Sıkıştırılmış yedekleme özelliği ile ilgili server seviyesinden yapılan bu ayarı aynı zamanda Transact-SQL kodlarını kullanarak aşağıdaki şekilde backup compression default’ değerini kullanarak değiştirebilirsiniz:
USE master;
GO
EXEC sp_configure ‘backup compression default’, ‘1’;
RECONFIGURE WITH OVERRIDE;
Eğer alacağınız yedeklerde kullanıcı kendisi bir ayar yapmadan sıkıştırılmış yedek almasını istiyorsanız bu kutucuğu doldurmanız gerekir. Bu kutucuk dolu olduğu durumda kullanıcı aldığı yedek işlemi esnasında isterse sıkıştırılmış yedek alma özelliğini aşağıdaki seçeneği kullanarak kullanmayabilir.
Yedekleme işlevini transact-sql kodları ile yapıyorsanız backup database kodunuzda NO_COMPRESSION ifadesini kullanmanız yeterli olacaktır.
BACKUP DATABASE AdventureWorks TO DISK=‘C:\COZUMPARK\CompressedBackup.bak’
WITH FORMAT, NO_COMPRESSION
Sıkıştırılmış Yedekleme yapmak için NO_COMPRESSION yerine COMPRESSION kullanmanız yeterli olacaktır.
SQL MANAGEMENT STUDIO İLE
SIKIŞTIRILMIŞ YEDEKLEME UYGULAMASI
Sıkıştırılmış Yedekleme özelliğini bir uygulama ile görelim:
SQL Server 2008 program grubu içerisinden SQL Management Studio konsolunu açıyoruz. Ve ister Windows Authentication isterseniz de SQL authentication kimlik doğrulama yöntemlerinden birini kullanarak SQL Server Database Engine bileşenine bağlanıyorum. (Benim Makina adim ISTANBUL ).
SQL Management Studio içerisinde yedekleme yapacağım AdventureWorks2008 veritabanı üzerinde aşağıdaki şekilde görüldüğü gibi yedek alma ekranını açıyorum:
Gelen pencerede yedeği alacağım lokasyon olarak C:\COZUMPARK\SQLYEDEK klasörünü gösteriyorum ve alacagim yedek dosyasinin adini da NormalYedek olarak veriyorum.
Bu yedeklemede sıkıştırma kullanmıyorum. Bunun kontrolü için Options sayfasına geçiyorum.
Ve burada Compression bölümünde gelen liste kutusundan “Do not compress backup” seçeneğini seçiyorum. Eğer burada “Use the default server setting” ayarını seçerseniz bu şu anlama geliyor: “SQL Server bilgisayarınızın seviyesinden sıkıştırma ile ilgili hangi ayar yapılmışsa o ayar geçerli olsun diyorum.”
Ben server seviyesinden varsayılan davranış olarak sıkıştırma özelliğini açmadığım için alacağım yedek de sıkıştırma kullanmadan alınan normal yedek olacaktır.
Server seviyesindeki compress seçenek ayarlarına ulaşmak için aşağıdaki şekilde de görüldüğü üzere SQL Management Studio (SQLMS) içerisinde server adınızın Properties’inden Database Settings sayfasına ulaşmanız yeterli olacaktır.
OK butonuna tıklayarak yedekleme işlemini başlatıyorum. Yedekleme işlemi tamamlandıktan sonra şekilde de görüldüğü üzere toplamda yaklaşık 187 MB olduğunu görüyorsunuz.
Şimdi aynı konuma sıkıştırma uygulayarak yedekleme yapacağım ve kapladığı alana bakacağım. Aldığım yedeğe CompressedBackup adını veriyorum.
OK butonuna tıklayarak yedekleme işlemini başlatıyorum. Yedekleme işlemi tamamlandıktan sonra şekilde de görüldüğü üzere 48 MB boyutuna düştüğünü görüyorsunuz.
Sıkıştırılarak alınan yedekler daha az I/O kullandıklarından performansa da önemli bir katkı sağlarlar. Aynı zamanda yedekleme zamanı da ciddi oranda düşmektedir. Diğer yandan sıkıştırma operasyonundan dolayı CPU kullanım oranı daha da artacaktır. Özellikle CPU kullanımının SQL Server 2008 Resource Governor ile sınırlandırıldığı durumlarda CPU tüketimini dikkate alarak sıkıştırılmış yedekleme ile ilgili konfigürasyonlarınızı yapmanızda fayda var.
Alınan yedeklerdeki sıkıştırma oranları hakkında bilgi almak için aşağıdaki sorguyu kullanabilirsiniz:
SELECT backup_size/compressed_backup_size FROM msdb..backupset;
SIKIŞTIRMA ORANI HAKKINDA
Sıkıştırılmış yedeklemede sıkıştırma oranına etki eden faktörleri şu şekilde sıralayabiliriz:
· Veri tipi (Karakter tipindeki veriler diğerlerine oranla daha fazla sıkışır.)
· Satırlardaki verilerin bütünlüğü
· Verinin şifrelenmesi ya da şifrelenmemesi (Şifrelenmiş veriler şifrelenme uygulanmamış verilere oranla ciddi oranda daha az sıkıştırma yapılabilirler.)
· Veritabanınında sıkıştırma özelliğinin kullanılıp kullanılmaması (Sıkıştırılmış veritabanlarının yedekleri daha az oranda sıkıştırmaya tabi tutulurlar.)
TRANSACT-SQL İLE SIKIŞTIRILMIŞ YEDEKLEME UYGULAMASI
Şimdi de aynı yedekleme işlemini transact-sql komutları ile gerçekleştirelim. Önce sıkıştırma uygulamadan yedekleme yapmak için aşağıdaki kodları SQL Management Studio içerisindeki sorgu ekranına yazmanız yeterlidir.
BACKUP DATABASE Adventureworks2008
TO DISK = ‘C:\COZUMPARK\SQLYEDEK\NormalYedek.bak’
WITH INIT, NO_COMPRESSION
Şimdi de aynı yedekleme işlemini transact-sql komutları ile sıkıştırma uygulayarak yedekleme yapmak için aşağıdaki kodları SQL Management Studio içerisindeki sorgu ekranına yazmanız yeterlidir.
BACKUP DATABASE Adventureworks2008
TO DISK = ‘C:\COZUMPARK\SQLYEDEK\CompressedBackup.bak’
WITH INIT, COMPRESSION
NOT: Sıkıştırılmış yedeklerin geri yüklenmesi süreci de normal alınmış yedeklere oranla daha kısa sürede gerçekleşecektir.
Bu makalemizde sizlere SQL Server 2008 ile beraber gelen SIKIŞTIRILMIŞ YEDEKLEME (BACKUP COMPRESSION) özelliğinin bizlere neler sağladığı, klasik yedeklemeden farklarını ve bu özelliğin kullanımını uygulamalı olarak anlattık. Önümüzdeki makalelerde SQL Server 2008 ile beraber gelen yeni özellikleri detaylı uygulamalarıyla birlikte anlatmaya devam edeceğiz.