Merhabalar,
Azure üzerinde SQL Server çalıştırma ile alakalı yazılarımıza devam ediyoruz. İlk yazımızda genel olarak Azure üzerinde SQL Server çalıştırma ile alakalı alternatiflerden bahsetmiştik ve başlık olarak bu alternatiflerden bahsetmiştik.
Ayrıca ilk alternatifimiz olan SQL Virtual Machine on Azure kurulumunu yaptık ve on prem deki veritabanımızı bu vm üzerine taşıdık.
İlk makaleyi okumayanların gözatması için buraya linki bırakıyorum.
https://www.cozumpark.com/azure-uzerinde-sql-server-1-sql-on-azure-sql-virtual-machine/
Ve bu yazımızın konusu, SQL Server’ı Azure üzerinde bir database hizmeti olarak çalıştırmak.
Azure SQL Database
Bizim ihtiyacımız sadece SQL Server hizmeti demiştik ya önceki makalede; İşte Azure bu noktada sadece bizim ihtiyacımızı karşılamak ve bu noktada işletim sistemi gibi yükleri bizim üstümüzden almak için PaaS yöntemini kullanan çözümler üretiyor. PaaS, Platform as a Service anlamına geliyor. Yani bize bir platformu hizmet olarak sunuyor. Bu anlamda sunulan hizmetlerden biri Azure SQL Database.
Bu hizmette Azure üzerinde bizim belirlediğimiz özelliklerde bir SQL Server Database hizmeti sunuluyor. Bu hizmetin bazı limitleri olsa da bir çok ihtiyacı karşılayabilecek bir durumu var.
Azure SQL Server’ın oldukça fazla avantajları da var dezavantajları da. Aslında dezavantaj değil de değiştirilmesi gereken alışkanlıklar demek daha doğru zira kısıtlanan özellikler alternatifsiz değil.
- Azure SQL Server size her zaman en güncel kararlı sürümü kullanmayı garanti ediyor. Böylece versiyon upgrade vs gibi işlemlerle uğraşmak ve bu işlemlere ücret ödemekten kurtuluyorsunuz.
- Bir diğer önemli nokta yedekleme. Azure SQL Server 7 gün boyunca yedeklerinizi alıyor ve saklıyor. Siz herhangi bir yedeğe dönmek istediğinizde 7 gün içindeki istediğiniz ana dönebiliyorsunuz. Daha uzun süreli yedek ihtiyacınız varsa bu süreyi 35 güne kadar çıkarabilirsiniz hatta Long Term Retention (LTR) özelliğini aktif ederek de 10 yıla kadar yedeklerinizi Azure Blob Storage üzerinde barındırabiliyorsunuz.
- Ayrıca Azure SQL Server size %99,99 kesintisiz çalışma garantisi veriyor.
- Bir sunucu kullanmaya göre çok daha ekonomik.
Peki kısıtlanan özellikler neler onlara bakalım?
- On prem ortamında kullanılan backup/restore komutlarını burada kullanamıyorsunuz. Ancak buna ihtiyaç da yok. Zira Azure sizin adınıza 7 gün boyunca istediğiniz ana dönebileceğiniz bir yedekleme sistemini zaten çalıştırıyor.
- Azure veritabanınınızı on prem ya da başka bir platforma taşımak isterseniz de bacpac ya da dacpac dosyası şeklinde Azure Blob Storage üzerine alarak oradan download edebilirsiniz.
- SQL Server Agent da yine Azure SQL Server üzerinde olmayan özelliklerden. Fakat alternatif olarak Azure Automation kullanabilirsiniz.
- Change Data Capture (CDC) özelliği SQL Server’dan tanıdığımız ve belirlediğimiz tablolarda transaction log dosyasını okuyarak insert,update ve delete işlemleri sonrasındaki tablodaki eski değerleri loglayan bir özellik. Tabi arka planda bu işleri yaptıran servis SQL Server Agent. Haliyle SQL Server Agent olmayınca bu özellik de çalışamaz hale geliyor. Tabi bu özelliği kullanan firma sayısı yüzde kaçtır? Eminim bir çoğumuz böyle bir özelliğin varlığını bile bu makalede öğreniyoruz.
- Azure SQL Server’da database recovery model full mode’da bulunur ve bunu değiştiremezsiniz. Zaten alınan yedeklerin istenilen zamana dönülebilmesini sağlayan özellik de şüphesiz bu özelliktir.
- Azure SQL Server’da desteklenmeyen özelliklerden bir diğeri de database mirroring özelliği. İki Azure SQL Veritabanını bir birine mirror olarak bağlayamazsınız.
- Mirror işleminde olduğu gibi iki Azure Sql Veritabanında replikasyon da yapamazsınız. Ancak hem mirror da hem de replikasyonda on premdeki bir sunucunuzu kullanabilirsiniz.
- SQL Clr: Azure Sql Server tarafında desteklenmemektedir.
- SQL Server Browser hizmeti de yoktur. İşletim sistemi içinde birden fazla SQL Server instance ı olduğunda client named instance a bağlanırken 1433 değil başka bir porttan bağlanmalıdır. Zira 1433 default instance tarafından kullanılmaktadır. SQL Server Browser hizmeti client a hangi porttan gelmesi gerektiğini söyler. Görüldüğü gibi bu bilgi işletim sistemi bazında olan bir bilgidir ve Azure SQL Server’da böyle bir şeye ihtiyaç yoktur.
- SA kullanıcı adı yoktur.
- SQL Profiler da yine Azure Sql Server tarafında desteklenmemektedir.
- Logshipping,Trace Flags, Global Temrorary Table gibi özellikler de Azure Sql Server’da desteklenmemektedir.
Bu kadar avantaj ve dezavantajlardan bahsettikten sonra şu yorumu yapabiliriz.
Azure SQL Server özellikle yeni nesil uygulamalar için oldukça uygundur. Çünkü bu uygulamalar bir db üzerinde çalışır. İhtiyaç halinde başka database ler ya da sistemlerden çeşitli api ve servisler ile veri çeker. Veriler database den bir katman içerisinde çekilir ve bu katmanın kullanıcısı bellidir.
Temel alışkanlıklar ile bir sunucuda birden fazla db barındıran, bunlar arasında çapraz sorgularla birleştirmeler yapan (select * from dbname.dbo.tablename) sorgular kullanan, sürekli yeni db ler oluşturan ve işletim sistemi ve instance özelinde bazı şeylere ulaşmak isteyenler kısacası veritabanı sunucuyu bir hizmet gibi değil de bir sunucu gibi kullanmak isteyenler için çok uygun olduğunu söylemek zor.
Peki bu kadar anlattıktan sonra bu ihtiyaçları karşılanmayan kullanıcılar sanal makine modeline mi dönmeli? Tabi ki Hayır.
İşte bu ihtiyaçları görerek Microsoft yeni bir SQL Server PaaS hizmeti daha geliştirdi. Bir sonraki maddede bu hizmeti konuşacağız ancak şimdi Azure SQL kurulumunu gerçekleştirelim.
Home kısmında arama kutucuğuna Azure SQL yazıyoruz ve Azure SQL seçeneğine tıklıyoruz.
Karşımıza mevcutta sahip olduğumuz SQL database lerimiz gelecek. Buradan Add butonuna tıklıyoruz.
Burada SQL Databases sekmesinde karşımıza üç seçenek çıkıyor.
Burada details butonuna tıkladığımızda aralarındaki farkları görebiliriz.
Single Database: Modern uygulamalar için uygun bir model. Bir database ihtiyacımız var. Kullanılacak kaynaklar tahmin edilebilir düzeyde ve yönetim tamamen Azure tarafında. Biz hizmet olarak bir database için hizmet alıyoruz.
Elastic Pool: Belli bir kaynak havuzu ve birden fazla database imiz var. Bu havuzdan database lere ihtiyaç doğrultusunda kaynak aktarılıyor.
Biz en basit model olan Single Database modelini seçiyoruz ve create butonuna basıyoruz.
Database name kısmına bir isim veriyoruz ve server kısmına henüz hiçbir server ımız olmadığı için create new diyoruz.
Server adı, kullanıcı adı ve şifre gibi bilgileri giriyoruz.
Genel amaç için bir sunucu seçiyoruz ve yaklaşık maliyet çıkarılıyor.
Network ayarlarını yapıyoruz.
Bir sonraki ayarda database i biz deploy edeceğimiz için Use existing data kısmını boş bırakıyoruz.
Database collation önemli. Çalışacağımız database in collation değeri ne ise onunla değiştiriyoruz. Default gelen değer SQL_Latin1_General olmasına rağmen ben onu Turkish_CI_AS olarak değiştiriyorum. Çünkü benim deploy etmek istediğim database imin collation’ı Turkish_CI_AS.
Create butonuna basarak database i mi oluşturuyorum.
Deploy işlemi tamamlandı. Go to resource diyerek detaylara gidiyoruz.
Gördüğünüz gibi oldukça zengin bir ekran bizi karşılıyor. Bu ekranın detaylarını başka bir makalenin konusu yapıp Show connection strings linkine tıklıyoruz.
Şimdi management studio ile bu connection stringteki bilgilere göre database imize bağlanalım.
Yeni firewall kuralı eklemem için azure ile login olmamı istiyor.
Artık database imize bağlandık.
Şimdi local database imizi buraya deploy edelim. Bunun için local database üzerinde sağ tık
Tasks>Deploy Database to Microsoft Azure Database diyoruz.
Connect diyerek hedef database imizi seçiyoruz.
İşlem tamamlandı. Yaklaşık 400 MB büyüklüğündeki database in on prem den Azure a deploy işlemi adsl bağlantı hızında yaklaşık 24 dakikada gerçekleşti.
Görüldüğü gibi burada SQL Server Agent yok ve aynı zamanda başka bir db seçili iken database ismi ve şema ismi ile kullanım yapamıyoruz.
Azure SQL Server yapısının diğer özelliklerini de detaylı anlatma konusunu başka bir makaleye bırakıyoruz. Zira her bir özelliği oldukça detaylı.
Bir sonraki makalede SQL Managed Instance anlatıyor olacağım.
Görüşmek üzere,
Sağlıcakla kalın…