Aracılığıyla paylaş


Always On kullanılabilirlik grubu için esnek, otomatik yük devretme ilkesini yapılandırın

Şunlar için geçerlidir:Windows üzerinde SQL Server

Bu konuda, SQL Server'da Transact-SQL veya PowerShell kullanarak Always On kullanılabilirlik grubu için esnek yük devretme ilkesinin nasıl yapılandırıldığı açıklanmaktadır. Esnek bir yük devretme ilkesi, kullanılabilirlik grubu için otomatik yük devretmeye neden olan koşullar üzerinde ayrıntılı denetim sağlar. Otomatik yük devretmeyi tetikleyen hata koşullarını ve sistem durumu denetimlerinin sıklığını değiştirerek, yüksek kullanılabilirlik için SLA'nızı desteklemek üzere otomatik yük devretme olasılığını artırabilir veya azaltabilirsiniz.

Kullanılabilirlik grubunun esnek yük devretme ilkesi, arıza koşulu düzeyi ve sağlık kontrolü zaman aşımı eşiğine göre tanımlanır. Bir kullanılabilirlik grubunun hata durumu düzeyini veya sistem durumu denetim zaman aşımı eşiğini aştığını algılarken, kullanılabilirlik grubunun kaynak DLL'i Windows Server Yük Devretme Kümelemesi (WSFC) kümesine geri yanıt verir. WSFC kümesi daha sonra ikincil replikaya otomatik yük devretmeyi başlatır.

Uyarı

Kullanılabilirlik grubunun esnek yük devretme ilkesi SQL Server Management Studio kullanılarak yapılandırılamaz.

Otomatik Hata Aktarma Sınırlamaları

  • Otomatik yük devretmenin gerçekleşmesi için, geçerli birincil çoğaltma ve bir ikincil çoğaltma, otomatik yük devretme ile zaman uyumlu işleme kullanılabilirlik modu için yapılandırılmalıdır ve ikincil çoğaltma, birincil çoğaltmayla eşitlenmelidir.

  • SQL Server 2019 (15.x), SQL Server 2017'de (14.x) 3 olan zaman uyumlu çoğaltma sayısının üst sınırını 5'e yükseltti. Beş çoğaltmadan oluşan bu grubu, grupta otomatik yük devretme olacak şekilde yapılandırabilirsiniz. Bir ana kopya ve dört eşzamanlı ikincil kopya vardır.

  • Bir kullanılabilirlik grubu WSFC hata eşiğini aşarsa, WSFC kümesi kullanılabilirlik grubu için otomatik bir yük devretme girişiminde bulunmaz. Ayrıca, kullanılabilirlik grubunun WSFC kaynak grubu, ya küme yöneticisi başarısız kaynak grubunu manuel olarak çevrimiçi yapana ya da veritabanı yöneticisi kullanılabilirlik grubunun manuel yük devretmesini gerçekleştirene kadar arıza durumunda kalır. WSFC hata eşiği, belirli bir süre boyunca kullanılabilirlik grubu için desteklenen en fazla hata sayısı olarak tanımlanır. Varsayılan süre altı saattir ve bu süre boyunca hata sayısı üst sınırı için varsayılan değer n-1'dir; burada n, WSFC düğümlerinin sayısıdır. Belirli bir kullanılabilirlik grubunun hata eşiği değerlerini değiştirmek için WSFC Yük Devretme Yöneticisi Konsolu'nu kullanın.

Önkoşullar

  • Birincil çoğaltmayı barındıran sunucu örneğine bağlı olmanız gerekir.

İzinler

Görev İzinler
Yeni bir kullanılabilirlik grubu için esnek yük devretme ilkesini yapılandırmak için sysadmin sabit sunucu rolü üyeliği ve CREATE AVAILABILITY GROUP sunucu izni, ALTER ANY AVAILABILITY GROUP izni veya CONTROL SERVER izni gerektirir.
Mevcut kullanılabilirlik grubunun ilkesini değiştirmek için Kullanılabilirlik grubu üzerinde ALTER AVAILABILITY GROUP izni, CONTROL AVAILABILITY GROUP izni, ALTER ANY AVAILABILITY GROUP izni veya CONTROL SERVER izni gerektirir.

