Database
 sql >> Database >  >> RDS >> Database

Monitoraggio della sincronizzazione delle repliche del gruppo di disponibilità

Se si distribuiscono gruppi di disponibilità di SQL Server, uno degli aspetti importanti di una distribuzione corretta è il monitoraggio della sincronizzazione dei database di replica secondari con la replica primaria. Esistono diversi modi per monitorare la sincronizzazione delle repliche in un gruppo di disponibilità e questo post mostrerà ciascuno di essi e ne spiegherà i vantaggi e gli svantaggi,

Uno dei modi più semplici per monitorare lo stato di un gruppo di disponibilità, di ciascuno dei server di replica e dei database di disponibilità è tramite il dashboard integrato in Management Studio. Tuttavia, il layout predefinito del dashboard non fornisce molti dettagli e dovrà essere personalizzato per mostrare informazioni aggiuntive sui server di replica e sui database di disponibilità. È possibile aggiungere ulteriori colonne al layout tramite il collegamento Aggiungi/Rimuovi colonne nella dashboard o tramite il menu contestuale del pulsante destro del mouse su una qualsiasi delle intestazioni di colonna esistenti, come mostrato di seguito:

Personalizzazione della dashboard AG in SSMS

Per i database di disponibilità, il monitoraggio della dimensione della coda di invio del registro (KB), della velocità di invio del registro (KB/sec), della perdita di dati stimata (tempo), del tempo di ripristino stimato (secondi) e delle prestazioni di sincronizzazione (secondi) ti consentirà di comprendere meglio di come i dati fluiscono verso le repliche e l'integrità generale dei database di disponibilità. Ad esempio, nello screenshot seguente, ho modificato la configurazione di rete della VM per SQL03 in modo che abbia una latenza più elevata e una velocità effettiva inferiore, il che influisce sulla sincronizzazione dei database:

Qui possiamo vedere che ci sono quasi sei minuti di potenziale perdita di dati per SQL03 e 505 MB di registro non inviato che viene inviato a una velocità di 7 MB/sec al secondario (che, in questo caso, è un secondario asincrono) . Considerando che SQL02 è attualmente bloccato e non ha alcuna perdita di dati come secondario sincrono nella configurazione.

Un'alternativa al dashboard del gruppo di disponibilità è l'interrogazione diretta dei DMV, da cui il dashboard estrae le informazioni come origine. La query seguente mostra lo stato corrente e le metriche di sincronizzazione per ciascun database in un gruppo di disponibilità:

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;

Interrogando i DMV direttamente sulla replica primaria, è facile ottenere informazioni aggiornate senza attendere il periodo di aggiornamento del dashboard in Management Studio. Ciò è stato utile alcune volte durante la consultazione con clienti che hanno avuto un errore di collegamento tra i data center o in cui la connettività è stata interrotta per manutenzione per un certo periodo di tempo e le repliche secondarie sono in fase di recupero una volta ripristinata la connessione .

Lo strumento nativo finale per il monitoraggio della sincronizzazione del gruppo di disponibilità è Performance Monitor, che utilizza l'oggetto delle prestazioni SQLServer:Database Replica. La tabella seguente mostra i contatori delle prestazioni rilevanti e le relative descrizioni dalla documentazione in linea (https://msdn.microsoft.com/en-us/library/ff878356(v=sql.110).aspx):

Nome del contatore Descrizione
Byte di file ricevuti/sec Quantità di dati FILESTREAM ricevuti dalla replica secondaria per il database secondario nell'ultimo secondo.
Byte di registro ricevuti/sec Quantità di record di registro ricevuti dalla replica secondaria per il database nell'ultimo secondo.
Registro rimanente per l'annullamento La quantità di log in kilobyte rimanenti per completare la fase di annullamento.
Coda di invio registro Quantità di record di registro nei file di registro del database primario, in kilobyte, che non è stato ancora inviato alla replica secondaria. Questo valore viene inviato alla replica secondaria dalla replica primaria. La dimensione della coda non include i file FILESTREAM inviati a un database secondario.
Coda di ripristino Quantità di record di registro nei file di registro della replica secondaria che non è stata ancora rifatta.
Ripeti bloccato/sec Numero di volte in cui il thread di ripristino viene bloccato sui blocchi detenuti dai lettori del database.
Ripeti byte rimanenti La quantità di log in kilobyte rimanenti da rifare per completare la fase di ripristino.
Byte rifatti/sec Quantità di record di registro rifatti sul database secondario nell'ultimo secondo.
Registro totale che richiede l'annullamento Kilobyte totali di log che devono essere annullati.

 

Una delle sfide e delle limitazioni dell'utilizzo di Performance Monitor per monitorare l'ambiente è che l'oggetto è valido solo nell'istanza di SQL Server che ospita una replica secondaria. Ciò significa che è necessario aggiungere i contatori da ogni replica secondaria in Performance Monitor per ottenere una visione completa di ciò che sta accadendo con tutti i database secondari, in cui sia il dashboard AG in Management Studio, sia la query DMV sulla replica primaria, forniscono informazioni su tutti i database secondari in un'unica posizione.

In alternativa alle funzionalità integrate per il monitoraggio della sincronizzazione dei gruppi di disponibilità, puoi anche sfruttare strumenti di terze parti come SQL Sentry Performance Advisor, che include il monitoraggio dei gruppi di disponibilità come funzionalità standard. Puoi leggere ulteriori informazioni su questa funzionalità in questo post del blog di Greg Gonzalez che per primo ha introdotto la funzionalità nella versione 7.5 del prodotto.

Dashboard di Performance Advisor AG

La scheda Repliche in Performance Advisor consente di espandere ciascuno dei server di replica secondari per mostrare facilmente i database ei relativi dati di sincronizzazione correnti. Il layout predefinito della matrice di nodi/gruppi WSFC nella parte superiore del dashboard fornisce anche informazioni sull'integrità dello stato della coda di invio della replica primaria, dello stato della coda di ripetizione della replica secondaria e del flusso di dati tra ciascuno dei server di replica. In questo esempio, possiamo vedere che la coda di invio del log sul primario sta attualmente inviando una grande quantità di dati da SQL01 a SQL03, in base alla larghezza della linea tra i server, dopo che i problemi di connettività tra SQL01 e SQL03 sono stati corretti in l'ambiente. Il grafico a destra mostra la velocità con cui i dati vengono trasferiti da SQL01, insieme alla dimensione corrente della coda di invio log, poiché questa è la replica selezionata sul lato sinistro. Facendo clic su uno degli altri server di replica nel layout WSFC nodo/matrice di gruppo cambierà anche il grafico in modo che corrisponda alle metriche delle prestazioni di quella replica specifica sul lato destro.

Esistono molti modi per monitorare le prestazioni della sincronizzazione dei dati tra i server di replica in un gruppo di disponibilità in SQL Server. Il dashboard del gruppo di disponibilità integrato in Management Studio contiene una vasta gamma di informazioni a cui è facile accedere una volta che si sa come personalizzare il layout per mostrare le informazioni più importanti sul dashboard. È anche possibile utilizzare i DMV direttamente dal server di replica primario per monitorare le prestazioni della sincronizzazione dei dati utilizzando Transact-SQL e anche strumenti di terze parti come SQL Sentry includono il monitoraggio della sincronizzazione dei dati. Sebbene Performance Monitor possa fornire queste stesse informazioni, il fatto che i contatori delle prestazioni siano disponibili solo dal server di replica secondario rende un po' più impegnativo ottenere una visione completa dell'intero ambiente.