SQL Server 2014 Yenilikleri 1 - Hybrid Cloud (26.10.2016)
CTP2 versiyonu yayında olan SQL Server 2014 ile birlikte çeşitli konularda birçok yenilik geldi. Microsoft geçtiğimiz günlerde yenilikleri duyurma hızını arttırabilmek amacıyla US’e davet ettiği MCT’lerle Train-the-Trainer eğitimlerini de düzenledi. Bu yenilikler son halini almamış olsa da artık yetenek olarak olgunlaştı ve üzerinde tartışılabilir, paylaşılabilir hale geldi diyebiliriz. Ürün henüz piyasaya sürülmemiş olsa da yenilikleri takip etmek isteyeceğinizi düşündüm. İleride tamamı üzerinde yazılarımın olacağı birkaç başlıkta bunları inceleyeceğiz. Bu bölümde ise Hybrid Cloud başlığına yer veriyor olacağım.
Son zamanlarda bulut (Cloud) ile ilgili çalışmalar ciddi manada hız kazandı ve birçok firma bu konuda çözümler üretmeye karar verdi. Firmalar müşterilerinin çeşitli alt başlıklardaki teknoloji ihtiyaçlarını kendi veri merkezlerinde(Datacenter) çözümleyip hizmet olarak sunmakta. Bu durumun getirileri genel olarak şöyle; kullandığın kadar ödeyebilme, donanım yatırımıyla ilgilenme ihtiyacının tamamen ortadan kalkması(güncelleme, bakım, yedekleme, uzman vs.), sistemin sürekli ayakta kalabilmesi için ve yüksek erişilebilirlik için ekstra çaba sarf etmeye gerek kalmaması(donanım, yazılım, uzman vs.).
Microsoft’un bu kapsamdaki Windows Azure olarak bilinen çözümü son güncellemelerle oldukça yetenekli hale geldi. Windows Azure’u test etmek isterseniz http://www.windowsazure.com/en-us/ sitesi üzerinden bir deneme hesabı açabilirsiniz.
Windows Azure’un uygulama, altyapı ve veri konusundaki hizmetleri dünya üzerine dağılmış çeşitli datacenterlar sayesinde sanal makinelerden web sitelerine, karmaşık ve uzun işlemleri hızla yapan süper bilgisayarlardan kolay ve sürekli erişilebilen veritabanlarına, sınırsız storagedan mobil servicelere kadar birçok ihtiyaca cevap verebilmektedir.
Windows Azure hakkında eğitici dokümanların sayısı giderek artmakta ve daha da açıklayıcı hale gelmekte. Bu sebeple direk SQL Server tarafını ilgilendiren kısma, yani Data Services (Veri Hizmetleri) kısmına geçebiliriz. Bu durumda şöyle bir manzara ile karşılaşıyoruz:
Bu görünümdeki henüz gelişmekte olan Big Data ve NoSQL ile ilgili HDInsight, Tables çözümlerini başka bir yazımızda incelemek üzere geride bırakalım istiyorum.
Relational kısımdaki SQL Database başlığı SQL Azure’u işaret etmektedir. Hem bir web arayüzü(Silverlight) ile hem de SSMS ile bağlanılıp yönetilebilen SQL Azure hizmeti ilk haline göre yetenek olarak biraz daha gelişti. Fakat asıl yenilikler Blob Storage ve SQL Server in a VM hizmetleri olduğu için bu yazımızda odaklanacağımız kısımlar da bunlar olacak.
Şimdi gelelim Hybrid Cloud başlığı altındaki yeniliklere...
1- Blob Storage
a. Yedekleme Çözümü
Bir storage hizmetidir. Basitçe bir disk kiralamış oluyoruz. Her hangi bir veriyi; resim, müzik, video, backup, database dosyaları vs. klasörleyerek tutabiliyoruz. Konsept biraz farklı olduğu için Azuredaki bir Storage üzerinde klasörler, Containerlar ile temsil edilmektedir.
https://manage.windowsazure.com/ üzerinden Windows Azure’a bağlandıktan sonra soldaki STORAGE menüsü yardımıyla bulutdepo adında bir alanı birkaç dakika içerisinde oluşturabiliyoruz. Oluşturma esnasında storagein replicate olup olmayacağı ve dünya üzerinde hangi datacenter grubunda konumlanacağını belirtebiliyoruz.
Kısa sürede oluşan Storage üzerinde monitörleme yapabilir, yazma okuma ve replikasyon gibi ayarları değiştirebilirsiniz. Storage içerisinde policyler yardımıyla erişim seviyesini, süresini vb. yönetebileceğiniz CONTAINER’lar oluşturarak yüklemek istediğiniz nesneleri klasörleyebilirsiniz. Ben de örneğimde bulutdepo storageı altında http://bulutdepo.blob.core.windows.net/yedekler URL’si ile erişebileceğim yedekler isimli bir Container oluşturdum.
Containerlara silverlight arayüzünden bir şey upload edilemiyor fakat download edilebiliyor. Eğer bu storageı bir skydrive mantığında kullanmak isterseniz veya storagea erişim sınırlamaları getirmek için kolayca policyler tanımlamak isterseniz Azure Storage Explorer uygulamasını şuradan http://azurestorageexplorer.codeplex.com/ indirip kurmanız işinizi kolaylaştırır. Aksi halde birçok ihtiyaca binaen geliştirilen yaklaşık 5mb'lık bu küçük uygulamanın yaptıklarını kodlarla yapmanız gerekecek.
Azure Storage Explorer’ı açtıktan sonra Add Account butonu ile Storage Accountuzu ekleyip solda containerları listeleyebilir, dosya upload-download edebilir bunları ön izleyebilirsiniz.
Ayrıca bu uygulama yardımıyla storagea kısıtlı erişim sağlanabilmesi için policyler (Shared Access Policies) oluşturabilir yazma, okuma ve silme haklarını verip-engelleyebilir hatta bunun için bir tarih aralığı belirleyebilirsiniz.
Bu durumda birazdan geleceğimiz kısımla ilgili olarak Credential oluştururken veya storagea bağlanılmak istenen herhangi bir durumda Access Key veya Storage Account Key alanında yukarıdaki resimde görünen Generate Signature ile üretilmiş URL’deki soru işaretinin sağında kalan kısım kullanılmalıdır.
Storagelara bağlanan daha entegre bir araç yok mu?
Var. SSMS storage bağlanabiliyor ve containerlar içerisindeki dosyaları listeleyebiliyor. Ancak CTP2 versiyonundayız ve şimdilik burada dosyalar için upload-download veya ön izleme gibi bir özellik yok sadece silme ve listeleme özelliği var.
Azure Storage hangi amaçlar için kullanılabilir?
En başta Skydrive mantığında dosya deposu olarak kullanabiliriz. Veritabanı bakış açısıyla olaya yaklaşırsak. SQL Server için disk ne ise Azure Storage da odur diyebiliriz. Yani üzerine backuplar alabilir, data ve log dosyalarını tutabiliriz.
Azure Storage DR (Disaster Recovery) çerçevesinde güvenli, yedekli, uzak ve sürekli erişilebilir kopyalar gereksinimine oldukça mantıklı bir cevap olarak duruyor. Buraya yedeklemenin rahatça yapılabilmesi için klasik backup seçeneklerine ek olarak URL Backup opsiyonu da geldi. URL backup opsiyonunu tercih ettiğinizde ise dilerseniz Encryption Backup seçeneğini kullanabilirsiniz. Bu sayede backuplarınızı AES 128, AES 192, AES 256 ve Triple DES algoritmaları ile şifreleyerek bulutta güven altında tutabilirsiniz.
Azure Storage üzerine backup nasıl alınır?
Öncelikle bir Credential oluşturmamız gerekiyor. Credential SQL Server’ın dışındaki bir kaynağa erişmesi için kullandığı bir güvenlik nesnesidir.
Azure Storage için Credential oluşturmanın birkaç yolu var. Bu işi backup öncesinde yapmak istiyorsak SQL script veya klasik olarak SSMS’daki Object Explorer penceresinden Security/Credentials/New Credential seçeneğini kullanarak ara yüz yardımıyla yapabiliriz. Backup için gereken ayarları yaptığımız kısımda oluşturmak istiyorsak https://manage.windowsazure.com/publishsettings/Index?client=vs&SchemaVersion=1.0 adresinden indireceğimiz publishsettings uzantılı dosyayı kullanabiliriz. Bu dosyayı Get-AzurePublishSettingsFile PowerShell komutu ile de çağırıp indirebiliriz.
Script ve arayüz ile şu şekilde credential oluşturulabilir:
(Not: Credential oluştururken Credential Name kısmına https ile başlayacak şekilde container URL’sinin verilmesi policy ile erişim gerektiren durumlarda zorunludur.)
Credential oluşturduktan sonra şu şekilde script veya arayüz yardımıyla backuplar alınarak, Azure Storage’a gönderilebilir.
İstenirse backup alınırken arayüzdeki SQL Credential karşısında bulunan Create… butonu kullanılarak, indirilen publishsetting dosyası yardımıyla da credential bilgisi üretilebilir.
Yeni URL backup özelliği ile backup alma işleminin otomatize edilebilmesi ve yönetilebilmesi için msdb veritabanı altında bulabileceğiniz smart_admin ile başlayan yeni fonksiyon ve prosedürler işlerinizi oldukça kolaylaştıracaktır.
Eğer Azure Storage’ı DR site olarak kabul ettiyseniz ve SQL Server 2014 öncesi backuplarınızı da burada tutmak isterseniz, az önce bahsi geçen Azure Storage Explorer uygulamasındaki upload seçeneğini kullanabileceğiniz gibi http://www.microsoft.com/en-us/download/details.aspx?id=40740 linkinden indirebileceğiniz bu iş için yapılmış Windows Azure Tools isimli aracından da faydalanabilirsiniz. Basitçe neredeki backupları nereye alacağını belirten bir kural ekleyerek, alınan backupların yakalanıp Azure Storage’a upload edilmesini sağlayabilirsiniz.
Restore işlemini nasıl gerçekleştireceğiz?
Aşağıdaki gibi script veya arayüz yardımıyla restore işlemini gerçekleştirebilirsiniz.
b. Veritabanı Lokasyonu
Azure Storage’ı backup/restore lokasyonu dışında data ve log dosyalarını tutabileceğimiz bir alan olarak da kullanabiliriz. Bu durumda SQL Server servisi bulut dışında çalışırken data ve log dosyaları bulutta yüksek erişim konusunda daha güvenli bir yerde durabilir. Data ve Log dosyalarının bulutta durmasının bilgi güvenliği bakımından riskli olduğunu düşünüyorsanız veritabanınızı TDE (Transparent Data Encryption) ile şifreleyip anahtarın sizde şifreli dosyaların bulutta durmasını sağlayabilirsiniz.
Bulutta data ve log dosyası create etmek için şu şekilde:
Var olan dosyaları servera attach etmek için şu şekilde:
Kodlama yapabilirsiniz veya klasik ara yüzleri kullanabilirsiniz. Tabii ki bunu yapabilmek için öncelikle policy tabanlı erişimi sağlayacak bir credential oluşturmanız gerekir.
Policy oluşturmak için Azure Storage Explorer aracındaki Security butonunu kullanabiliriz. Öncelikle Shared Access Policies tabında bir policy tanımladıktan sonra Shared Access Signatures tabında bir Signature üretmemiz gerekir.
Hemen sonrasında buradaki bilgileri kullanarak yukarıdaki script ile bir credential oluşturabiliriz. Credential’ı başarıyla oluşturduğumuzda data ve log dosyalarımızı bahsettiğimiz arayüz veya scriptleri kullanarak bulutta tutabiliriz.
Hybrid Cloud başlığı altında inceleyeceğimiz bir diğer yenilik ise buluttaki bir sanal makine içerisinde konumlayabileceğimiz SQL Server kurulumu ile çalışabilme özelliğidir.
2- SQL Server in a Windows Azure VM
Windows Azure hizmetlerinden birisi de dakikalar içerisinde bir sanal makine kurulumunu edinebilmeniz ve bu makineye Remote Desktop ile erişip yönetebilmeniz ile ilgili.
CENTOS’tan ORACLE, SUSE’dan MS SQL Server’a farklı VM kurulumlarını bünyesinde barındıran Windows Azure erişilebilirlik, donanım, bakım gibi konuları üstlenmiş ve garanti altına almıştır.
Ancak sonuç itibari ile oluşan şey bir sanal makinedir. Bu noktada bizim ilgimizi çeken kısım içerisine kurduğumuz SQL Server ile yapabileceklerimiz oluyor.
a- Cloud DR
VM içerisindeki bu SQL Server’ı On-Primeses (bulutta olmayan) serverlarımızla bir arada High Availability kapsamına alabiliriz. Yani read-write komutlarını gönderildiği primary sunucu lokal; replica ise bulut üzerinde bulunabilir veya tam tersi kurulum gerçekleştirilebilir.
Bu bağlamda SQL Server 2014’ün AlwaysOn konusundaki yeniliklerinden birisi de bulutta bir replica oluşturabilmektir.
b- Database deploye to SQL Server in a VM
Eğer lokaldeki bir veritabanını artık bulutta barındırdığınız bir VM içerisindeki SQL Server’a deploy etmek istiyorsanız SSMS üzerinde entegre bir çözüm de mevcut. Aşağıdaki gibi Task/Deploy Database to a Windows Azure VM… seçeneği ile deploy işlemini gerçekleştirebilirsiniz.
Bunun için Windows Azure üzerinde port açmalı ve VM’in Cloud Adapter servisinin açık olduğundan emin olmalısınız. Test etmek isteyenler CTP2 versiyonunun bu konuyu içeren hotfixini uygulamaları gerekecek. Hotfixi şu linkten temin edebilirsiniz: http://support.microsoft.com/kb/2907705/en-us.
Cloud ile ilgili olarak Big Data konusu haricinde veritabanı bakış acısı ile neredeyse gelen tüm yeniliklere değinmiş olduk.
Bulut konusunda verdiğim eğitimlerdeki katılımcıların ortak fikri ileride bu teknolojinin çok daha yaygın olacağı yönünde olsa da günümüzde bazı çekinceleri olduğunu gizlemiyorlar. Bu çekincelerden en çok duyduklarım internet alt yapısı ve yurt dışına veri çıkarma konusundaki kanunlar olmuştur. Belki de bu çekinceler size hitap etmiyordur ve bulut tam aradığınız ucuz bir çözümdür.
Big Data konusunda tekrar dönmek kaydıyla şimdilik bulut ile ilgili olarak bu kadarı yeterli. Diğer SQL Server 2014 yenilikleri başlıklarına da yakın zamanda bir göz atmış olacağız.
Abdullah KİSE
Veri Yönetimi ve İş Zekâsı Ekibi