SQL Server'da Her Zaman Açık Yüksek Kullanılabilirlik Gruplarını Yapılandırma


Bu makalede, Windows Server 2019 üzerinde çalışan SQL Server'da Her Zaman Açık Erişilebilirlik Gruplarının nasıl kurulacağı ve yapılandırılacağı hakkında adım adım kılavuzluk edecek, yük devretme senaryolarını tartışacağız ve diğer bazı konularda size yol göstereceğiz İlgili konular.

Her Zaman Açık Kullanılabilirlik Grupları, Microsoft SQL Server'da yüksek kullanılabilirlik sağlar. Always On, MSSQL 2012 sürümünde ortaya çıktı.

SQL Server'da Always On Availability Gruplarının Özellikleri

SQL Server kullanılabilirlik gruplarını ne için kullanabilirsiniz?

  • MS SQL yüksek kullanılabilirlik ve otomatik yük devretme;

  • Düğümler arasında SELECT sorgularının yük dengelemesi (ikincil kopyalar okunabilir);

  • İkincil kopyalardan yedekleme;

  • Veri yedekleme. Her çoğaltma, kullanılabilirlik grubu veritabanının kopyalarını tutar.

Always On, Windows Server Failover Cluster (WSFC) tabanlıdır. WSFC, kullanılabilirlik grubu düğümlerini izler ve otomatik yük devretme sağlar. Always On, MS SQL Server 2017'den itibaren WSFC olmadan ve Linux ana bilgisayarlarda da kullanılabilir. Linux tabanlı bir küme oluştururken, WSFC yerine Pacemaker kullanabilirsiniz.

Her Zaman Açık, Standart sürümde mevcuttur, ancak bazı kısıtlamaları vardır:

  • 2 kopya ile sınırlıdır (birincil ve ikincil);

  • İkincil çoğaltma, verileri okumak için kullanılamaz;

  • İkincil kopya, MS SQL'i yedeklemek için kullanılamaz;

  • Kullanılabilirlik grubu başına yalnızca 1 veritabanı desteklenir.

Enterprise sürümünde herhangi bir kısıtlama yoktur.
Şartları gözden geçirelim.

  • Always On Availability Group bir dizi replika ve veritabanıdır;

  • Çoğaltma, kullanılabilirlik grubundaki bir SQL Server örneğidir. Bir kopya, birincil veya ikincil olabilir. Her kopya, bir veya daha fazla veritabanı içerebilir.

Always On, WSFC'ye dayalıdır. Her kullanılabilirlik grubu düğümü, bir Windows yük devretme kümesinin üyesi olmalıdır. Her SQL Server örneğinin birden çok kullanılabilirlik grubu olabilir. Her kullanılabilirlik grubu en fazla 8 ikincil kopyaya sahip olabilir.

Birincil eşleme başarısız olursa, küme yeni bir birincil eşleme için oy kullanır ve Her Zaman Açık, ikincil eşlemelerden birini birincil eşleme yapar. Kullanıcılar Always On ile çalışırken Dinleyici'ye (özel bir küme IP adresi ve karşılık gelen DNS adı) bağlandığından, yazma sorgularını yeniden çalıştırmak mümkün olacaktır. Dinleyici, ikincil kopyalar arasında SELECT sorgularını dengelemekten de sorumludur.

Windows Yük Devretme Kümesini Her Zaman Açık Kullanılabilirlik Grubu için Yapılandırma

Her şeyden önce, Always On tarafından kullanılan tüm düğümlerde bir yük devretme kümesi yapılandırmalıyız.

İşte benim konfigürasyonum:

  • Windows Server 2019 çalıştıran 2 sanal makine

  • 2 SQL Server 2019 Enterprise örneği

  • Düğüm ana bilgisayar adları testnode1 ve testnode2'dir. SQL Server örnek adları, düğüm1 ve düğüm2'dir.

Sunucu Yöneticisini kullanarak Yük Devretme Kümelemesi rolünü ekleyin veya PowerShell aracılığıyla kurun:

Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools

Yükleme otomatiktir ve henüz herhangi bir yapılandırma yapmanız gerekmez. Yük Devretme Kümesi Yöneticisi ek bileşenini çalıştırın (

FailoverClusters.SnapInHelper.msc

) ve yeni bir küme oluşturun.

Kümenize katılmak istediğiniz ana bilgisayarların adlarını ekleyin.

Ardından sihirbaz bazı testler yapmayı teklif eder. Bunu yapmak için ilk öğeyi seçin.

Küme adını belirtin, bir ağ ve küme IP adresi seçin. Küme adı, DNS'de otomatik olarak görünecektir; manuel olarak bir DNS kaydı oluşturmanız gerekmez. Benim durumumda, küme adı ClusterAG'dır.

Diskleri daha sonra ekleyebileceğimiz için Tüm uygun depolamayı kümeye ekle seçeneklerinin işaretini kaldırın.