Health-Check Zaman Aşımı Eşiği

Kullanılabilirlik grubunun WSFC kaynak DLL'i, birincil çoğaltmayı barındıran SQL Server örneğinde sp_server_diagnostics saklı yordamını çağırarak birincil çoğaltmanın sistem durumu denetimini gerçekleştirir. sp_server_diagnostics sonuçları, kullanılabilirlik grubu için sistem durumu denetimi zaman aşımı eşiğinin 1/3'lerine eşit bir aralıkta döndürür. Varsayılan durum denetimi zaman aşımı eşiği 30 saniyedir ve bu da sp_server_diagnostics 10 saniyelik bir aralıkta döndürülmesiyle sonuçlanır. sp_server_diagnostics yavaşsa veya bilgi döndürmezse, kaynak DLL birincil çoğaltmanın yanıt vermediğini belirlemeden önce sistem durumu denetimi zaman aşımı eşiğinin tam aralığını bekler. Ana çoğaltıcı yanıt vermiyorsa ve sistem şu anda destekliyorsa, otomatik yük devretme başlatılır.

Önemli

sp_server_diagnostics veritabanı düzeyinde sistem durumu denetimleri gerçekleştirmez.

Failure-Condition Düzeyi

sp_server_diagnostics tarafından döndürülen tanılama verileri ve sağlık bilgilerinin otomatik yük devretmeyi gerektirip gerektirmediği, kullanılabilirlik grubunun hata koşulu düzeyine bağlıdır. Hata koşulu düzeyi, otomatik yük devretmeyi tetikleyen hata koşullarını belirtir. En az kısıtlayıcı (birinci düzey) ile en kısıtlayıcı (beşinci düzey) arasında değişen beş hata koşulu düzeyi vardır. Belirli bir düzey, daha az kısıtlayıcı düzeyleri kapsar. Bu nedenle, en katı düzey olan beş, daha az kısıtlayıcı dört koşulu vb. içerir.

Önemli

Hasarlı veritabanları ve şüpheli veritabanları herhangi bir hata durumu seviyesi tarafından algılanmaz. Bu nedenle, zarar görmüş veya şüpheli bir veritabanı (donanım hatası, veri bozulması veya başka bir sorun nedeniyle) hiçbir zaman otomatik yük devretmeyi tetiklemez.

Aşağıdaki tabloda her düzeye karşılık gelen hata koşulu açıklanmaktadır.

Seviye Arıza koşulu Transact-SQL Değeri PowerShell Değeri
Bir Sunucu devre dışı. Aşağıdakilerden biri gerçekleştiğinde otomatik yük devretmenin başlatıldığını belirtir:

SQL Server hizmeti çalışmıyor.

Sunucu örneğinden ACK alınmadığından WSFC kümesine bağlanmak için kullanılabilirlik grubunun kira süresi dolar. Daha fazla bilgi için bkz . Nasıl Çalışır: SQL Server AlwaysOn Kira Zaman Aşımı.



Bu en az kısıtlayıcı düzeydir.
1 OnServerDown
İki Sunucuda yanıt vermiyor. Aşağıdakilerden biri gerçekleştiğinde otomatik yük devretmenin başlatıldığını belirtir:

SQL Server örneği kümeye bağlanmıyor ve kullanılabilirlik grubunun kullanıcı tarafından belirtilen sağlık kontrolü zaman aşımı eşiği aşılıyor.

Kullanılabilirlik çoğaltması başarısız durumda.
2 OnServerUnresponsive
Üç Kritik sunucu hatası. Yalnız bırakılmış spinlock'lar, ciddi yazma erişim ihlalleri veya kısa bir süre içinde oluşturulan çok fazla bellek dökümü gibi kritik SQL Server iç hatalarında otomatik yük devretmenin başlatıldığını belirtir.

