sql >> Database >  >> RDS >> Database

Synchronisatie van beschikbaarheidsgroepreplica bewaken

Als u SQL Server-beschikbaarheidsgroepen implementeert, is een van de belangrijke aspecten van een succesvolle implementatie het bewaken van de synchronisatie van de secundaire replicadatabases met de primaire replica. Er zijn meerdere manieren om replicasynchronisatie in een beschikbaarheidsgroep te controleren, en dit bericht zal ze allemaal tonen en hun voor- en nadelen uitleggen,

Een van de gemakkelijkste manieren om de status van een beschikbaarheidsgroep, elk van de replicaservers en de beschikbaarheidsdatabases te bewaken, is via het ingebouwde dashboard in Management Studio. De standaardlay-out van het dashboard biedt echter niet veel details en moet worden aangepast om aanvullende informatie over de replicaservers en de beschikbaarheidsdatabases weer te geven. Extra kolommen kunnen aan de lay-out worden toegevoegd via de koppeling Kolommen toevoegen/verwijderen op het dashboard, of via het contextmenu met de rechtermuisknop op een van de bestaande kolomkoppen, zoals hieronder weergegeven:

Het AG-dashboard aanpassen in SSMS

Voor de beschikbaarheidsdatabases krijgt u een beter begrip door de Log Send Queue Size (KB), de Log Send Rate (KB/sec), het geschatte gegevensverlies (tijd), de geschatte hersteltijd (seconden) en de synchronisatieprestaties (seconden) te controleren. van hoe gegevens naar de replica's stromen en de algehele status van de beschikbaarheidsdatabases. In de onderstaande schermafbeelding heb ik bijvoorbeeld de VM-netwerkconfiguratie voor SQL03 aangepast, zodat deze een hogere latentie en een lagere doorvoer heeft, wat de synchronisatie van de databases beïnvloedt:

Hier kunnen we zien dat er bijna zes minuten mogelijk gegevensverlies is voor SQL03 en 505 MB niet-verzonden log dat wordt verzonden met een snelheid van 7 MB/sec naar de secundaire (in dit geval een asynchrone secundaire) . Terwijl SQL02 momenteel wordt ingehaald en geen gegevensverlies heeft als een synchrone secundaire in de configuratie.

Een alternatief voor het Beschikbaarheidsgroepsdashboard is het rechtstreeks opvragen van de DMV's, waar het dashboard zijn informatie als bron vandaan haalt. De volgende query toont de huidige status en synchronisatiestatistieken voor elke database in een beschikbaarheidsgroep:

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;

Door de DMV's rechtstreeks op de primaire replica op te vragen, is het gemakkelijk om actuele informatie te krijgen zonder te wachten op de vernieuwingsperiode van het dashboard in Management Studio. Dit is een paar keer nuttig geweest tijdens het overleg met klanten die een koppelingsfout hadden tussen datacenters, of waar de connectiviteit gedurende een bepaalde tijd niet beschikbaar was voor onderhoud, en de secundaire replica's zijn bezig hun achterstand in te halen zodra de verbinding is hersteld .

