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
Az SQL Server 2016-tól kezdve az adatbázisszintű állapotészlelés (DB_FAILOVER) lehetőség érhető el az Always On rendelkezésre állási csoport konfigurálásakor. Az adatbázisszintű állapotészlelés észleli, ha egy adatbázis már nincs online állapotban, amikor valami hiba történik, és elindítja a rendelkezésre állási csoport automatikus feladatátvételét. Az állapotészlelést kiváltó példák közé tartozik például az adatbázis gyanús módban, az adatbázis offline állapotban, valamint az adatbázis helyreállítási módban (sikertelen helyreállítás esetén). További információ: State column in sys.databases.
Az adatbázisszintű állapotészlelés a rendelkezésre állási csoport egészében engedélyezve van, ezért az adatbázisszintű állapotészlelés a rendelkezésre állási csoport összes adatbázisát figyeli. A rendelkezésre állási csoportban lévő egyes adatbázisok esetében nem engedélyezhető szelektíven.
Az adatbázisszintű állapotészlelési lehetőség előnyei
A rendelkezésre állási csoport adatbázisszintű állapotészlelési lehetősége széles körben ajánlott, mert így biztosítható az adatbázisok magas rendelkezésre állása. Érdemes lehet bekapcsolni valamennyi rendelkezésre állási csoport esetében. Ha az alkalmazás több adatbázistól függ, hogy magas rendelkezésre állásúak legyenek, csoportosítsa őket egy rendelkezésre állási csoportba, és az adatbázis állapotbeállítása be van kapcsolva.
Ha például az adatbázisszintű állapotészlelés beállítás be van kapcsolva, ha az SQL Server nem tudott írni az egyik adatbázis tranzakciónapló-fájljába, az adatbázis állapota a hiba jelzésére módosulna, és a rendelkezésre állási csoport hamarosan feladatátvételt végezne, és az alkalmazás újracsatlakozhat, és minimális megszakítással folytathatná a munkát, ha az adatbázisok újra online állapotba kerülnek.
Adatbázisszintű állapotészlelés engedélyezése
Bár általában ajánlott, az Adatbázis állapota beállítás alapértelmezés szerint ki van kapcsolva, hogy a korábbi verziók alapértelmezett beállításaival kompatibilitást tartson fenn.
Az adatbázisszintű állapotészlelés beállításának számos egyszerű módja van:
Az SQL Server Management Studióban csatlakozzon az SQL Server-adatbázismotorhoz. Az Objektumkezelő ablakával kattintson a jobb gombbal az Always On High Availability csomópontra, és futtassa az Új rendelkezésre állási csoport varázslót. Jelölje be az Adatbázisszintű állapotészlelés jelölőnégyzetet a Név megadása lapon. Ezután fejezze be a varázsló többi oldalának kitöltését.
Tekintse meg egy meglévő rendelkezésre állási csoport tulajdonságait az SQL Server Management Studióban. Csatlakozzon az SQL Serverhez. Az Object Explorer ablakával bontsa ki az Always On High Availability csomópontot. Bővítse ki a rendelkezésre állási csoportokat. Kattintson a jobb gombbal a rendelkezésre állási csoportra, és válassza a Tulajdonságok parancsot. Jelölje be az Adatbázisszintű állapotészlelés lehetőséget, majd kattintson az OK gombra, vagy írja be a módosítást.
A Transact-SQL szintaxisa a RENDELKEZÉSRE ÁLLÁSI CSOPORT LÉTREHOZÁSA számára. A DB_FAILOVER paraméter be- vagy kikapcsolt értékeket fogad el.
CREATE AVAILABILITY GROUP [Contoso-ag] WITH (DB_FAILOVER=ON) FOR DATABASE [AutoHa-Sample] REPLICA ON N'SQLSERVER-0' WITH (ENDPOINT_URL = N'TCP://SQLSERVER-0.DOMAIN.COM:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT), N'SQLSERVER-1' WITH (ENDPOINT_URL = N'TCP://SQLSERVER-1.DOMAIN.COM:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);Transact-SQL szintaxis a RENDELKEZÉSRE ÁLLÁSI CSOPORT MÓDOSÍTÁSÁRA. A DB_FAILOVER paraméter be- vagy kikapcsolt értékeket fogad el.
ALTER AVAILABILITY GROUP [Contoso-ag] SET (DB_FAILOVER = ON); ALTER AVAILABILITY GROUP [Contoso-ag] SET (DB_FAILOVER = OFF);
Figyelmeztetések
Fontos megjegyezni, hogy az adatbázisszintű hőségészlelés lehetőség jelenleg nem okozza az SQL Server számára a lemez üzemidejének monitorozását, és az SQL Server nem figyeli közvetlenül az adatbázisfájl rendelkezésre állását. Ha egy lemezmeghajtó meghibásodik vagy elérhetetlenné válik, az önmagában nem feltétlenül eredményezi a rendelkezésre állási csoport automatikus feladatátvételét.
Ha például egy adatbázis tétlen, és nincsenek aktív tranzakciók, és nincsenek fizikai írások, ha az adatbázisfájlok egy része elérhetetlenné válik, előfordulhat, hogy az SQL Server nem végez olvasási vagy írási I/O-műveleteket a fájlokon, és nem módosítja azonnal az adatbázis állapotát, így nem aktiválódik a feladatátvétel. Később, amikor egy adatbázis-ellenőrzőpont vagy egy lekérdezés végrehajtásához fizikai olvasás vagy írás történik, az SQL Server ekkor észlelheti a fájlproblémát, és az adatbázis állapotának módosításával reagálhat, majd az adatbázis állapotváltozása miatt a rendelkezésre állási csoport, amelyen az adatbázisszintű állapotészlelés be van állítva, feladatátvételt fog végrehajtani.
Egy másik példa, amikor az SQL Server adatbázismotorjának be kell olvasnia egy adatlapot a lekérdezés teljesítéséhez, ha az adatoldal gyorsítótárazva van a pufferkészlet memóriájában, akkor a lekérdezési kérés teljesítéséhez nem szükséges fizikai hozzáféréssel rendelkező lemez olvasása. Ezért előfordulhat, hogy egy hiányzó vagy nem elérhető adatfájl nem aktiválja azonnal az automatikus átállást, még akkor sem, ha az adatbázis egészségügyi opciója engedélyezve van, mivel a státusz nem frissül azonnal.
Az adatbázis feladatátvitele különálló a rugalmas feladatátvételi szabályzattól
Az adatbázisszintű állapotészlelés rugalmas feladatátvételi szabályzatot implementál, amely konfigurálja az SQL Server folyamatállapotának küszöbértékeit a feladatátvételi szabályzathoz. Az adatbázisszintű állapotészlelés a DB_FAILOVER paraméterrel van konfigurálva, míg a rendelkezésre állási csoport FAILURE_CONDITION_LEVEL beállítás külön van az SQL Server folyamatállapot-észlelésének konfigurálásához. A két lehetőség független.
Adatbázisszintű állapotészlelés kezelése és monitorozása
Dinamikus felügyeleti nézetek
A rendszer DMV sys.availability_groups egy db_failover nevű oszlopot jelenít meg, amely jelzi, hogy az adatbázisszintű állapotérzékelési beállítás ki van-e kapcsolva (0) vagy be (1).
select name, db_failover from sys.availability_groups
Példa dmv kimenetre:
| név | db_failover |
|---|---|
| Contoso-ag | 1 |
Hibanapló
Az SQL Server hibanaplója (vagy a sp_readerrorlog szövege) a 41653-es hibaüzenetet jeleníti meg, ha egy rendelkezésre állási csoport feladatátvételt végzett az adatbázisszintű állapotészlelés ellenőrzése miatt.
Ez a hibanapló-részlet például azt mutatja, hogy egy tranzakciónapló írása lemezhiba miatt meghiúsult, majd a AutoHa-Sample nevű adatbázis le lett állítva, ami az adatbázisszintű állapotészlelést a rendelkezésre állási csoport feladatátvételéhez aktiválta.
2016-04-25 12:20:21.08 spid1s Hiba: 17053, Súlyosság: 16, Állapot: 1.
2016-04-25 12:20:21.08 spid1s SQLServerLogMgr::LogWriter: 21-ös operációsrendszer-hiba (Az eszköz nem áll készen.) hibát észlelt. 2016-04-25 12:20:21.08 spid1s Írási hiba a napló kiürítése során.
2016-04-25 12:20:21.08 spid79 Hiba: 9001, Súlyosság: 21, Állapot: 4.
2016-04-25 12:20:21.08 spid79 Az "AutoHa-Sample" adatbázis naplója nem érhető el. Tekintse meg az eseménynaplóban a kapcsolódó hibaüzeneteket. Oldja meg az esetleges hibákat, és indítsa újra az adatbázist.
2016-04-25 12:20:21.15 spid79 Hiba: 41653, Súlyosság: 21, Állapot: 1.
2016-04-25 12:20:21.15 spid79 "AutoHa-Sample" adatbázis hibát észlelt (hibatípus: 2 "DB_SHUTDOWN"), amely a "Contoso-ag" rendelkezésre állási csoport hibáját okozza. A tapasztalt hibákról az SQL Server hibanaplójában tájékozódhat. Ha ez a feltétel továbbra is fennáll, forduljon a rendszergazdához.
2016-04-25 12:20:21.17 spid79 Adatbázis állapotinformációk az "AutoHa-Sample" adatbázishoz - Megerősített LSN: "(34:664:1)" Commit LSN: "(34:656:1)" Véglegesítés ideje: "2016. ápr. 25. 12:19PM"
2016-04-25 12:20:21.19 spid15s Az Always On rendelkezésre állási csoportok kapcsolata a másodlagos adatbázissal megszakadt az "AutoHa-Sample" elsődleges adatbázison a 'SQLServer-0' rendelkezésre állási replikán, replikaazonosítóval: {c4ad5ea4-8a99-41fa-893e-189154c24b49}. Ez csak tájékoztató üzenet. Nincs szükség felhasználói beavatkozásra.
2016-04-25 12:20:21.21 spid75 Always On: A "Contoso-ag" rendelkezésre állási csoport helyi replikája arra készül, hogy áttérjen a feloldó szerepkörre a Windows Server Feladatátvevő fürtszolgáltatás (WSFC) fürttől érkező kérésre válaszul. Ez csak tájékoztató üzenet. Nincs szükség felhasználói beavatkozásra.
2016-04-25 12:20:21.21 spid75 A helyi rendelkezésre állási replika állapota az "ag" rendelkezésre állási csoportban "PRIMARY_NORMAL"-ről "RESOLVING_NORMAL"-ra módosult. Az állapot megváltozott, mert a rendelkezésre állási csoport offline állapotba kerül. A replika offline állapotba kerül, mert a társított rendelkezésre állási csoportot törölték, vagy a felhasználó offline állapotba hozta a társított rendelkezésre állási csoportot a Windows Server feladatátvételi fürtszolgáltatás (WSFC) felügyeleti konzolján, vagy a rendelkezésre állási csoport egy másik SQL Server-példányra kerül át. További információkért tekintse meg az SQL Server hibanaplóját, a Windows Server feladatátvételi fürtszolgáltatás (WSFC) felügyeleti konzolját vagy a WSFC-naplót.
Bővített esemény sqlserver.availability_replica_database_fault_reporting
Az SQL Server 2016-ban egy új kiterjesztett esemény van definiálva, amelyet az adatbázisszintű állapotészlelés aktivál. Az esemény neve sqlserver.availability_replica_database_fault_reporting
Ez az XEvent csak az elsődleges replikán aktiválódik. Ez az XEvent akkor aktiválódik, ha adatbázisszintű állapotproblémát észlel egy rendelkezésre állási csoportban üzemeltetett adatbázis esetében.
Íme egy példa egy XEvent-munkamenet létrehozására, amely rögzíti ezt az eseményt. Mivel nincs megadva elérési út, az XEvent kimeneti fájlnak az alapértelmezett SQL Server hibanapló elérési útján kell lennie. Hajtsa végre ezt a rendelkezésre állási csoport elsődleges replikáján:
Példa kiterjesztett esemény munkamenet-szkriptre
CREATE EVENT SESSION [AlwaysOn_dbfault] ON SERVER
ADD EVENT sqlserver.availability_replica_database_fault_reporting
ADD TARGET package0.event_file(SET filename=N'dbfault.xel',max_file_size=(5),max_rollover_files=(4))
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,
MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON)
GO
ALTER EVENT SESSION AlwaysOn_dbfault ON SERVER STATE=START
GO
Bővített esemény kimenete
Az SQL Server Management Studio használatával csatlakozzon az elsődleges SQL Serverhez, és bontsa ki a Felügyeleti csomópontot, majd bontsa ki a Kiterjesztett események csomópontot. Keresse meg a munkamenetet (AlwaysOn_dbfault a fenti mintában szereplő név volt), és bontsa ki a kimeneti fájlok megtekintéséhez. Válassza ki a kimeneti fájlt, és az eseményfájl megnyílik egy új lapon.
A mezők magyarázata:
| Oszlopadatok | Description |
|---|---|
| availability_csoport_id | A rendelkezésre állási csoport azonosítója. |
| elérhetőségi_csoport_név | A rendelkezésre állási csoport neve. |
| elérhetőségi_replika_azonosító | A rendelkezésre állási replika azonosítója. |
| elérhetőségi_replika_név | A rendelkezésre állási replika neve. |
| Adatbázis_név | A hibát jelentő adatbázis neve. |
| adatbázis_másolat_azonosító | A rendelkezésre állási replika-adatbázis azonosítója. |
| átvételre_kész_replikák | A szinkronizált másodlagos replikák száma, amelyek automatikus feladatátvételre képesek. |
| hiba_típus | A jelentett hibaazonosító. Lehetséges értékek: 0 – NINCS 1 – Ismeretlen 2 – Leállítás |
| kritikus_állapot | Ennek az értéknek mindig igaznak kell lennie az XEvent esetében az SQL Server 2016-ról. |
Ebben a példakimenetben a fault_type azt mutatja, hogy kritikus esemény történt a Contoso-ag rendelkezésre állási csoportban az SQLSERVER-1 nevű replikán az AutoHa-Sample2 adatbázisnév miatt, 2- Leállítás hibatípussal.
| szakterület | Érték |
|---|---|
| elérhetőségi_csoport_azonosító | 24E6FE58-5EE8-4C4E-9746-491CFBB208C1 |
| elérhetőségi_csoport_név | Contoso-ag |
| elérhetőségi_replika_azonosító | 3EAE74D1-A22F-4D9F-8E9A-DEFF99B1F4D1 |
| elérhetőségi_replika_név | SQLSERVER-1 |
| Adatbázis_név | AutoHa-Sample2 |
| adatbázis_másolat_azonosító | 39971379-8161-4607-82E7-098590E5AE00 |
| átvételre_kész_replikák | 1 |
| hiba_típus | 2 |
| kritikus_állapot | True |