Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server Windows rendszeren
Ez a témakör azt ismerteti, hogyan konfigurálható a rugalmas feladatátvételi szabályzat egy Always On rendelkezésre állási csoporthoz Transact-SQL vagy PowerShell használatával az SQL Serverben. A rugalmas feladatátvételi szabályzat részletes vezérlést biztosít a rendelkezésre állási csoport automatikus feladatátvételét okozó feltételek felett. Az automatikus feladatátvételt kiváltó hibafeltételek és az állapotellenőrzések gyakoriságának módosításával növelheti vagy csökkentheti az automatikus feladatátvétel valószínűségét, hogy támogassa az SLA magas rendelkezésre állását.
A rendelkezésre állási csoportok rugalmas feladatátvételi szabályzatát a hibaállapot szintje és az állapot-ellenőrző időtúllépési küszöbértéke határozza meg. Amikor a rendszer észleli, hogy egy rendelkezésre állási csoport túllépte a hibaállapot szintjét vagy az állapot-ellenőrzési időtúllépési küszöbértékét, a csoport erőforrás DLL-je válaszol a Windows Server failover clustering szolgáltatás (WSFC) felé. A WSFC-fürt ezután automatikus feladatátvételt kezdeményez a másodlagos replikára.
Megjegyzés:
A rendelkezésre állási csoportok rugalmas feladatátvételi szabályzata nem konfigurálható az SQL Server Management Studio használatával.
Az automatikus feladatátvétel korlátozásai
Az automatikus feladatátvételhez az aktuális elsődleges replikát és egy másodlagos replikát konfigurálni kell a szinkron-véglegesítési rendelkezésre állási módhoz automatikus feladatátvétellel, a másodlagos replikát pedig szinkronizálni kell az elsődleges replikával.
Az SQL Server 2019 (15.x) 5-re növelte a szinkron replikák maximális számát az SQL Server 2017 3-ról (14.x). Ezt az öt replikából álló csoportot úgy konfigurálhatja, hogy a csoporton belül automatikus feladatátvétel legyen. Van egy elsődleges replika, valamint négy szinkron másodlagos replika.
Ha egy rendelkezésre állási csoport túllépi a WSFC hibaküszöbét, a WSFC-fürt nem kísérli meg automatikus feladatátvételt a rendelkezésre állási csoport számára. Ezenkívül a rendelkezésre állási csoport WSFC-erőforráscsoportja sikertelen állapotban marad mindaddig, amíg a fürt rendszergazdája manuálisan nem helyezi online állapotba a sikertelen erőforráscsoportot, vagy az adatbázis-rendszergazda manuális feladatátvételt végez a rendelkezésre állási csoporton. A WSFC hibaküszöbe a rendelkezésre állási csoport által egy adott időszakban támogatott hibák maximális száma. Az alapértelmezett időszak hat óra, és a hibák maximális számának alapértelmezett értéke ebben az időszakban n-1, ahol n a WSFC-csomópontok száma. Egy adott rendelkezésre állási csoport hibaküszöbértékeinek módosításához használja a WSFC Feladatátvétel-kezelő konzolját.
Előfeltételek
- Az elsődleges replikát üzemeltető kiszolgálópéldányhoz kell csatlakoznia.
Engedélyek
| Feladatok | Engedélyek |
|---|---|
| Rugalmas feladatátvételi szabályzat konfigurálása új rendelkezésre állási csoporthoz | A sysadmin rögzített kiszolgálói szerepkörben való tagság, és a következő engedélyek valamelyike szükséges: a CREATE AVAILABILITY GROUP kiszolgálói engedély létrehozása, az ALTER ANY AVAILABILITY GROUP engedély módosítása, vagy a CONTROL SERVER engedély. |
| Meglévő rendelkezésre állási csoport házirendjének módosítása | ALTER AVAILABILITY GROUP engedély szükséges a rendelkezésre állási csoporthoz, CONTROL AVAILABILITY GROUP engedély, ALTER ANY AVAILABILITY GROUP engedély vagy CONTROL SERVER engedély. |
Health-Check időtúllépési küszöbérték
A rendelkezésre állási csoport WSFC-erőforrás DLL-je elvégzi az elsődleges replika állapotellenőrzését az elsődleges replikát üzemeltető SQL Server-példány sp_server_diagnostics tárolt eljárás meghívásával. sp_server_diagnostics a rendelkezésre állási csoport állapot-ellenőrzési időkorlátjának 1/3-ával egyenlő időközönként adja vissza az eredményeket. A 30 másodperces állapot-ellenőrzési alapértelmezett időtúllépési küszöbérték azt eredményezi, hogy az sp_server_diagnostics 10 másodperces időközönként ad vissza eredményeket. Ha sp_server_diagnostics lassú vagy nem ad vissza információt, az erőforrás DLL-je megvárja az állapot-ellenőrzési időtúllépési küszöbérték teljes időtartamát, mielőtt megállapítanák, hogy az elsődleges replika nem válaszol. Ha az elsődleges replika nem válaszol, automatikus feladatátvétel indulhat el, ha ez jelenleg támogatott.
Fontos
sp_server_diagnostics nem végez állapotellenőrzést az adatbázis szintjén.
Failure-Condition szint
Az, hogy a sp_server_diagnostics által visszaadott diagnosztikai adatok és állapotadatok automatikus feladatátvételt indokolnak-e, a rendelkezésre állási csoport meghibásodási állapotának szintjétől függ. A hibafeltétel szintje határozza meg, hogy milyen hibafeltételek váltják ki az automatikus feladatátvételt. Öt hibaállapot-szint létezik, amelyek a legkevésbé korlátozótól (1. szint) a legszigorúbbig (5. szint) terjednek. Egy adott szint a kevésbé korlátozó szinteket foglalja magában. Így a legszigorúbb, öt, magában foglalja a négy kevésbé korlátozó feltételeket, és így tovább.
Fontos
A sérült adatbázisokat és a gyanús adatbázisokat semmilyen hibaállapot-szint nem észleli. Ezért egy sérült vagy gyanús adatbázis (hardverhiba, adatsérülés vagy egyéb probléma miatt) soha nem aktivál automatikus feladatátvételt.
Az alábbi táblázat az egyes szinteknek megfelelő meghibásodási feltételt ismerteti.
| szint | Hiba-feltétel | Transact-SQL érték | PowerShell-érték |
|---|---|---|---|
| Egy | A kiszolgáló leállt. Megadja, hogy a rendszer automatikus feladatátvételt kezdeményez, amikor az alábbiak valamelyike következik be: Az SQL Server szolgáltatás leállt. A WSFC-fürthöz való csatlakozáshoz használt rendelkezésre állási csoport bérlete lejár, mert a kiszolgálópéldány nem kap ACK-t. További információ: How It Works: SQL Server Always On Lease Timeout. Ez a legkevésbé korlátozó szint. |
1 | OnServerDown |
| Kettő | A kiszolgáló nem válaszol. Azt adja meg, hogy a rendszer automatikus feladatátvételt kezdeményez az alábbiak valamelyike esetén: Az SQL Server példánya nem csatlakozik a fürthöz, és túllépi a rendelkezésre állási csoport felhasználó által megadott állapot-ellenőrzési időtúllépési küszöbértékét. A rendelkezésre állási replika sikertelen állapotban van. |
2 | OnServerUnresponsive |
| Három | Kritikus kiszolgálóhiba. Azt határozza meg, hogy az SQL Server kritikus belső hibái, például árva spinlockok, súlyos írási-hozzáférési szabálysértések vagy túl sok, rövid idő alatt létrehozott memóriakép esetén automatikus feladatátvételt kezdeményeznek. Ez az alapértelmezett szint. |
3 | OnCriticalServerError |
| Négy | Mérsékelt kiszolgálóhiba. Megadja, hogy az automatikus feladatátvételt mérsékelt SQL Server belső hibák, például az SQL Server belső erőforráskészletében lévő állandó memóriakihasználtság esetén kezdeményezik. | 4 | OnModerateServerError |
| Öt | Meghatározott meghibásodási feltételek esetén. Megadja, hogy a rendszer automatikus feladatátvételt kezdeményez minden minősített hibafeltétel esetén, beleértve a következőket: A Scheduler holtpontjának észlelése. Feloldhatatlan holtpont észlelése. Ez a legszigorúbb szint. |
5 | MindenMinősítetthibafeltételeknél |
Megjegyzés:
Az SQL Server egy példánya által az ügyfélkérésekre adott válasz hiánya a rendelkezésre állási csoportok számára irreleváns.
Transact-SQL használata
A rugalmas feladatátvételi szabályzat konfigurálása
Csatlakozzon az elsődleges replikát üzemeltető kiszolgálópéldányhoz.
Új rendelkezésre állási csoport esetén használja a CREATE AVAILABILITY GROUPTransact-SQL utasítást. Ha egy meglévő rendelkezésre állási csoportot módosít, használja az ALTER AVAILABILITY GROUPTransact-SQL utasítást.
A feladatátvételi feltétel szintjének beállításához használja a FAILURE_CONDITION_LEVEL = n beállítást, ahol az n egész szám 1 és 5 között.
Az alábbi Transact-SQL utasítás például egy meglévő rendelkezésre állási csoport
AG1hibafeltételi szintjét az első szintre módosítja:ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);Ezeknek az egész számoknak a hibaállapot-szintekhez való viszonya a következő:
Transact-SQL érték szint Az automatikus feladatátvétel akkor indul el, ha... 1 Egy A kiszolgáló leállt. Az SQL Server szolgáltatás feladatátvétel vagy újraindítás miatt leáll. 2 Kettő A kiszolgáló nem válaszol. Ha bármelyik kisebb prioritású feltétel teljesül, az SQL Server szolgáltatás csatlakozik a fürthöz, és túllépi az állapotellenőrzés időkorlát küszöbét, vagy az aktuális elsődleges replika hibás állapotba kerül. 3 Három Kritikus kiszolgálóhiba. Az alacsonyabb értékű feltételek teljesülnek, vagy belső kritikus kiszolgálóhiba lép fel.
Ez az alapértelmezett szint.4 Négy Mérsékelt kiszolgálóhiba. Az alacsonyabb értékű feltételek teljesülnek, vagy mérsékelt kiszolgálóhiba lép fel. 5 Öt Meghatározott meghibásodási feltételek esetén. Az alacsonyabb értékű követelmények teljesülnek, vagy egy minősítő hibafeltétel lép fel. A feladatátvételi feltételszintekről bővebb információt a rugalmas feladatátvételi szabályzatban a rendelkezésre állási csoport (SQL Server) automatikus feladatátvételéhez talál.
Az állapot-ellenőrzési időtúllépési küszöbérték konfigurálásához használja az HEALTH_CHECK_TIMEOUT = n beállítást, ahol az n 15000 ezredmásodperctől 4294967295 ezredmásodpercig egész szám. Az alapértelmezett érték 30000 ezredmásodperc (30 másodperc)
Az alábbi Transact-SQL utasítás például 60 000 ezredmásodpercre (egy perc) módosítja egy meglévő rendelkezésre állási csoport
AG1állapot-ellenőrzési időtúllépési küszöbértékét.ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);
PowerShell használata
A rugalmas feladatátvételi szabályzat konfigurálása
Állítsa be az alapértelmezett (cd) beállítást az elsődleges replikát üzemeltető kiszolgálópéldányra.
Amikor rendelkezésre állási replikát ad hozzá egy rendelkezésre állási csoporthoz, használja a New-SqlAvailabilityGroup parancsmagot. Meglévő rendelkezésre állási replika módosításakor használja a Set-SqlAvailabilityGroup parancsmagot.
A feladatátvételi feltétel szintjének beállításához használja a FailureConditionLevelszint paramétert, ahol a szint az alábbi értékek egyike:
Érték szint Az automatikus feladatátvétel akkor indul el, ha... OnServerDown Egy A kiszolgáló leállt. Az SQL Server szolgáltatás feladatátvétel vagy újraindítás miatt leáll. OnServerUnresponsive Kettő A kiszolgáló nem válaszol. Ha bármelyik kisebb prioritású feltétel teljesül, az SQL Server szolgáltatás csatlakozik a fürthöz, és túllépi az állapotellenőrzés időkorlát küszöbét, vagy az aktuális elsődleges replika hibás állapotba kerül. OnCriticalServerError Három Kritikus kiszolgálóhiba. Az alacsonyabb értékű feltételek teljesülnek, vagy belső kritikus kiszolgálóhiba lép fel.
Ez az alapértelmezett szint.OnModerateServerError Négy Mérsékelt kiszolgálóhiba. Az alacsonyabb értékű feltételek teljesülnek, vagy mérsékelt kiszolgálóhiba lép fel. MindenMinősítetthibafeltételeknél Öt Meghatározott meghibásodási feltételek esetén. Az alacsonyabb értékű követelmények teljesülnek, vagy egy minősítő hibafeltétel lép fel. A feladatátvételi feltételszintekről bővebb információt a rugalmas feladatátvételi szabályzatban a rendelkezésre állási csoport (SQL Server) automatikus feladatátvételéhez talál.
Az alábbi parancs például egy meglévő rendelkezésre állási csoport
AG1hibaállapot-szintjét egy szintre módosítja.Set-SqlAvailabilityGroup ` -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg ` -FailureConditionLevel OnServerDownAz állapot-ellenőrzési időtúllépési küszöbérték beállításához használja a HealthCheckTimeoutn paramétert, ahol az n érték 15000 ezredmásodperctől 4294967295 ezredmásodpercig egész szám. Az alapértelmezett érték 30000 ezredmásodperc (30 másodperc).
Az alábbi parancs például 120 000 ezredmásodpercre (két perc) módosítja egy meglévő rendelkezésre állási csoport
AG1állapot-ellenőrzési időtúllépési küszöbértékét.Set-SqlAvailabilityGroup ` -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAG ` -HealthCheckTimeout 120000
Megjegyzés:
A parancsmag szintaxisának megtekintéséhez használja a Get-Help parancsmagot az SQL Server PowerShell-környezetben. További információért lásd: Segítség SQL Server PowerShell használatához.
Az SQL Server PowerShell-szolgáltató beállítása és használata
Kapcsolódó tevékenységek
Automatikus átváltás konfigurálása
Rendelkezésre állási replika (SQL Server) rendelkezésre állási módjának módosítása ( az automatikus feladatátvételhez szinkron véglegesítési rendelkezésre állási mód szükséges)
Rendelkezésre állási replika (SQL Server) feladatátvételi módjának módosítása
Kapcsolódó tartalom
Lásd még:
Az "Always On" rendelkezésre állási csoportok (SQL Server) áttekintése
Rendelkezésre állási módok ("Always On" rendelkezésre állási csoportok)
Átállás és Átállási Módok (Mindig aktív rendelkezésre állási csoportok)
Windows Server feladatátvételi fürtszolgáltatás (WSFC) SQL Serverrel
feladatátvételi házirend feladatátvételi fürtpéldányokhoz
sp_server_diagnostics (Transact-SQL)