Dela via


Konfigurera en flexibel automatisk failover-princip för en Always On-tillgänglighetsgrupp

gäller för:SQL Server – endast Windows

I det här avsnittet beskrivs hur du konfigurerar en flexibel redundansprincip för en AlwaysOn-tillgänglighetsgrupp med hjälp av Transact-SQL eller PowerShell i SQL Server. En flexibel redundansprincip ger detaljerad kontroll över de villkor som orsakar automatisk redundans för en tillgänglighetsgrupp. Genom att ändra de feltillstånd som utlöser en automatisk övergång och frekvensen av hälsokontroller kan du öka eller minska sannolikheten för en automatisk övergång för att stödja ditt tjänstenivåavtal för hög tillgänglighet.

Den flexibla redundansprincipen för en tillgänglighetsgrupp definieras av dess tröskelvärde för felvillkor och tidsgräns för hälsokontroll. När tillgänglighetsgruppen har överskridit sin felvillkorsnivå eller tröskelvärdet för hälsokontroll svarar tillgänglighetsgruppens resurs-DLL tillbaka på WSFC-klustret (Windows Server Failover Clustering). WSFC-klustret initierar sedan ett automatiskt failover till den sekundära replikan.

Anmärkning

Den flexibla redundansprincipen för en tillgänglighetsgrupp kan inte konfigureras med hjälp av SQL Server Management Studio.

Begränsningar för automatiska redundansväxlingar

  • För att en automatisk redundansväxling ska ske måste den aktuella primära repliken och en sekundär replik konfigureras för tillgänglighetsläge med synkron commit och automatisk redundansväxling, och den sekundära repliken måste vara synkroniserad med den primära repliken.

  • SQL Server 2019 (15.x) ökade det maximala antalet synkrona repliker till 5, upp från 3 i SQL Server 2017 (14.x). Du kan konfigurera den här gruppen med fem repliker så att den har automatisk redundans i gruppen. Det finns en primär replik, plus fyra synkrona sekundära repliker.

  • Om en tillgänglighetsgrupp överskrider tröskelvärdet för WSFC-fel kommer WSFC-klustret inte att försöka utföra någon automatisk redundansväxling för tillgänglighetsgruppen. Dessutom förblir WSFC-resursgruppen för tillgänglighetsgruppen i ett misslyckat tillstånd tills antingen klusteradministratören manuellt hämtar den misslyckade resursgruppen online eller databasadministratören utför en manuell redundansväxling av tillgänglighetsgruppen. Tröskelvärdet för WSFC-fel definieras som det maximala antalet fel som stöds för tillgänglighetsgruppen under en viss tidsperiod. Standardtidsperioden är sex timmar och standardvärdet för det maximala antalet fel under den här perioden är n-1, där n är antalet WSFC-noder. Om du vill ändra tröskelvärdena för fel för en viss tillgänglighetsgrupp använder du WSFC-konsolen för redundanshanteraren.

Förutsättningar

  • Du måste vara ansluten till den serverinstans som är värd för den primära repliken.

Behörigheter

Aktivitet Behörigheter
Så här konfigurerar du den flexibla redundansprincipen för en ny tillgänglighetsgrupp Kräver medlemskap i sysadmin fast serverroll samt antingen CREATE AVAILABILITY GROUP-serverbehörighet, ALTER ANY AVAILABILITY GROUP-behörighet eller CONTROL SERVER-behörighet.
Ändra principen för en befintlig tillgänglighetsgrupp Kräver ändringstillstånd för tillgänglighetsgruppen, kontrolltillstånd för tillgänglighetsgrupp, tillstånd att ändra alla tillgänglighetsgrupper, eller kontrolltillstånd för servern.

Tidsgräns tröskelvärde för Health-Check

WSFC-resurs-DLL för tillgänglighetsgruppen utför en hälsokontroll av den primära repliken genom att anropa den sp_server_diagnostics lagrade proceduren på instansen av SQL Server som är värd för den primära repliken. sp_server_diagnostics returnerar resultat med ett intervall som motsvarar en tredjedel av hälsokontrollens timeoutgräns för tillgänglighetsgruppen. Standardtröskelvärdet för hälsokontroll är 30 sekunder, vilket gör att sp_server_diagnostics returneras med ett intervall på 10 sekunder. Om sp_server_diagnostics är långsam eller inte returnerar information väntar resurs-DLL:t under hela tidsgränsen för hälsotillståndskontrollen innan det fastställs att huvudrepliken inte svarar. Om den primära repliken inte svarar initieras en automatisk redundansväxling om den stöds för närvarande.