Bu varsayılan düzeydir.
3 OnCriticalServerError
Dört Orta düzeyde sunucu hatası. SQL Server iç kaynak havuzundaki kalıcı bir yetersiz bellek koşulu gibi orta düzeydeki SQL Server iç hatalarında otomatik yük devretme başlatıldığını belirtir. 4 OnModerateServerError
Beş Tüm uygun hata koşullarında. Aşağıdakiler dahil olmak üzere tüm uygun hata koşullarında otomatik yük devretmenin başlatıldığını belirtir:

Scheduler kilitlenmesinin algılanması.

Çözülemeyen bir kilitlenme algılanması.



Bu en kısıtlayıcı düzeydir.
5 Herhangi Nitelikli Başarısızlık Koşullarında

Uyarı

SQL Server örneğinin istemci isteklerine yanıt vermemesi kullanılabilirlik gruplarıyla ilgisizdir.

Transact-SQL Kullanımı

Esnek yük devretme politikasını yapılandırmak için

  1. Birincil replikayı çalıştıran sunucu örneğine bağlanın.

  2. Yeni bir kullanılabilirlik grubu için CREATE AVAILABILITY GROUPTransact-SQL deyimini kullanın. Mevcut bir kullanılabilirlik grubunu değiştiriyorsanız ALTER AVAILABILITY GROUPTransact-SQL deyimini kullanın.

    • Yük devretme koşulu düzeyini ayarlamak için FAILURE_CONDITION_LEVEL = n seçeneğini kullanın; burada , n 1 ile 5 arasında bir tamsayıdır.

      Örneğin, aşağıdaki Transact-SQL deyimi var olan kullanılabilirlik grubunun AG1hata koşulu düzeyini birinci düzeye değiştirir:

      
      ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);  
      

      Bu tamsayı değerlerinin hata koşulu düzeyleriyle ilişkisi aşağıdaki gibidir:

      Transact-SQL Değeri Seviye Otomatik Geçiş Başlatıldığında...
      1 Bir Sunucu devre dışı. Yük devretme veya yeniden başlatma sonucunda SQL Server hizmeti durur.
      2 İki Sunucuda yanıt vermiyor. Daha düşük bir değere sahip herhangi bir koşul sağlandığında, SQL Server hizmeti kümeye bağlandığında ve sistem durumu denetim zaman aşımı eşiği aşıldığında veya geçerli birincil kopya hatalı durumda olduğunda.
      3 Üç Kritik sunucu hatası. Düşük değerin herhangi bir koşulu karşılanır veya iç kritik sunucu hatası oluşur.

      Bu varsayılan düzeydir.
      4 Dört Orta düzeyde sunucu hatası. Düşük değerin herhangi bir koşulu karşılanır veya orta düzeyde bir Sunucu hatası oluşur.
      5 Beş Tüm uygun hata koşullarında. Daha düşük değere sahip herhangi bir koşul karşılanır veya belirleyici bir hata koşulu oluşur.

      Yük devretme koşulu düzeyleri hakkında daha fazla bilgi için bkz. Kullanılabilirlik Grubunun (SQL Server) Otomatik Yük Devretmesi için Esnek Yük Devretme İlkesi.

    • Sistem durumu denetim zaman aşımı eşiğini yapılandırmak için HEALTH_CHECK_TIMEOUT = n seçeneğini kullanın; burada n , 15000 milisaniyeden (15 saniye) milisaniyeye kadar 4294967295 bir tamsayıdır. Varsayılan değer 30000 milisaniyedir (30 saniye)

      Örneğin, aşağıdaki Transact-SQL deyimi, mevcut bir kullanılabilirlik grubunun AG1 sağlık denetimi zaman aşımı eşiğini 60.000 milisaniye (bir dakika) olarak değiştirir.

      
      ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);  
      

