Se você estiver implantando Grupos de Disponibilidade do SQL Server, um dos aspectos importantes de uma implantação bem-sucedida é monitorar a sincronização dos bancos de dados de réplica secundária com a réplica primária. Existem várias maneiras de monitorar a sincronização de réplicas em um Grupo de Disponibilidade, e esta postagem mostrará cada uma delas e explicará suas vantagens e desvantagens,
Uma das maneiras mais fáceis de monitorar o status de um Grupo de Disponibilidade, cada um dos servidores de réplica e os bancos de dados de disponibilidade é por meio do painel integrado no Management Studio. No entanto, o layout padrão do painel não fornece muitos detalhes e precisará ser personalizado para mostrar informações adicionais sobre os servidores de réplica, bem como os bancos de dados de disponibilidade. Colunas adicionais podem ser adicionadas ao layout por meio do link Adicionar/Remover Colunas no painel ou por meio do menu de contexto do botão direito em qualquer um dos cabeçalhos de coluna existentes, conforme mostrado abaixo:
Personalizando o Painel de AG no SSMS
Para os bancos de dados de disponibilidade, monitorar o Tamanho da Fila de Envio de Log (KB), Taxa de Envio de Log (KB/s), Perda de Dados Estimada (tempo), Tempo de Recuperação Estimado (segundos) e Desempenho de Sincronização (segundos) fornecerá uma melhor compreensão de como os dados estão fluindo para as réplicas e a integridade geral dos bancos de dados de disponibilidade. Por exemplo, na captura de tela abaixo, modifiquei a configuração de rede da VM para SQL03 para que tenha maior latência e menor taxa de transferência, o que está afetando a sincronização dos bancos de dados:
Aqui podemos ver que há quase seis minutos de perda potencial de dados para SQL03 e 505 MB de log não enviado que está sendo enviado a uma taxa de 7 MB/s para o secundário (que, neste caso, é um secundário assíncrono) . Enquanto o SQL02 está atualmente atualizado e não tem perda de dados como secundário síncrono na configuração.
Uma alternativa ao Painel do Grupo de Disponibilidade é a consulta direta dos DMVs, que é de onde o painel extrai suas informações como fonte. A consulta a seguir mostra o status atual e as métricas de sincronização de cada banco de dados em um grupo de disponibilidade:
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;
Ao consultar as DMVs diretamente na réplica primária, é fácil obter informações atualizadas sem esperar pelo período de atualização do painel no Management Studio. Isso foi útil algumas vezes ao consultar clientes que tiveram uma falha de link entre data centers ou onde a conectividade estava inativa para manutenção por um período de tempo e as réplicas secundárias estão em processo de recuperação depois que a conexão foi restaurada .
A ferramenta nativa final para monitorar a sincronização do Grupo de Disponibilidade é o Performance Monitor, usando o objeto de desempenho SQLServer:Database Replica. A tabela abaixo mostra os contadores de desempenho relevantes e suas descrições dos Manuais Online (https://msdn.microsoft.com/en-us/library/ff878356(v=sql.110).aspx):
Nome do contador | Descrição |
---|---|
Bytes de arquivo recebidos/s | Quantidade de dados FILESTREAM recebidos pela réplica secundária para o banco de dados secundário no último segundo. |
Bytes de log recebidos/s | Quantidade de registros de log recebidos pela réplica secundária para o banco de dados no último segundo. |
Registro restante para desfazer | A quantidade de kilobytes de login restantes para concluir a fase de desfazer. |
Fila de envio de log | Quantidade de registros de log nos arquivos de log do banco de dados primário, em kilobytes, que ainda não foram enviados para a réplica secundária. Esse valor é enviado para a réplica secundária da réplica primária. O tamanho da fila não inclui arquivos FILESTREAM que são enviados para um secundário. |
Fila de recuperação | Quantidade de registros de log nos arquivos de log da réplica secundária que ainda não foi refeita. |
Refazer bloqueado/s | Número de vezes que o thread de redo é bloqueado em bloqueios mantidos por leitores do banco de dados. |
Refazer bytes restantes | A quantidade de kilobytes de login restantes a serem refeitos para concluir a fase de reversão. |
Bytes refeitos/s | Quantidade de registros de log refeitos no banco de dados secundário no último segundo. |
Registro total que requer desfazer | Total de kilobytes de log que devem ser desfeitos. |
Um dos desafios e limitações do uso do Monitor de desempenho para monitorar o ambiente é que o objeto é válido apenas na instância do SQL Server que hospeda uma réplica secundária. Isso significa que você precisa adicionar os contadores de cada réplica secundária no Monitor de desempenho para obter uma visão completa do que está acontecendo com todos os bancos de dados secundários, onde o AG Dashboard no Management Studio e a consulta DMV na réplica primária fornecem informações sobre todos os bancos de dados secundários em um único local.
Como alternativa aos recursos integrados para monitorar a sincronização do Grupo de Disponibilidade, você também pode aproveitar ferramentas de terceiros, como o SQL Sentry Performance Advisor, que inclui o monitoramento de Grupos de Disponibilidade como um recurso padrão. Você pode ler mais sobre esse recurso nesta postagem de blog de Greg Gonzalez, que introduziu o recurso pela primeira vez na versão 7.5 do produto.
Painel do Performance Advisor AG
A guia Réplicas no Performance Advisor permite que cada um dos servidores de réplica secundários seja expandido para mostrar facilmente os bancos de dados e seus dados de sincronização atuais. O layout padrão WSFC Node/Group Matrix na parte superior do painel também fornece informações de integridade sobre o status da fila de envio da réplica primária, o status da fila de redo da réplica secundária e o fluxo de dados entre cada um dos servidores de réplica. Neste exemplo, podemos ver que a fila de envio de log no primário está enviando atualmente uma grande quantidade de dados de SQL01 para SQL03, com base na largura da linha entre os servidores, após os problemas de conectividade entre SQL01 e SQL03 terem sido corrigidos em o ambiente. O gráfico à direita mostra a taxa na qual os dados estão sendo transferidos do SQL01, juntamente com o tamanho atual da fila de envio de log, já que essa é a réplica selecionada no lado esquerdo. Clicar em um dos outros servidores de réplica no layout WSFC Node/Group Matrix também alterará o gráfico para corresponder às métricas de desempenho dessa réplica específica no lado direito.
Há muitas maneiras de monitorar o desempenho da sincronização de dados entre servidores de réplica em um Grupo de Disponibilidade no SQL Server. O Painel do Grupo de Disponibilidade integrado no Management Studio contém uma grande quantidade de informações que são fáceis de acessar quando você sabe como personalizar o layout para mostrar as informações mais importantes no painel. Também é possível usar os DMVs diretamente do servidor de réplica primário para monitorar o desempenho da sincronização de dados usando o Transact-SQL, e ferramentas de terceiros, como o SQL Sentry, também incluem o monitoramento da sincronização de dados. Embora o Monitor de Desempenho possa fornecer essas mesmas informações, o fato de os contadores de desempenho estarem disponíveis apenas no servidor de réplica secundário torna um pouco mais trabalhoso obter uma visão completa de todo o ambiente.