Viktigt!

sp_server_diagnostics utför inte hälsokontroller på databasnivå.

Failure-Condition nivå

Om diagnostikdata och hälsoinformation som returneras av sp_server_diagnostics garanterar automatisk redundans beror på tillgänglighetsgruppens felvillkorsnivå. Felvillkorsnivån anger vilka felvillkor som utlöser en automatisk redundansväxling. Det finns fem felvillkorsnivåer, som sträcker sig från den minst restriktiva (nivå ett) till den mest restriktiva (nivå fem). En viss nivå omfattar de mindre restriktiva nivåerna. Den strängaste nivån, fem, innehåller alltså de fyra mindre restriktiva villkoren och så vidare.

Viktigt!

Skadade databaser och misstänkta databaser identifieras inte av någon felvillkorsnivå. Därför utlöser en databas som är skadad eller misstänkt (oavsett om det beror på maskinvarufel, skadade data eller andra problem) aldrig en automatisk redundansväxling.

I följande tabell beskrivs det felvillkor som motsvarar varje nivå.

Nivå Feltillstånd Värde för Transact-SQL PowerShell-värde
Ett Servern är nere. Anger att en automatisk övergång initieras när någon av följande sker:

SQL Server-tjänsten är nere.

Lånet av tillgänglighetsgruppen för anslutning till WSFC-klustret upphör att gälla eftersom ingen ACK tas emot från serverinstansen. Mer information finns i How It Works: SQL Server Always On Lease Timeout.



Det här är den minst restriktiva nivån.
1 OnServerDown
Två Servern svarar inte. Anger att en automatisk redundans initieras när något av följande inträffar:

Sql Server-instansen ansluter inte till klustret och tröskelvärdet för den användardefinierade tidsgränsen för hälsokontroll för tillgänglighetsgruppen överskrids.

Tillgänglighetsrepliken är i fel tillstånd.
2 OnServerUnresponsive
Tre Vid kritiskt serverfel. Anger att en automatisk redundans initieras på kritiska interna SQL Server-fel, till exempel överblivna spinlocks, allvarliga överträdelser av skrivåtkomst eller för många minnesdumpar som genererats på kort tid.

Det här är standardnivån.
3 OnCriticalServerError
Fyra Vid måttligt serverfel. Anger att en automatisk övergång initieras vid måttliga interna SQL Server-fel, till exempel en beständig out-of-memory-situation i den interna SQL Server-resurspoolen. 4 OnModerateServerError
Fem Vid eventuella kvalificerade feltillstånd. Anger att en automatisk omkoppling initieras vid kvalificerade felvillkor, inklusive:

Identifiering av Scheduler-dödläge.

Identifiering av ett olösbart dödläge.



Det här är den mest restriktiva nivån.
5 VidAllaKvalificeradeFelFörhållanden

Anmärkning

Brist på svar från en instans av SQL Server på klientbegäranden är irrelevant för tillgänglighetsgrupper.

Använda Transact-SQL

Så här konfigurerar du den flexibla redundansprincipen

  1. Anslut till den serverinstans som är värd för den primära repliken.

  2. För en ny tillgänglighetsgrupp använder du instruktionen SKAPA TILLGÄNGLIGHETSGRUPPTransact-SQL. Om du ändrar en befintlig tillgänglighetsgrupp använder du instruktionen ALTER AVAILABILITY GROUPTransact-SQL.

    • Om du vill ange villkorsnivå för redundans använder du alternativet FAILURE_CONDITION_LEVEL = n , där n är ett heltal från 1 till 5.

      Följande Transact-SQL-instruktion ändrar till exempel felvillkorsnivån för en befintlig tillgänglighetsgrupp, AG1, till nivå ett:

      
      ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);  
      

      Relationen mellan dessa heltalsvärden och felvillkorsnivåerna är följande:

      Värde för Transact-SQL Nivå Automatisk övergång till reservsystem initieras när...
      1 Ett Servern är nere. SQL Server-tjänsten stoppas på grund av en redundansväxling eller omstart.
      2 Två Servern svarar inte. Alla villkor med lägre värde uppfylls, SQL Server-tjänsten är ansluten till klustret och tröskelvärdet för hälsokontroll överskrids eller så är den aktuella primära repliken i ett feltillstånd.
      3 Tre Vid kritiskt serverfel. Alla villkor med lägre värde uppfylls eller ett internt kritiskt serverfel inträffar.

      Det här är standardnivån.
      4 Fyra Vid måttligt serverfel. Alla villkor med lägre värde uppfylls eller ett måttligt serverfel inträffar.
      5 Fem Vid eventuella kvalificerade feltillstånd. Alla villkor med lägre värde uppfylls eller ett villkor för kvalificerande fel inträffar.

      Mer information om redundansvillkorsnivåer finns i Flexibel redundansprincip för automatisk redundans för en tillgänglighetsgrupp (SQL Server).

    • Om du vill konfigurera tröskelvärdet för hälsokontroll använder du alternativet HEALTH_CHECK_TIMEOUT = n , där n är ett heltal från 15 000 millisekunder (15 sekunder) till 4294967295 millisekunder. Standardvärdet är 3 0000 millisekunder (30 sekunder)

      Följande Transact-SQL-instruktion ändrar t.ex. tidsgränsen för hälsokontroll för en befintlig tillgänglighetsgrupp, AG1, till 60 000 millisekunder (en minut).

      
      ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);  
      

