Teknoloji Kıyaslama

SQL Server Teknolojileri Kıyaslama

Bu bölümde aşağıda belirtmiş olduğum, SQL Server teknolojilerini kıyaslayacağız. Kısaca ne oldukları, avantaj ve dezavantajlarının neler olduğundan bahsedeceğiz.

  • SQL Server Failover Cluster
  • Log Shipping
  • Database Mirroring
  • Always ON

Öncelikle, Bizim elimizde 1 tane SQL Server’ımızın olduğunu düşünelim. Bunun bağlı olduğu bir storage’ımız var. Makinenin IP si 192 .168.100.15 olarak verilmiş olsun.

Peki client buraya bağlanırken nasıl bağlanıyor?

Client server ın IP’si üzerinden, server ın ethernet i üzerinden 192 .168.100.151 IP’si üzerinde bağlanıyor ve işlemleri gerçekleştiriyor.

Peki burada bir felaket senaryosu yaşadığımızı farzedelim, yazılımsa veya donanımsal bir sıkıntıdan dolayı sunucumuz gittiğini düşünelim, bu durumda benim client’ımın bağlantısı da gidiyor ve artık çalışamaz hale geliriz.

Bunun önüne geçmek adına ikinci bir server daha hazırda bekletilebilir. (birden fazla yapının bir arada, burda bir cluster yani küme var)

Benim bu sunucum gittiğinde doğal olarak storage ile bağlantısının da bir anlamı kalmayacak ve benim yedek bulundurduğum sunucum artık storage ile bağlantısını aktif hale getirecek ve hayatına 192.168.100.152 IP’sinden hayatına devam edecek.

Peki burda Client’ımız nerde?

Clientımız normalde soldaki makineye bağlı, 192.168.100.151 connection stringi ile buraya bağlı

Bu durumda yapılacak 2 şey var.

  • Sunucunun IP’sini değiştirebiliriz.
  • Uygulamaların bağlantı sağladığı Connection String bilgisini değiştirebiliriz.

İkisi de hem zahmetli, hem riskli işler. Ip değiştim ana makine de açıldı bu sefer IP çakışması gibi sorunlar yaşayabiliriz.

Bu makinelerin gittiğinde birbiri ile gittiğinde otomatik olarak haberleşmesi, IP sisteminin çözülmesiyle alakalı bu işi organize edecek bir yapıya ihtiyaç var işte biz buna Failover Cluster diyoruz.

Şimdi SQL Server Failover Cluster teknolojisinden biraz bahsedelim.

SQL Server Failover Cluster :

Bu yapıda Sanal bir IP imiz var örneğin 192.168.100.150 olsun. Sanal IP’im hangi makine aktif ise o makineye bağşı. Yani, Soldaki makine aktifken sanal IP soldaki makineye bağlı, sağdaki aktifken sanal IP sağdaki makineye bağlı.

NOT: Benim client’ım bu makinelere doğrudan bağlanmak yerine 192.168.100.150 failover cluster ın ortak IP sin( sanal IP sine )bağlanıyor ve bu IP bizi hangi makine aktifse ona yönlendiriyor. Böylelikle connection string değiştirme veya el ile IP değiştirme sorununun önüne geçmiş oluyoruz

ÖZELLİKLERİ:

  • Failover Cluster’a dahil olacak sunucuların aynı windows cluster’da olması gerekir.
  • Otomatik failover vardır. Sunucu üzerindeki SQL Servisi durursa failover işlemi otomatik olarak gerçekleşebilir.
  • Disk yedekliliği yoktur. Çünkü veritabanı dosyaları iki sunucunun da görebileceği bir shared disk kullanır.
  • Instance seviyesinde yapılabilir.(Bir veritabanını diğer sunucuya failover edemezsiniz. O instance’daki bütün veritabanları failover olacaktır. Bu yüzden bir DBA için çok pratik olduğu söylenemez)
  • Secondary sunucudan read ya da write yapılamaz.
  • Always ON,Replication ve Log Shipping ile birlikte çalışabilir.

SORUN :

  • Bütün bunların hepsi aynı lokasyonda, sistem odasında herhangi bir sorun yaşarsam benim sistemim yine çalışamaz hale gelecektir.
  • Makineler çalışırken storage başına bir iş gelirse, bağlantım da server ım da işlevsiz hale gelecek ve çalışamaz hale gelecek.

Şimdi SQL Server’ın bir diğer teknolojisi olan Log Shipping’den bahsedelim.

LOG SHIPPING

Farklı lokasyonlara datamızı taşıyabilmek ve sistem odasında olabilecek herhangi bir felakete karşı datamızın başka bir noktada canlı yedeğinin bulunması adına kullandığımız teknolojilerden biridir.

Bizim 2 tane farklı lokasyonumuz var (bunlar farklı şehirlerde olabilir, farklı networklerde farklı yapılarda olabilir) önemli olan birbirinden fiziken ayrı, yani aynı sistem odasında olmayan yapılar olduğunu düşünüyoruz. Bu yapıda serverlarmızdan biri aktif, diğeri pasif şekilde.

ÖZELLİKLERİ:

  • Veritabanı bazında yapılabilir.
  • Secondary veritabanından Read yapılabilir.
  • Otomatik failover yoktur.
  • Standart ve enterprise sürümde desteklenir

SORUN :

  1. Aktif pasif çalışabiliyorum, çünkü sol tarafta sürekli log atma durumu söz konusu, sağdaki sql server da da o logları bu tarafa dönme durumu söz konusu. Yani sağdaki makinem her zaman boşta duruyor. Soldaki makineden log bilgileri geldikçe kendi üzerinde restore ediyor. Sağdakinde READ-ONLY makine durumu söz konusu. Aktif- Aktif kullanamıyorum.
  2. Sağdakinde, benim makineme bir iş geldiğinde kullanıcıları yine sağdakine yönlendirmek istediğimde yine mauel şekilde IP leri ve connection stringleri değiştirmem gerek.(çünkü burda failover cluster yapısı yok artık )

