Om du distribuerar SQL Server-tillgänglighetsgrupper är en av de viktiga aspekterna av en framgångsrik distribution att övervaka synkroniseringen av de sekundära replikdatabaserna med den primära repliken. Det finns flera sätt att övervaka repliksynkronisering i en tillgänglighetsgrupp, och det här inlägget kommer att visa var och en av dem och förklara deras fördelar och nackdelar,
Ett av de enklaste sätten att övervaka statusen för en tillgänglighetsgrupp, var och en av replikservrarna och tillgänglighetsdatabaserna är genom den inbyggda instrumentpanelen i Management Studio. Men standardlayouten för instrumentpanelen ger inte många detaljer och kommer att behöva anpassas för att visa ytterligare information om replikservrarna samt tillgänglighetsdatabaserna. Ytterligare kolumner kan läggas till i layouten via länken Lägg till/ta bort kolumner på instrumentpanelen eller genom högerklicksmenyn på någon av de befintliga kolumnrubrikerna, som visas nedan:
Anpassa AG Dashboard i SSMS
För tillgänglighetsdatabaserna, övervakning av loggsändningsköstorleken (KB), loggsändningshastigheten (KB/sek), uppskattad dataförlust (tid), beräknad återställningstid (sekunder) och synkroniseringsprestanda (sekunder) ger dig en bättre förståelse av hur data flödar till replikerna och tillgänglighetsdatabasernas övergripande tillstånd. Till exempel, i skärmdumpen nedan, har jag modifierat VM-nätverkskonfigurationen för SQL03 så att den har högre latens och lägre genomströmning, vilket påverkar synkroniseringen av databaserna:
Här kan vi se att det finns nästan sex minuter av potentiell dataförlust för SQL03 och 505 MB osänd logg som skickas med en hastighet av 7 MB/sek till sekundären (som i det här fallet är en asynkron sekundär) . Medan SQL02 för närvarande fångas upp och har ingen dataförlust som en synkron sekundär i konfigurationen.
Ett alternativ till Availability Group Dashboard är direkt sökning av DMV, vilket är där instrumentpanelen hämtar sin information från som en källa. Följande fråga visar aktuell status och synkroniseringsstatistik för varje databas i en tillgänglighetsgrupp:
SELECT ar.replica_server_name, adc.database_name, ag.name AS ag_name, drs.is_local, drs.is_primary_replica, drs.synchronization_state_desc, drs.is_commit_participant, drs.synchronization_health_desc, drs.recovery_lsn, drs.truncation_lsn, drs.last_sent_lsn, drs.last_sent_time, drs.last_received_lsn, drs.last_received_time, drs.last_hardened_lsn, drs.last_hardened_time, drs.last_redone_lsn, drs.last_redone_time, drs.log_send_queue_size, drs.log_send_rate, drs.redo_queue_size, drs.redo_rate, drs.filestream_send_rate, drs.end_of_log_lsn, drs.last_commit_lsn, drs.last_commit_time FROM sys.dm_hadr_database_replica_states AS drs INNER JOIN sys.availability_databases_cluster AS adc ON drs.group_id = adc.group_id AND drs.group_database_id = adc.group_database_id INNER JOIN sys.availability_groups AS ag ON ag.group_id = drs.group_id INNER JOIN sys.availability_replicas AS ar ON drs.group_id = ar.group_id AND drs.replica_id = ar.replica_id ORDER BY ag.name, ar.replica_server_name, adc.database_name;
Genom att fråga DMV:erna direkt på den primära repliken är det lätt att få uppdaterad information utan att vänta på uppdateringsperioden för instrumentpanelen i Management Studio. Detta har varit användbart några gånger under konsultation med klienter som hade ett länkfel mellan datacenter, eller där anslutningen var nere för underhåll under en längre tid, och de sekundära replikerna håller på att komma ikapp när anslutningen har återställts .
Det sista inbyggda verktyget för att övervaka synkronisering av tillgänglighetsgrupp är Performance Monitor, som använder prestandaobjektet SQLServer:Database Replica. Tabellen nedan visar relevanta prestandaräknare och deras beskrivningar från Books Online (https://msdn.microsoft.com/en-us/library/ff878356(v=sql.110).aspx):
Räknarens namn | Beskrivning |
---|---|
Mottagna filbytes/sek | Mängd FILESTREAM-data som tagits emot av den sekundära repliken för den sekundära databasen under sista sekunden. |
Loggbyte mottagna/sek | Mängden loggposter som tagits emot av den sekundära repliken för databasen under den sista sekunden. |
Logg kvar för ångra | Mängden inloggade kilobyte som återstår för att slutföra ångrafasen. |
Loggsändningskö | Mängden loggposter i loggfilerna för den primära databasen, i kilobyte, som ännu inte har skickats till den sekundära repliken. Detta värde skickas till den sekundära repliken från den primära repliken. Köstorlek inkluderar inte FILESTREAM-filer som skickas till en sekundär. |
Återställningskö | Mängd loggposter i loggfilerna för den sekundära repliken som ännu inte har gjorts om. |
Gör om blockerad/sek | Antal gånger som gör om tråden blockeras på lås som innehas av läsare av databasen. |
Gör om byte som återstår | Mängden inloggade kilobyte som återstår att göra om för att avsluta återställningsfasen. |
Gjorde om Byte/sek | Mängden loggposter som gjordes om i den sekundära databasen under sista sekunden. |
Total logg som kräver ångra | Totalt antal kilobyte av logg som måste ångras. |
En av utmaningarna och begränsningarna med att använda Performance Monitor för att övervaka miljön är att objektet endast är giltigt på den instans av SQL Server som är värd för en sekundär replik. Detta innebär att du måste lägga till räknarna från varje sekundär replik i Performance Monitor för att få en fullständig bild av vad som händer med alla sekundära databaser, där både AG Dashboard i Management Studio och DMV-frågan mot den primära repliken ger information om alla sekundära databaser på en enda plats.
Som ett alternativ till de inbyggda funktionerna för att övervaka synkronisering av tillgänglighetsgrupper kan du också använda tredjepartsverktyg som SQL Sentry Performance Advisor, som inkluderar övervakning av tillgänglighetsgrupper som en standardfunktion. Du kan läsa mer om den här funktionen i det här blogginlägget från Greg Gonzalez som först introducerade funktionen i version 7.5 av produkten.
Performacnce Advisor AG Dashboard
Fliken Replicas i Performance Advisor låter var och en av de sekundära replikservrarna utökas för att enkelt visa databaserna och deras aktuella synkroniseringsdata. Standardlayouten för WSFC Node/Group Matrix högst upp på instrumentpanelen ger även hälsoinformation om den primära replikens sändköstatus, den sekundära replikans redo-köstatus och dataflödet mellan var och en av replikservrarna. I det här exemplet kan vi se att loggsändningskön på den primära för närvarande skickar en stor mängd data från SQL01 till SQL03, baserat på bredden på linjen mellan servrarna, efter att anslutningsproblemen mellan SQL01 och SQL03 korrigerats i miljön. Diagrammet till höger visar hastigheten med vilken data överförs från SQL01, tillsammans med den aktuella storleken på loggsändningskön, eftersom det är repliken som är vald på vänster sida. Om du klickar på en av de andra replikservrarna i WSFC Node/Group Matrix-layouten ändras också diagrammet så att det matchar den specifika replikans prestandamått på höger sida.
Det finns många sätt att övervaka prestandan för datasynkronisering mellan replikservrar i en tillgänglighetsgrupp i SQL Server. Den inbyggda Availability Group Dashboard i Management Studio innehåller en mängd information som är lätt att komma åt när du väl vet hur man anpassar layouten för att visa den viktigaste informationen på instrumentbrädan. Det är också möjligt att använda DMV:erna direkt från den primära replikservern för att övervaka prestandan för datasynkronisering med Transact-SQL, och tredjepartsverktyg som SQL Sentry inkluderar också övervakning av datasynkroniseringen. Även om Performance Monitor kan tillhandahålla samma information, gör det faktum att prestandaräknarna bara är tillgängliga från den sekundära replikservern det lite mer arbete att få en fullständig bild av hela miljön.