De laatste native tool voor het bewaken van de synchronisatie van de beschikbaarheidsgroep is Performance Monitor, met behulp van het SQLServer:Database Replica-prestatieobject. De onderstaande tabel toont de relevante prestatiemeteritems en hun beschrijvingen van Books Online (https://msdn.microsoft.com/en-us/library/ff878356(v=sql.110).aspx):

Tellernaam Beschrijving
Ontvangen bestandsbytes/sec Hoeveelheid FILESTREAM-gegevens ontvangen door de secundaire replica voor de secundaire database in de laatste seconde.
Logbytes ontvangen/sec Aantal logboekrecords ontvangen door de secundaire replica voor de database in de laatste seconde.
Logboek resterend om ongedaan te maken Het aantal log-in kilobytes dat overblijft om de ongedaanmakingsfase te voltooien.
Verzendwachtrij loggen Aantal logrecords in de logbestanden van de primaire database, in kilobytes, die nog niet naar de secundaire replica zijn verzonden. Deze waarde wordt vanuit de primaire replica naar de secundaire replica verzonden. De wachtrijgrootte omvat geen FILESTREAM-bestanden die naar een secundair worden verzonden.
Herstelwachtrij Aantal logrecords in de logbestanden van de secundaire replica die nog niet opnieuw zijn gedaan.
Opnieuw uitvoeren geblokkeerd/sec Het aantal keren dat de redo-thread wordt geblokkeerd op sloten die worden vastgehouden door lezers van de database.
Bytes overdoen over Het aantal log-in kilobytes dat nog moet worden overgedaan om de herstelfase te voltooien.
Bytes/sec opnieuw Aantal logboekrecords dat in de laatste seconde opnieuw is gedaan in de secundaire database.
Totaal logboek dat ongedaan moet worden gemaakt Totaal kilobytes aan log dat ongedaan moet worden gemaakt.

 

Een van de uitdagingen en beperkingen van het gebruik van Performance Monitor om de omgeving te bewaken, is dat het object alleen geldig is op de instantie van SQL Server die als host fungeert voor een secundaire replica. Dit betekent dat u de tellers van elke secundaire replica moet toevoegen aan Performance Monitor om een ​​volledig beeld te krijgen van wat er gebeurt met alle secundaire databases, waar zowel het AG Dashboard in Management Studio als de DMV-query tegen de primaire replica, bieden informatie over alle secundaire databases op één locatie.

Als alternatief voor de ingebouwde functies voor het bewaken van de synchronisatie van beschikbaarheidsgroepen, kunt u ook gebruikmaken van tools van derden, zoals SQL Sentry Performance Advisor, dat het bewaken van beschikbaarheidsgroepen als standaardfunctie omvat. Je kunt meer over deze functie lezen in deze blogpost van Greg Gonzalez die de functie voor het eerst introduceerde in versie 7.5 van het product.

Dashboard Performance Advisor AG

Op het tabblad Replica's in Performance Advisor kan elk van de secundaire replicaservers worden uitgebreid om de databases en hun huidige synchronisatiegegevens eenvoudig weer te geven. De standaardlay-out van de WSFC Node/Group Matrix bovenaan het dashboard geeft ook gezondheidsinformatie over de verzendwachtrijstatus van de primaire replica, de wachtrijstatus voor opnieuw uitvoeren van de secundaire replica en de gegevensstroom tussen elk van de replicaservers. In dit voorbeeld kunnen we zien dat de logboekverzendwachtrij op de primaire momenteel een grote hoeveelheid gegevens verzendt van SQL01 naar SQL03, gebaseerd op de breedte van de lijn tussen de servers, nadat de verbindingsproblemen tussen SQL01 en SQL03 waren gecorrigeerd in de omgeving. De grafiek aan de rechterkant toont de snelheid waarmee gegevens worden overgedragen vanuit SQL01, samen met de huidige grootte van de wachtrij voor logboekverzending, aangezien dat de replica is die aan de linkerkant is geselecteerd. Als u op een van de andere replicaservers in de indeling van de WSFC-knooppunt-/groepsmatrix klikt, wordt het diagram ook aangepast aan de prestatiestatistieken van die specifieke replica aan de rechterkant.

Er zijn veel manieren om de prestaties van gegevenssynchronisatie tussen replicaservers in een beschikbaarheidsgroep in SQL Server te bewaken. Het ingebouwde Beschikbaarheidsgroepdashboard in Management Studio bevat een schat aan informatie die gemakkelijk toegankelijk is als u eenmaal weet hoe u de lay-out kunt aanpassen om de belangrijkste informatie op het dashboard weer te geven. Het is ook mogelijk om de DMV's rechtstreeks vanaf de primaire replicaserver te gebruiken om de prestaties van gegevenssynchronisatie te bewaken met behulp van Transact-SQL, en tools van derden, zoals SQL Sentry, omvatten ook het bewaken van de gegevenssynchronisatie. Hoewel Performance Monitor dezelfde informatie kan bieden, maakt het feit dat de prestatiemeteritems alleen beschikbaar zijn vanaf de secundaire replicaserver het wat meer werk om een ​​volledig beeld van de hele omgeving te krijgen.


  1. Een lijst met privéprocedures/-functies ophalen uit een pakkettekst

  2. SQL Server-systeemdatabases - Systeemdatabases herstellen

  3. lopende balans berekenen in oracle-query

  4. MySQL IN voorwaarde limiet