Kümede yalnızca iki düğüm vardır, bu nedenle Küme Çekirdeği'ni yapılandırmanız gerekir. Küme Yeter Sayısı belirleyici bir oydur. Örneğin, küme düğümlerinden biri kullanılamaz hale gelirse, kümenin hangi düğümlerin gerçekten çevrimiçi olduğunu ve birbirini görebileceğini algılaması gerekir. Küme Çekirdeği, küme tutarlılığı sağlar (Küme -> Diğer Eylemler -> Küme Çekirdeği Ayarlarını Yapılandır).

Yetersayı tanığı seçeneğini seçin.

Ardından tanık türünü seçin: bir dosya paylaşım tanığı.

Paylaşılan klasöre bir UNC yolu belirtin. Dizini kendiniz oluşturun. Yük devretme kümenizin dışındaki bir sunucuda bulunmalıdır.

Kümenizi yapılandırdığınızda aşağıdaki hatayı görebilirsiniz:

There was an error configuring the file share witness. Unable to save property changes for File Share Witness. The system cannot find the file specified.

Kümenin altında çalıştığı bir kullanıcı hesabının, paylaşılan klasöre erişmek için NTFS izinleri olmayabilir. Varsayılan olarak, küme yerel bir kullanıcı hesabı altında çalışır. Tüm küme bilgisayarlarına klasör üzerinde ayrıcalıklar verebilir veya küme hizmeti hesabını değiştirerek ilgili ayrıcalıkları verebilirsiniz.

Temel Windows Yük Devretme Kümesi yapılandırması sona erdi.

MS SQL Sunucusunda Always On Availability Grubunu Yapılandırma

Tipik SQL Server örnek kurulumundan sonra Always On Availability Gruplarını etkinleştirebilir ve yapılandırabilirsiniz. Bunları SQL Server Configuration Manager'ın örnek özelliklerinde etkinleştirin. Ekran görüntüsünde görebileceğiniz gibi, SQL Server zaten bir WSFC kümesine ait olduğunu algılamıştır. Her Zaman Açık Kullanılabilirlik Gruplarını Etkinleştir'i işaretleyin ve MSSQL örnek hizmetini yeniden başlatın. İkinci örnek için de aynısını yapın.

İpucu. Always On yapılandırmasından önce, SQL Server hizmetlerinin bir yerel sistem hesabı altında çalışmadığından emin olun. Grup Tarafından Yönetilen Hizmet Hesapları veya normal bir etki alanı hesabı kullanılması önerilir. Aksi takdirde Always-On yapılandırmasını tamamlayamazsınız.

SQL Server Management Studio'yu çalıştırın, ana makinenize bağlanın, Her Zaman Yüksek Kullanılabilirlik'i tıklayın ve Yeni Kullanılabilirlik Grubu Sihirbazı'nı çalıştırın.

SQL Server 2017 ve SQL Server 2019 için SQL Server Management Studio 18.x'te, yalnızca T-SQL'de kullanılabilen bazı Always On ayarları göründü, bu nedenle en son SSMS sürümünün kullanılması önerilir.

Always On kullanılabilirlik grubunuz için bir ad belirtin ve Veritabanı Düzeyinde Durum Tespiti'ni seçin. Always On, bu seçeneği kullanarak bir veritabanının ne zaman sağlıksız olduğunu algılayabilir.

Always On kullanılabilirlik grubunuza eklemek için SQL Server veritabanlarını seçin.

Çoğaltma Ekle 'yi tıklayın ve ikinci SQL sunucusunu bağlayın. Böylece 8 adede kadar sunucu ekleyebilirsiniz.

  • İlk Rol, bir grup oluşturulduğunda bir kopya rolüdür. Birincil veya İkincil olabilir;

  • Otomatik Yük Devretme - bir veritabanı kullanılamaz duruma gelirse, Always On birincil rolü başka bir kopyaya taşır. Bu öğeyi kontrol edin;

  • Kullanılabilirlik Modu, Eşzamanlı Kaydetme veya Eşzamansız Kaydetme seçeneklerinin seçilmesine olanak tanır. Senkronize mod seçerseniz, birincil replikaya gelen işlemler senkron mod ile diğer tüm sekonder replikalara gönderilir. Birincil eşleme, işlemi ancak diğer eşlemeler işlemi diske yazdıktan sonra tamamlar. Böylece birincil replika başarısız olursa veri kaybı ortadan kalkar. Eşzamansız modda, birincil eşleme, diğer eşlemelerin yanıtını beklemeden değişiklikleri hemen yazar.

  • Okunabilir İkincil, ikincil kopyalara karşı SELECT sorgularının çalıştırılmasına izin veren bir parametredir. Değer evet ise istemciler, bağlantı olmadan bağlansa bile salt okunur erişim elde edebilecektir.

    ApplicationIntent=readonly
  • Taahhüt için gerekli senkronize edilmiş ikincil kopyalar, işlemi tamamlamak için senkronize edilmiş ikincil kopyaların sayısıdır. Çoğaltma sayısına göre ayarlayın, ben 1 olarak ayarlayacağım.

Uç Nokta sekmesinde hiçbir şeyi düzenlemeyin.

Yedekleme Tercihleri sekmesinde, yedeklemelerin nereden alınacağını seçebilirsiniz. Varsayılan ayarları burada bırakın: İkincil Tercih Et.