Nasıl Gerçekleştiriliyor ? Ana makinedeki Transaction Log dosyalarının belirli periyotlarla (15 dk 20 dk da bir gibi) ortak bir paylaşım noktasına atılması ve yine bu makine üzerinde de belirli periyotlarla bu ortak paylaşım noktasından alınarak sağdakinin üstüne restore edilmesi işlemidir. (database in bu tarafa yedekten dönülmesi işlemidir).

Ayrıntılı anlatım için buradan Log Shipping teknolojisini anlattığım dökümanı inceleyebilirsiniz.

Database Mirroring

Bir diğer veritabanı eşitleme teknolojisidir.

Mantık : Server’ın bir kopyasını başka bir tarafa yazmak.

Ana makinede yapılan işlemin otomatik olarak başka bir sunucuya da eş zamanlı şekilde yazılması.

Burada aseknton ya da senkron seçebiliyoruz ama senkron üzerinden konuşacak olursak Ana makineye yaptığımız bir insert delete işlemi önce yedek makineye yazılıyor daha sonra ana makineye yazılıyor. Dolayısıyla, bir kopukluk olmadığı otomatik olarak yedeklendiği canlı canlı yedeklendiği garanti altına alınmış oluyoruz.

Dezavantaj :

Ne zaman ki ana makinem gitti o zaman yedeği devralabiliyorum. (ve yine failover cluster yapısı burda söz konusu olmadığı için herhangi bir problem esnasında IP manuel değiştirmem gerekiyor ya da connection stringi manuel olarak değiştirmem gerekiyor.)

Bütün bu teknolojiler bizim bu ihriyacımızı tam olarak çözmüyor.

ÖZELLİKLERİ

  • Veritabanı bazında yapılır. Çok fazla veritabanınız varsa Instance üzerindeki tüm veritabanları üzerinde tek tek yapmanız gerekir. Ama veritabanı bazında failover yapıldığı için daha esnektir.
  • Disk yedekliliği vardır.
  • Witness Server koyarsanız ve senkron olarak set ederseniz otomatik failover gerçekleştirilebilir.
  • Secondary veritabanından read ya da write yapılamaz. Sadece secondary sunucunun snapshot’ını alarak okuma yapabilirsiniz.
  • Standard ve enterprise sürümde desteklenir

Always ON

AlwaysOn Failover Cluster yapısını karşılıyor.

Sanal bir IP üretiyoruz ve makinelerden hangisi aktifse onun üzerinden yönleniyor.

Bizim clientımız ve connection stringimiz fiziken bu makinelere bağlanmak yerine doğrudan burdaki sanal IP ye bağlanıyor ve onun üzerinden aktif olan node a otomatik olarak bağlanıyor

Otomatik olarak senkron ya da asenkron şekilde veri 2. Sunucuya eş zamanlı olarak yazılıyor.

Böylelikle bir veri kaybı yaşamıyoruz.

Herhangi bir felaket anında 2. Sunucu üzerinden read-only olarak select işlemlerini gerçekleştirebiliyoruz, raporları buradan çalıştırabiliyoruz, backup işlemlerini buradan gerçekleştirebiliyoruz.

Böylece ana makine üzerindeki yükü almış oluyoruz.

ÖZELLİKLERİ:

  • SQL Server tarafında Log Shipping, Failover Clustering ve Mirroring özelliklerinin biraraya getirilmesi sonucu oluşturulmuş bir özellik diyebiliriz.

Çünkü

Log Shipping yaparken Disaster Recovery sağlanıyordu fakat anlık senkron değildi ,

Mirroringde anlık senkron oluyordu fakat Read Only seçeneği yoktu ayrıca Automatic Failover için Witness Server lazımdı.

Failover Clustering de Cluster name ile 2 node a erişim vardı fakat Failover cluster da sadece High availability çözümüydü

bunların tamamının avantajları biraraya getirilerek SQL Server Always On oluşturuldu diyebiliriz.

  • Ikinci (yedek)sunucuda backup alabliyoruz.
  • Birden fazla veritabanını bir grup yaparak availability group oluşturabilirsiniz. Database Mirroring’e göre hem daha esnek hem de yönetmesi daha kolaydır. Örneğin bir uygulamanın 8veritabanı var. Bu 8 veritabanını tek bir availability group’a alabilirsiniz. Kısaca istediğiniz gibi yönetebiliyorsunuz. Database Mirroring’in geliştirişmiş versiyonudur diyebiliriz.
  • Disk yedekliliği vardır.
  • Senkron olarak set ederseniz otomatik failover vardır. Witness server’a ihtiyaç duymaz.
  • Secondary sunucudan Read yapılabilir.

Teknoloji kıyaslaması için kıyaslama ekranı :

NOT: Aktif-Aktif burada her iki sunucuda da aynanda yazma ve edek sunucuda rapor çekebilme anlamındadır. Yedek sunucuda yazma işlemi gerçekleştirilemez. Bu yapı sadece Oracle RAC teknolojisinde desteklenmektedir.

SQL Server teknoloji kıyaslama yazımızın sonuna geldik. Merak ettiklerinizi ve yazmamı istediğiniz konu başlıklarını iletirseniz yardımcı olmaya çalışırım.

Ömer Çolakoğlu Udemy Videosundan yararlanılarak bu yazı hazırlanmıştır. İlgilenenler için link aşağıdadır.

https://www.udemy.com/course/uctan-uca-sql-server-egitimi/

Bir cevap yazın

Kişisel Web sayfama hoş geldiniz..