sql >> Base de Datos >  >> RDS >> Database

Supervisión de la sincronización de réplicas de grupos de disponibilidad

Si está implementando grupos de disponibilidad de SQL Server, uno de los aspectos importantes de una implementación exitosa es monitorear la sincronización de las bases de datos de la réplica secundaria con la réplica principal. Hay varias formas de monitorear la sincronización de réplicas en un grupo de disponibilidad, y esta publicación mostrará cada una de ellas y explicará sus ventajas e inconvenientes,

Una de las formas más fáciles de monitorear el estado de un grupo de disponibilidad, cada uno de los servidores de réplica y las bases de datos de disponibilidad es a través del tablero integrado en Management Studio. Sin embargo, el diseño predeterminado del tablero no proporciona muchos detalles y deberá personalizarse para mostrar información adicional sobre los servidores de réplica, así como las bases de datos de disponibilidad. Se pueden agregar columnas adicionales al diseño a través del enlace Agregar/Eliminar columnas en el tablero, o a través del menú contextual del botón derecho en cualquiera de los encabezados de columna existentes, como se muestra a continuación:

Personalización del Panel AG en SSMS

Para las bases de datos de disponibilidad, monitorear el tamaño de la cola de envío de registros (KB), la velocidad de envío de registros (KB/seg), la pérdida de datos estimada (tiempo), el tiempo de recuperación estimado (segundos) y el rendimiento de sincronización (segundos) le permitirán comprender mejor de cómo fluyen los datos a las réplicas y el estado general de las bases de datos de disponibilidad. Por ejemplo, en la captura de pantalla a continuación, modifiqué la configuración de la red de VM para SQL03 para que tenga una latencia más alta y un rendimiento más bajo, lo que afecta la sincronización de las bases de datos:

Aquí podemos ver que hay casi seis minutos de posible pérdida de datos para SQL03 y 505 MB de registro no enviado que se envía a una velocidad de 7 MB/s al secundario (que, en este caso, es un secundario asíncrono) . Mientras que SQL02 está actualmente al día y no tiene pérdida de datos como secundario síncrono en la configuración.

Una alternativa al tablero del grupo de disponibilidad es la consulta directa de los DMV, que es de donde el tablero extrae su información como fuente. La siguiente consulta muestra el estado actual y las métricas de sincronización de cada base de datos en un grupo de disponibilidad:

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;

Al consultar los DMV directamente en la réplica principal, es fácil obtener información actualizada sin esperar el período de actualización del tablero en Management Studio. Esto ha sido útil algunas veces al consultar con clientes que tenían una falla de enlace entre los centros de datos, o donde la conectividad estuvo inactiva por mantenimiento durante un período de tiempo, y las réplicas secundarias están en proceso de ponerse al día una vez que se restableció la conexión. .

La última herramienta nativa para supervisar la sincronización de grupos de disponibilidad es el Monitor de rendimiento, que utiliza el objeto de rendimiento SQLServer:Database Replica. La siguiente tabla muestra los contadores de rendimiento relevantes y sus descripciones de Books Online (https://msdn.microsoft.com/en-us/library/ff878356(v=sql.110).aspx):

Nombre del contador Descripción
Bytes de archivo recibidos/seg Cantidad de datos de FILESTREAM recibidos por la réplica secundaria para la base de datos secundaria en el último segundo.
Registro de bytes recibidos/seg Cantidad de registros recibidos por la réplica secundaria para la base de datos en el último segundo.
Registro restante para deshacer La cantidad de kilobytes de inicio de sesión restantes para completar la fase de deshacer.
Cola de envío de registros Cantidad de registros en los archivos de registro de la base de datos principal, en kilobytes, que aún no se ha enviado a la réplica secundaria. Este valor se envía a la réplica secundaria desde la réplica principal. El tamaño de la cola no incluye los archivos FILESTREAM que se envían a un servidor secundario.
Cola de recuperación Cantidad de registros en los archivos de registro de la réplica secundaria que aún no se ha rehecho.
Rehacer bloqueado/seg Número de veces que el subproceso de rehacer se bloquea en los bloqueos que tienen los lectores de la base de datos.
Rehacer bytes restantes La cantidad de kilobytes de inicio de sesión que quedan por rehacer para finalizar la fase de reversión.
Bytes rehechos/seg Cantidad de registros rehechos en la base de datos secundaria en el último segundo.
Registro total que requiere deshacer Total de kilobytes de registro que se deben deshacer.

 

Uno de los desafíos y limitaciones de usar el Monitor de rendimiento para monitorear el entorno es que el objeto solo es válido en la instancia de SQL Server que hospeda una réplica secundaria. Esto significa que tiene que agregar los contadores de cada réplica secundaria en el Monitor de rendimiento para obtener una vista completa de lo que sucede con todas las bases de datos secundarias, donde tanto el panel AG en Management Studio como la consulta del DMV en la réplica principal proporcionan información sobre todas las bases de datos secundarias en una sola ubicación.

Como alternativa a las funciones integradas para monitorear la sincronización de grupos de disponibilidad, también puede aprovechar herramientas de terceros como SQL Sentry Performance Advisor, que incluye el monitoreo de grupos de disponibilidad como una función estándar. Puede leer más sobre esta característica en esta publicación de blog de Greg Gonzalez que presentó por primera vez la característica en la versión 7.5 del producto.

Panel de Performance Advisor AG

La pestaña Réplicas en Performance Advisor permite expandir cada uno de los servidores de réplica secundarios para mostrar las bases de datos y sus datos de sincronización actuales fácilmente. El diseño predeterminado de la Matriz de grupo/nodo de WSFC en la parte superior del tablero también proporciona información sobre el estado de la cola de envío de la réplica principal, el estado de la cola de rehacer de la réplica secundaria y el flujo de datos entre cada uno de los servidores de réplica. En este ejemplo, podemos ver que la cola de envío de registros en el principal está enviando actualmente una gran cantidad de datos de SQL01 a SQL03, según el ancho de la línea entre los servidores, después de que se corrigieran los problemas de conectividad entre SQL01 y SQL03 en el entorno. El gráfico de la derecha muestra la velocidad a la que se transfieren los datos desde SQL01, junto con el tamaño actual de la cola de envío de registros, ya que esa es la réplica seleccionada en el lado izquierdo. Al hacer clic en uno de los otros servidores de réplica en el diseño de matriz de grupo/nodo de WSFC, también se cambiará el gráfico para que coincida con las métricas de rendimiento de esa réplica específica en el lado derecho.

Hay muchas formas de supervisar el rendimiento de la sincronización de datos entre servidores de réplica en un grupo de disponibilidad en SQL Server. El tablero de grupo de disponibilidad incorporado en Management Studio contiene una gran cantidad de información a la que es fácil acceder una vez que sabe cómo personalizar el diseño para mostrar la información más importante en el tablero. También es posible usar los DMV directamente desde el servidor de réplica principal para monitorear el rendimiento de la sincronización de datos usando Transact-SQL, y las herramientas de terceros como SQL Sentry también incluyen el monitoreo de la sincronización de datos. Si bien el Monitor de rendimiento puede proporcionar esta misma información, el hecho de que los contadores de rendimiento solo estén disponibles desde el servidor de réplica secundario hace que sea un poco más laborioso obtener una vista completa de todo el entorno.