PowerShell'i kullanma

Esnek yük devretme politikasını yapılandırmak için

  1. Varsayılan (cd) değerini birincil çoğaltmayı barındıran sunucu örneğine ayarlayın.

  2. Kullanılabilirlik grubuna kullanılabilirlik çoğaltması eklerken New-SqlAvailabilityGroup cmdlet'ini kullanın. Mevcut kullanılabilirlik çoğaltmasını değiştirirken Set-SqlAvailabilityGroup cmdlet'ini kullanın.

    • Yük devretme koşulu düzeyini ayarlamak için FailureConditionLeveldüzeyi parametresini kullanın; burada düzey aşağıdaki değerlerden biridir:

      Değer Seviye Otomatik Geçiş Başlatıldığında...
      OnServerDown Bir Sunucu devre dışı. Yük devretme veya yeniden başlatma sonucunda SQL Server hizmeti durur.
      OnServerUnresponsive İki Sunucuda yanıt vermiyor. Daha düşük bir değere sahip herhangi bir koşul sağlandığında, SQL Server hizmeti kümeye bağlandığında ve sistem durumu denetim zaman aşımı eşiği aşıldığında veya geçerli birincil kopya hatalı durumda olduğunda.
      OnCriticalServerError Üç Kritik sunucu hatası. Düşük değerin herhangi bir koşulu karşılanır veya iç kritik sunucu hatası oluşur.

      Bu varsayılan düzeydir.
      OnModerateServerError Dört Orta düzeyde sunucu hatası. Düşük değerin herhangi bir koşulu karşılanır veya orta düzeyde bir Sunucu hatası oluşur.
      Herhangi Nitelikli Başarısızlık Koşullarında Beş Tüm uygun hata koşullarında. Daha düşük değere sahip herhangi bir koşul karşılanır veya belirleyici bir hata koşulu oluşur.

      Yük devretme koşulu düzeyleri hakkında daha fazla bilgi için bkz. Kullanılabilirlik Grubunun (SQL Server) Otomatik Yük Devretmesi için Esnek Yük Devretme İlkesi.

      Örneğin, aşağıdaki komut var olan kullanılabilirlik grubunun AG1hata koşulu düzeyini birinci düzeye değiştirir.

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg `   
      -FailureConditionLevel OnServerDown  
      
    • Sistem durumu denetim zaman aşımı eşiğini ayarlamak için HealthCheckTimeoutn parametresini kullanın; burada n , 15000 milisaniyeden (15 saniye) 4294967295 milisaniyeye kadar olan bir tamsayıdır. Varsayılan değer 30000 milisaniyedir (30 saniye).

      Örneğin, aşağıdaki komut mevcut bir kullanılabilirlik grubunun AG1sistem durumu denetim zaman aşımı eşiğini 120.000 milisaniye (iki dakika) olarak değiştirir.

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAG `   
      -HealthCheckTimeout 120000  
      

Uyarı

Bir cmdlet'in söz dizimini görüntülemek için SQL Server PowerShell ortamındaki Get-Help cmdlet'ini kullanın. Daha fazla bilgi için bkz. SQL Server PowerShell Yardım Alma.

SQL Server PowerShell sağlayıcısını ayarlamak ve kullanmak için

İlgili Görevler

Otomatik yük devretmeyi yapılandırmak için

İlgili İçerik

Ayrıca Bkz.

Always On Kullanılabilirlik Grupları (SQL Server) Genel Bakış
Kullanılabilirlik Modları (AlwaysOn Kullanılabilirlik Grupları)
Yük Devretme ve Yük Devretme Modları (Her Zaman Açık Kullanılabilirlik Grupları)
SQL Server ile Windows Server Failover Kümelemesi (WSFC)
Yük Devretme Kümesi Örnekleri için Yük Devretme İlkesi
sp_server_diagnostics (Transact-SQL)