Kullanılabilirlik grubu dinleyicisinin adını, bağlantı noktasını ve IP adresini belirtin.

Salt Okunur Yönlendirme ayarlarını değiştirmeden bırakın.

Kopya eşitleme türünü seçin. İlk öğeyi (Otomatik tohumlama) işaretli bırakıyorum.

Ardından ayarlarınızın doğrulanması gerekir. Hata yoksa, değişiklikleri uygulamak için Bitir'i tıklayın.

Benim durumumda, tüm testler başarılı oldu, ancak kurulumdan sonraki Sonuçlar adımında sihirbaz, kullanılabilirlik grubu dinleyicisini oluştururken bir hata gösterdi. Küme olay günlüklerinde EVENTID 1194 hatası belirdi:

Cluster network name resource failed to create its associated computer object in the domain.

Bu, kümenin bir dinleyici oluşturmak için yeterli izne sahip olmadığı anlamına gelir. Belgeler, kümenizin nesnesine bilgisayar tipi nesneler oluşturmak için bir ayrıcalık vermenin yeterli olduğunu belirtir. AD'de ayrıcalık delegasyonu kullanarak bunu yapmak daha kolaydır (veya hızlı, ancak güvenli olmayan varyant, CLUSTERAG$nesnesini Domain Admins grubuna geçici olarak eklemektir).

Kullanılabilirlik grubunda Always-On ve düşük SQL performansı sorunlarını tanılarken, standart SQL Server tanılama araçlarını kullanmaya ek olarak Windows küme günlüklerini kapsamlı bir şekilde incelemelisiniz.

Kullanılabilirlik grubunu oluşturduğum ama dinleyiciyi oluşturmadığım için manuel olarak ekledim. Uygunluk grubunuz için içerik menüsünü açın ve Dinleyici Ekle'yi tıklayın.

Dinleyicinin IP adresini, bağlantı noktasını ve DNS adını belirtin.

Dinleyicinin, Always On grubunuzun Kullanılabilirlik Grubu Dinleyicileri bölümünde göründüğünden emin olun.

Böylece, bir Always On kullanılabilirlik grubunun temel yapılandırmasını tamamladınız.

SQL Server Always On: Çalışabilirlik Kontrolü ve Yük Devretme

Availability Group Dashboard'a (Show Dashboard) bir göz atalım.

Sorun değil, grup oluşturuldu ve çalışıyor.

Node2'yi manuel olarak birincil örnek yapmaya çalışalım. Kullanılabilirlik grubunu sağ tıklayın ve Yük Devretme'yi seçin.

Yük Devretme Hazırlığı'ndaki değeri not edin. Veri kaybı yok, veri kaybı olmayacağı anlamına gelir.

Düğüm2'ye bağlanın.

Bitir'e tıklayın.

Düğüm2'nin kullanılabilirlik grubundaki birincil eşleme (Birincil Örnek) haline geldiğinden emin olun.

Dinleyicinin düzgün çalıştığından emin olun. Dinleyici DNS adını ve bağlantı noktasını SSMS'de virgülle ayırarak belirtin:

ag1-listener-1,1445

Basit ekleme, seçme ve SQL sorgularını veritabanınıza güncelleme.

Ardından, birincil çoğaltmanın otomatik yük devretmesini kontrol edin. TESTNODE2'de sqlservr.exe işlemini sonlandırmanız yeterlidir.

Kalan düğümdeki kullanılabilirlik grubu durumunu kontrol edin: TESTNODE1\NODE1.

Küme, testnode1'i otomatik olarak değiştirdi ode1 durumu, testnode2'den beri birincil olarak ode2 kullanılamaz hale geldi.

İstemciler bağlanmak için kullanacağından dinleyici durumunu kontrol edin.

Benim durumumda, dinleyiciye başarılı bir şekilde bağlandım, ancak veritabanına erişmeye çalışırken şu hatayı aldım:

Unable to access database 'TestDatabase' because it lacks a quorum of nodes for high availability. Try the operation again later.

Hata, Taahhüt için gerekli senkronize edilmiş ikincil dosyalar seçeneği nedeniyle ortaya çıktı. Yapılandırırken değerini 1 olarak ayarladığımız için Always On veri tabanına bağlanmasına izin vermiyor çünkü elimizde sadece bir tane birincil replika kaldı.

Değeri 0 olarak ayarlayın ve sorguyu tekrar çalıştırmayı deneyin.

Testnode1 Birincil örnek durumunu korurken, testnode2 ikincil durum oldu. testnode2 kapatıldığında testnode1'de değiştirdiğimiz veriler, bilgisayar açıldıktan sonra başarıyla senkronize edildi.

Bu nedenle, her şeyin doğru çalıştığından ve kritik bir arıza durumunda verilerin okuma/yazma için kullanılabilir olmasını sağladık.

Always On kullanılabilirlik gruplarını kolayca yapılandırabilirsiniz. SQL Server tabanlı bir yük devretme çözümü oluşturmak istiyorsanız, kullanılabilirlik grupları bunu iyi bir şekilde yönetecektir.

İlgili makaleler