SQL Server’da Always On Availability Groups ile Yüksek Erişilebilirlik Mimarisi Kurmak

Always On Availability Groups özelliği, yüksek erişilebilirlik ve felaket kurtarma çözümü sunarak veritabanı yansıtma (mirroring) teknolojisine kurumsal düzeyde bir alternatif sağlar. Always On Availability Groups, veritabanının erişilebilirliğini en üst düzeye çıkarmayı hedefler.

Always On Mimarisi:

2. Always On Availability Group Bileşenleri Nelerdir?

Microsoft SQL Server 2012 ile birlikte sunulan Always On AG, veritabanı düzeyinde HA sağlar.

  • Temel bileşenleri:
  • Primary Replica (master sunucu)
  • Secondary Replica(Yedek sunucular)
  • Availability Group Listener
  • Failover Cluster

Senkron ve asenkron replikasyon seçenekleri sayesinde hem yerel hem de uzak veri merkezlerinde kullanılabilir.

3. Gereksinimler ve Ön Koşullar

  1. SQL Server Editions: Enterprise veya Standard edition olabilir. SQL Server express ve web edition için olamaz.
  2. Windows Server: Serverlar windows üzerinde kurulu olması gerekiyor.
  3. Domain Configuration:  Tüm sunucular domaine dahil olması gerekmektedir.
  4. Cluster Service : Tüm nodeler üzerinde failover cluster kurulduğuna emin olun.
  5. Drive: İki sunucuda da aynı diskler ve pathler olmalı.
  6. Service User : Her iki replicada aynı yetkide servis kullanıcısı olmalıdır.

4. Mimari Yapının Oluşturulması

4.2. SQL Server Always On Özelliğinin Aktifleştirilmesi

  1. Her iki node üzerinde de SQL Server Configuration Manager üzerinden Always On özelliği aktif edilir.
  2. Servis yeniden başlatılır.

4.3 Availability Group Oluşturma Aşaması

  1. Primary veritabanı belirlenir. Belirlendikten sonra Always On High Availability sekmesinden Availability group oluşturmamız gerekiyor.

Bize iletilen AG ismini aşağıdaki alana yazıyoruz. Cluster type olarak da Windows Server Failover Cluster ile devam edeceğiz.

Database Level Health Detection: Her bir veritabanının sağlık durumu izlenerek sorun oluştuğunda otomatik failover yapılmasını sağlar.

Per Database DTC Support: Her veritabanının kendi dağıtık işlem (DTC) desteğine sahip olmasını sağlayarak güvenli çoklu veritabanı işlemlerini mümkün kılar.

Bir sonraki adımda, primary replikaya restore döndüğümüz full recovery modundaki veritabanımızı seçiyoruz ve replicaya dahil ediyoruz.

Not: Veritabanımınızın full recovery modunda olup full backup alınmış olması önemli bir detaydır.

Sonraki adımda, Replica Belirleme adımı dört bölümden oluşur. Replica, Endpoint, Backup Preferences ve Listener

Primary replika, master sunucu olarak kabul edilir. Secondary replika, primary sunucunun bir yedek kopyasını tutan bir sunucudur. Secondary replikada, yalnızca okuma işlemleri yaparken, primary replikada okuma ve yazma işlemlerinin gerçekleştirilmesine izin verir.

  • Availability Mode:
    • Synchronous Commit: Veriler hem birincil hem de ikincil sunucuya aynı anda yazılır. Yüksek erişilebilirlik sağlar.
    • Asynchronous Commit: Veriler önce birincil sunucuya yazılır, ardından ikincil sunucuya gönderilir. Performans iyidir, ama veri kaybı riski vardır.
  • Failover Mode:
    • Automatic: Otomatik geçiş yapılır (yalnızca synchronous commit olan nodlar arasında mümkündür). Felaket durumları için automatic modu daha sağlıklı olacaktır.
    • Manual: Müdahale ile el ile geçiş yapılır.
  • Readable Secondary:
    • Yes/No/Read-intent only: İkincil sunucularda sadece okuma yapılmasına izin verilebilir. Raporlama , sadece okuma gibi işlemler için bu sunucu kullanılır.

2. Endpoint

Bu kısımda, replikalar arası iletişim kurulmasını sağlayan endpoints tanımlanır. Her SQL Server instance’ı, diğerleriyle haberleşmek için bir TCP endpoint’i kullanır.

Özellikler:

  • Endpoint URL: TCP://<sunucu_adı>:<port> formatında olur (örneğin: TCP://SQLNODE1:5022).
  • Authentication: Windows Authentication ile güvenli bağlantı sağlanır.
  • Endpoint’lerin her sunucuda oluşturulmuş ve erişilebilir olması gerekir.

3. Backup Preferences

Bu bölümde, veritabanı yedeklerinin hangi sunucuda alınacağı belirlenir. Performans ve sistem yük dengesini ayarlamak için önemlidir.

Seçenekler:

  • Prefer Secondary: Mümkünse yedeklemeler secondary sunucularda alınır.
  • Secondary Only: Yedekler sadece secondary sunucularda alınır.
  • Primary: Yedekler yalnızca primary sunucuda alınır.
  • Any Replica: Yedekleme yapılacak sunucu önemli değil, sistem seçer.

Ayrıca, her replica için backup priority (yedekleme önceliği) atanabilir (0–100 arası bir değer).

4. Listener

Listener, client olarak Availability Group’a erişmesi için ortak bir adrestir. Bu sayede clientler hangi nodun aktif olduğunu bilmeden bağlantı kurabilir. Listener ip, primary sunucu o an hangisi ise onu kabul eder ve orda çalışır.

Bileşenleri:

  • Listener DNS Name: Kullanıcıların bağlantı kuracağı isim (örneğin: MyAGListener).
  • Port: Bağlantı noktası (default: 1433).
  • Network Mode: Static IP ya da DHCP ile listener IP adresi atanabilir.
  • IP Address: (Opsiyonel) Client bağlı olacağı IP adres(ler)i.

Listener, failover sırasında otomatik olarak aktif replica’ya yönlendirme yapar.

Servis hesabı gibi teknik detayları secondary sunucuda da gerçekleştireceğiz.

Bu işlemleri tamamladıktan sonra validation raporunda her şeyin ok olduğunu görmemiz gerekiyor.

Sonuç olarak da dashboardumuza baktığımızda yeşil bir ekran olacaktır. Yani dataların senkron, sağlıklı olduğunu gösteren bir rapordur.

SQL Server Always On Availability Groups mimarisi, yüksek erişilebilirlik ve felaket kurtarma ihtiyaçlarına etkin ve ölçeklenebilir bir çözüm sunmaktadır. Bu yapı sayesinde kritik veritabanları hem veri bütünlüğü korunarak hem de kesintisiz hizmet anlayışıyla yönetilebilir. Synchronous ve asynchronous çoğaltma modları, sistem performansı ile veri güvenliği arasında esnek bir denge kurarken; otomatik failover ve okuma-yönelimli ikincil veritabanları ile hem erişilebilirlik artırılır hem de sistem yükü dengelenir. Özellikle kurumsal düzeyde kesintisiz hizmet sunmayı hedefleyen yapılar için Always On, modern veri yönetiminin vazgeçilmez bileşenlerinden biri haline gelmiştir.

Kaynakça :

https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server?view=sql-server-ver16

https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/getting-started-with-always-on-availability-groups-sql-server?view=sql-server-ver16

Leave a Reply

Your email address will not be published. Required fields are marked *