Med hjälp av PowerShell

Så här konfigurerar du den flexibla redundansprincipen

  1. Ange standardvärdet (cd) till den serverinstans som är värd för den primära repliken.

  2. När du lägger till en tillgänglighetsreplik i en tillgänglighetsgrupp använder du cmdleten New-SqlAvailabilityGroup . När du ändrar en befintlig tillgänglighetsreplik använder du cmdleten Set-SqlAvailabilityGroup .

    • För att ställa in villkorsnivån för failover, använd parametern FailureConditionLevel, där nivån är ett av följande värden:

      Värde Nivå Automatisk övergång till reservsystem initieras när...
      OnServerDown Ett Servern är nere. SQL Server-tjänsten stoppas på grund av en redundansväxling eller omstart.
      OnServerUnresponsive Två Servern svarar inte. Alla villkor med lägre värde uppfylls, SQL Server-tjänsten är ansluten till klustret och tröskelvärdet för hälsokontroll överskrids eller så är den aktuella primära repliken i ett feltillstånd.
      OnCriticalServerError Tre Vid kritiskt serverfel. Alla villkor med lägre värde uppfylls eller ett internt kritiskt serverfel inträffar.

      Det här är standardnivån.
      OnModerateServerError Fyra Vid måttligt serverfel. Alla villkor med lägre värde uppfylls eller ett måttligt serverfel inträffar.
      VidAllaKvalificeradeFelFörhållanden Fem Vid eventuella kvalificerade feltillstånd. Alla villkor med lägre värde uppfylls eller ett villkor för kvalificerande fel inträffar.

      Mer information om redundansvillkorsnivåer finns i Flexibel redundansprincip för automatisk redundans för en tillgänglighetsgrupp (SQL Server).

      Följande kommando ändrar till exempel felvillkorsnivån för en befintlig tillgänglighetsgrupp, AG1, till nivå ett.

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg `   
      -FailureConditionLevel OnServerDown  
      
    • Om du vill ange tröskelvärdet för hälsokontroll använder du parametern HealthCheckTimeoutn , där n är ett heltal från 15 000 millisekunder (15 sekunder) till 4294967295 millisekunder. Standardvärdet är 3 0000 millisekunder (30 sekunder).

      Följande kommando ändrar t.ex. tröskelvärdet för hälsokontroll för en befintlig tillgänglighetsgrupp, AG1, till 120 000 millisekunder (två minuter).

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

Anmärkning

Om du vill visa syntaxen för en cmdlet använder du cmdleten Get-Help i SQL Server PowerShell-miljön. Mer information finns i Hämta hjälp för SQL Server PowerShell.

Konfigurera och använda SQL Server PowerShell-providern

Relaterade uppgifter

Konfigurera automatisk övergång

Relaterat innehåll

Se även

översikt över AlwaysOn-tillgänglighetsgrupper (SQL Server)
Tillgänglighetslägen (Always On-tillgänglighetsgrupper)
redundans och redundanslägen (Always On-tillgänglighetsgrupper)
Windows Server Failover Clustering (WSFC) (redundansklustring för Windows Server) med SQL Server
Redundansprincip för redundansklusterinstanser
sp_server_diagnostics (Transact-SQL)