High Availability, sürekli çalışan sistemlerde yazılımsal ya da donanımsal sebeplerden kaynaklanacak bir kesintiye uğramadan çalışmasına devam etmesidir. Milyonlarca üyeye sahip web uygulamaları kısa bir sürede olsa kesintiye uğraması ciddi maddi kayıplara sebep olabilir.
SQL gibi geniş kapsamlı bir veritabanı sistemi, uygulamalarda sürekli kullanılabilirliği sağlamayabilmek için “yüksek erişebilirlik” adı altında bir takım çözümler sunmaktadır.
Bu çözümlerden bir veya birkaçını bir arada kullanmak gerekmektedir.
Yüksek Erişebilirlik Çözümleri:
1-) Failover Clustering: (Yedekli Kümeleme)
Birden fazla sunucunun aynı amaç için birbirlerine bağlanarak bir araya getirilmesidir. Bir veya daha fazla sunucunun bir veya daha fazla diski paylaşımlı kullanmasından oluşur. İhtiyaca göre sunucular beraber veya sırayla çalıştırılabilir. Kümedeki her sunucuya node(düğüm) denir. Node 2,4,8,16’ya kadar çıkabilir.
SQL Server Failover Cluster’ı Microsoft Cluster Service üzerinde kurarız. Serverda ki Cluster Administrator’u kullanarak MSCS için gerekli ayarları yapmamız gerekir.
Her kümenin en az bir tane Quorum Disk’i vardır. Bu diskde Cluster sistemle ilgili log dosyaları kaydedilir.
SAN (Storage Area Network): Bir tane veya daha fazla SATA diskten oluşan depolama birimidir.

Yukarıda ki şemada her bir düğümde yerel diskler mevcuttur. Fakat veritabanı dosyaları SAN’da ki paylaştırılmış disklerde ve log dosyalarıda gene SAN üzerinde ki Quorum Disk’te saklanır. Failover Cluster modelinde sunucular arasında özel bir Network kurulur. Bu Network heartbeat (kalp atışı) denilen sistem aracılığıyla kurulur. Bu sistem aracılığıyla nodelar üzerinde SQL Server ya da İşletim Sistemi temelli, herhangi bir problem yaşayan node tarafından tespit edilir. Küme içerisinde Node 1’de bir sorun çıktığında, sorunlu düğümde ki servisler otomatik geçiş ile sağlıklı düğüm üzerinde çalışmaya devam ederler. Failover işlemi gerçekleştiğinde sağlıklı Node, paylaştırılmış disk (storage) kaynaklarını üzerine alır ve veritabanı dosyalarını kullanarak hiçbir kesintiye uğramadan çalışmaya devam eder. Veritabanı dosyalarının paylaştırılmış disk’te tutulmasının sebebi budur.
Failover Cluster – Kümeleme sisteminde Active-Active ya da Active-Passive bir yapı kullanabilir. Sunucuların aynı anda çalıştığı kümelere Active-Active Clustering, Sadece bir sunucunun aktif diğerinin pasif node’un aktif olduğu kümelere Active-Pasive Clustering denir.
Failover Clusterda veri dosyaları nodelardan bağımsız olan , paylaşım biriminde saklayarak (Shared Storage) veri kaynaklarının birden fazla sunucu tarafından yönetilmesini sağlar. Failover Cluster modeli sürekli kullanılabilir bir perspektif çizmektedir. Bu modelde veri bütünlüğünü sağlamış oluruz. Paylaşılmış diskler(storage) üzerinde oluşabilecek bir veri kaybını sadece Failover Clustering metodunu kullanarak öneleyemeyiz. Failover ile beraber Database Mirroring, Replicaiton ve Log Shipping modellerinin bir veya bir kaçını kullanarak felaket önleyici bir sistem yapılandırabiliriz.
2-) Log Shipping (Günlük Gönderme): Aktif olan veritabanı sunucusu’nun bir kopyası’nın başka bir sunucuda saklanması esasına dayanır. Bunun için aktif olarak kullanılan veritabanı sunucusu’nun full backup’ı alınıp ikinci sunucuya aktarılır. Daha sonrasında da periyodik olarak log dosyaları diğer sunucuya kopyalanır.
Log Shipping, Database Maintanence Plan ile düzenlenir ve Joblar aracılığıyla düzenli olarak çalıştırılır.
3-) Database Mirroring: Bu metod iki veritanı arasında Transaction log dosyalarını kopyalayarak her iki sunucunun eşit seviyede olmasını sağlamaktadır. Diğer Server'ın, çalışan Server’ı senkron, eş seviyede takip ederek aynı işlemleri kendi Server’ı içerisinde gerçekleştirmektedir. Sunucuda bir hata oluştuğunda senkron olarak takip eden diğer sunucu devreye girerek uygulamanın sürekliliğini sağlar.
Bu yönde birinci sunucu Principal, diğer sunucu Mirror olarak isimlendirilir. Pricipal gerçek veritabanını Mirror’de bu veritabanı’nın kopyasını oluşturur. Her iki sunucu arasında ki veri akışına şahitlik yapan witness adı verilen 3. bir sunucuda oluşturulmuş olur.
4-) Data Replicaiton (Veri Kopyalama) : Aynı veya farklı sunucular üzerindeki veritabanları arasında kopyalama işlemidir. SQL Server replicaiton modelinde;
- Publisher (yayıncı)
- Distributor (dağıtıcı)
- Subscriber (abone) olmak üzere üç temel öğe bulunmaktadır.
Publisher (yayıncı): Sahip olduğu verileri başka bir sunucu veya veritabanına gönderen merkezi sunucu veya veritabanıdır.
Distributor (dağıtıcı): Kopyalama işlemini yöneten, akışı takip eden bağımsız bir sunucudur. Disribution database içermektedir.
Subscriber (abone): Merkezi sunucudan veri alan üye sunucudur.
Replikasyonda push ve pull olmak üzere iki tür abonelik vardır.
Push Subscription (abonelik gönderme): Yayıncının aboneye bağlanarak verileri ona göndermesidir.
Pull Subscription (abonelik çekme): Abonenin yayımcıya bağlanarak gerekli verileri çekmesidir.
Kopyalama’nın çeşitleri:
Snapshot: Daha önce abonelere hangi verilerin gönderildiğine bakmaksızın her defasında merkezi veritabanındaki verileri toplu olarak abonelere yükler.
Tansactional: Merkezi veritabanının tümünü değil sadece değişiklikleri abonelere yansır.
Merge: Hem merkezdeki değişiklikleri üyelere yansıtır, hem de üyelerdeki değişiklikleri merkeze yansıtır. Çift yönlü kopyalama gerçekleştirilmiş olur.
SQL Replication’ın en önemli avantajı tüm SQL Server sürümlerinde kullanılabilmesidir. ;)
Başka bir makalede görüşmek dileğiyle...
Sevgiler…