Monitorando o espelhamento de banco de dados (SQL Server)

Aplica-se a:SQL Server

Esta seção apresenta o Monitor de Espelhamento de Banco de Dados e os procedimentos armazenados do sistema sp_dbmmonitor , explica como funciona o monitoramento de espelhamento de banco de dados (incluindo o Trabalho de Monitor de Espelhamento de Banco de Dados) e resume as informações sobre as sessões de espelhamento de banco de dados que podem ser monitoradas. Além disso, esta seção apresenta como definir limites de avisos para um conjunto de eventos de espelhamento de banco de dados predefinido e como configurar alertas em qualquer evento de espelhamento de banco de dados.

Você pode monitorar um banco de dados espelho durante uma sessão de espelhamento para verificar se e como os dados estão fluindo. Para definir e gerenciar o monitoramento de um ou mais dos bancos de dados espelhados em uma instância do servidor, você pode usar o Monitor de Espelhamento de Banco de Dados ou os procedimentos armazenados do sistema sp_dbmmonitor .

Um trabalho de monitoramento de espelhamento de banco de dados, Trabalho do Monitor de Espelhamento de Banco de Dados, opera em segundo plano, independentemente do Monitor de Espelhamento de Banco de Dados. SQL Server Agent chama o Trabalho do Monitor de Espelhamento de Banco de Dados em intervalos regulares, o padrão é uma por minuto, e o trabalho chama um procedimento armazenado que atualiza o status do espelhamento. Se você utilizar o SQL Server Management Studio para iniciar uma sessão de monitoramento, o Trabalho do Monitor de Espelhamento de Banco de Dados será criado automaticamente. Porém, se você usar somente ALTER DATABASE <database_name> SET PARTNER para iniciar o espelhamento, deverá criar o trabalho executando um procedimento armazenado.

Neste tópico:

Monitorando status de espelhamento

Para configurar e gerenciar monitoramento para um ou mais dos bancos de dados espelhados em uma instância do servidor, você pode usar o Monitor de Espelhamento de Banco de Dados ou os procedimentos armazenados do sistema dbmmonitor . Você pode monitorar um banco de dados espelho durante uma sessão de espelhamento para verificar se e como os dados estão fluindo.

O monitoramento de um banco de dados espelho lhe permite, especificamente:

  • Verificar se o espelhamento está funcionando.

    O status básico inclui saber se as duas instâncias do servidor estão ativas, os servidores estão conectados, e se o log está sendo movimentado do principal para o espelhado.

  • Determinar se o banco de dados espelho está acompanhando o banco de dados principal.

    Durante o modo de alto desempenho, um servidor principal pode desenvolver um acúmulo de registros de log não enviados que ainda precisam ser enviados do servidor principal para o servidor espelho. Além disso, em qualquer modo operacional, o servidor espelho pode desenvolver um acúmulo de registros de log não restaurado que foram gravados no arquivo de log mas que ainda precisam ser restaurados no banco de dados espelho.

  • Determinar quantos dados serão perdidos quando a instância de servidor principal ficar indisponível durante o modo de alto desempenho.

    Você pode determinar perda de dados verificando a quantidade de log de transações não enviada (se houver) e o intervalo de tempo nos quais as transações perdidas estavam confirmadas no servidor principal.

  • Comparar o desempenho atual com o desempenho passado.

    No caso de problemas, um administrador de banco de dados pode exibir um histórico do desempenho de espelhamento para ajudar na compreensão do estado atual. A verificação do histórico pode permitir ao usuário detectar tendências em desempenho, identificando padrões de problemas de desempenho (como horas do dia em que a rede está lenta ou que o número de comandos que entram no log é muito grande).

  • Diagnosticar a causa de fluxo reduzido de dados entre parceiros de espelhamento.

  • Definir limites de aviso em métrica chave de desempenho.

    Se uma nova linha de status contém um valor que excede um limite, um evento informativo é enviado ao log de eventos do Windows. Um administrador de sistema pode, então, configurar alertas manualmente com base nesses eventos. Para obter mais informações, veja Usar os limites de aviso e alertas em métricas de desempenho de espelhamento (SQL Server).

Ferramentas para monitoramento de status de espelhamento de banco de dados

O status de espelhamento pode ser monitorado usando o Monitor de Espelhamento de Banco de Dados ou o procedimento armazenado do sistema sp_dbmmonitorresults . Essas ferramentas podem ser usadas para monitorar o espelhamento de banco de dados em qualquer banco de dados espelho na instância do servidor local, por ambos os administradores do Sistema, ou seja, membros da função de servidor fixa sysadmin e pelo usuário que foi adicionado à função do banco de dados fixa dbm_monitor no banco de dados msdb por um administrador do sistema. Ao usar qualquer uma das ferramentas, um administrador de sistema pode atualizar manualmente o status de espelhamento.

Observação

Administradores de sistema podem também configurar e exibir limites de aviso para métricas de desempenho chave. Para obter mais informações, veja Usar os limites de aviso e alertas em métricas de desempenho de espelhamento (SQL Server).

  • Monitor de Espelhamento de Banco de Dados

    O Monitor de Espelhamento de Banco de Dados é uma ferramenta de interface gráfica do usuário que permite aos administradores de sistema exibir e atualizar status e configurar limites de aviso em várias métricas de desempenho chave. O Monitor de Espelhamento de Banco de Dados também pode ser usado por membros da função fixa do banco de dados dbm_monitor para exibir a linha mais recente da tabela de status de espelhamento, embora não seja possível atualizar o status da tabela.

    O monitor exibe o status, inclusive a métrica de desempenho, para um banco de dados selecionado na página com guias Status . O conteúdo desta página vem das duas instâncias de servidor principal e espelho. A página é preenchida de forma assíncrona conforme o status é coletado através de conexões separadas às instâncias de servidor principal e espelho. O monitor tenta atualizar a tabela de status a intervalos de 30 segundos. A atualização só terá sucesso se a tabela não for atualizada dentro de 15 segundos e o usuário for um membro da função de servidor fixa sysadmin . Para obter um resumo das informações relatadas na página Status , consulte Status exibido pelo Monitor de Espelhamento de Banco de Dados, posteriormente neste tópico.

    Para uma introdução à interface do Monitor de Espelhamento de Banco de Dados, consulte Database Mirroring Monitor Overview. Para obter informações sobre como iniciar o Monitor de Espelhamento de Banco de Dados, veja Iniciar o Monitor de Espelhamento de Banco de Dados (SQL Server Management Studio).

  • Procedimentos armazenados do sistema

    Também é possível recuperar ou atualizar o status atual executando o procedimento armazenado do sistema sp_dbmmonitorresults . Outros procedimentos armazenados de dbmmonitor lhe permitem definir o monitoramento, alterar os parâmetros de monitoramento, exibir o período de atualização atual e ignorar monitoramento na instância do servidor.

    A tabela a seguir apresenta os procedimentos armazenados para administrar e usar o monitoramento de espelhamento de banco de dados independentemente do Monitor de Espelhamento de Banco de Dados.

    Procedimento Descrição
    sp_dbmmonitoraddmonitoring Cria uma tarefa que atualiza periodicamente as informações de status para cada banco de dados espelho na instância do servidor.
    sp_dbmmonitorchangemonitoring Altera o valor de um parâmetro de monitoração de espelhamento de banco de dados.
    sp_dbmmonitorhelpmonitoring Retorna o período de atualização atual.
    sp_dbmmonitorresults Retorna linhas de status para um banco de dados monitorado e lhe permite escolher se o procedimento obtém o último status antecipadamente.
    sp_dbmmonitordropmonitoring Interrompe e exclui a tarefa de monitoramento de espelhamento para todos os bancos de dados na instância do servidor.

    Os procedimentos armazenados do sistema dbmmonitor podem ser usados como complemento do Monitor de Espelhamento de Banco de Dados. Por exemplo, mesmo que o monitoramento tenha sido configurado usando o sp_dbmmonitoraddmonitoring, o Monitor de Espelhamento de Banco de Dados poderá ser usado para exibir o status.

Como monitorar trabalhos

Essa seção apresenta a tabela de status de espelhamento de banco de dados, o trabalho de monitor de espelhamento de banco de dados e o monitor, como os usuários podem monitorar o status de espelhamento de banco de dados e como o trabalho de monitoramento pode ser descartado.

Tabela de status de espelhamento de banco de dados

O status de espelhamento de banco de dados é armazenado em uma tabela de status de espelhamento de banco de dados interna, não documentada, no banco de dados msdb . Essa tabela de status é criada automaticamente na primeira vez em que o status de espelhamento é atualizado na instância de servidor.

A tabela de status pode ser atualizada automática ou manualmente por um administrador de sistema, com um intervalo de atualização mínimo de 15 segundos. O mínimo de 15 segundos evita que instâncias de servidor sejam sobrecarregadas com solicitações de status.

A tabela de status é automaticamente atualizada tanto pelo Monitor de Espelhamento de Banco de Dados quanto pelo trabalho de monitor de espelhamento de banco de dados, se estiverem sendo executados. OTrabalho de Monitor de Espelhamento de Banco de Dados atualiza a tabela a cada minuto, por padrão (um administrador do sistema pode especificar um período de atualização de 1 a 120 minutos). O Monitor de Espelhamento de Banco de Dados, ao contrário, atualiza a tabela automaticamente a cada 30 segundos. Para essas atualizações, o Trabalho de Monitor de Espelhamento de Banco de Dados e o Monitor de Espelhamento de Banco de Dados chamam sp_dbmmonitorupdate.

Na primeira vez que o sp_dbmmonitorupdate é executado, ele cria a tabela de status de espelhamento de banco de dados e a função de banco de dados fixa dbm_monitor no banco de dados msdb . Normalmente,sp_dbmmonitorupdate atualiza o status de espelhamento inserindo uma nova linha na tabela de status para cada banco de dados espelho na instância de servidor; para obter mais informações, veja “Tabela de status de espelhamento de banco de dados”, mais adiante neste tópico. Esse procedimento também avalia a métrica de desempenho nas linhas novas e faz o truncamento de linhas mais antigas do que o período de retenção atual (o padrão é 7 dias). Para obter mais informações, confira sp_dbmmonitorupdate (Transact-SQL).

Observação

A menos que o Monitor de Espelhamento de Banco de Dados esteja sendo usado no momento por um membro da função de servidor fixa sysadmin , a tabela de status só será automaticamente atualizada se o Trabalho de Monitor de Espelhamento de Banco de Dados existir e se o SQL Server Agent estiver sendo executado.

Trabalho do Monitor de Espelhamento de Banco de Dados

O trabalho de monitor de espelhamento de banco de dados, Trabalho de Monitor de Espelhamento de Banco de Dados, opera independentemente do Monitor de Espelhamento de Banco de Dados. OTrabalho de Monitor de Espelhamento de Banco de Dados será criado automaticamente somente se SQL Server Management Studio for usado para iniciar uma sessão de espelhamento. Se os comandos ALTER DATABASE database_name SET PARTNER forem sempre usados para iniciar um espelhamento, o trabalho só existirá se o administrador de sistema executar o procedimento armazenado sp_dbmmonitoraddmonitoring .

Depois que o Trabalho de Monitor de Espelhamento de Banco de Dados for criado, e supondo-se que o SQL Server Agent esteja sendo executado, o trabalho será chamado a cada minuto, por padrão. Em seguida, o trabalho chama o procedimento armazenado do sistema sp_dbmmonitorupdate .

SQL Server O Agent chama o Trabalho de Monitor de Espelhamento de Banco de Dados a cada minuto, por padrão, e o trabalho chama sp_dbmmonitorupdate para atualizar a tabela de status. Administradores do sistema podem alterar o período de atualização usando o procedimento armazenado do sistema sp_dbmmonitorchangemonitoring e podem exibir o período de atualização atual usando o procedimento armazenado do sistema sp_dbmmonitorchangemonitoring . Para obter mais informações, confira sp_dbmmonitoraddmonitoring (Transact-SQL) e sp_dbmmonitorchangemonitoring (Transact-SQL).

Monitorando status de espelhamento de banco de dados (por Administradores de sistema)

Membros da função de servidor fixa sysadmin podem exibir e atualizar a tabela de status

  • Usando o Monitor de Espelhamento de Banco de Dados

    Ao usar o Monitor de Espelhamento de Banco de Dados, um administrador de sistema pode atualizar manualmente a página Status , a árvore de navegação ou a página Histórico . Isso também atualiza a tabela de status, a menos que ela já tenha sido atualizada nos 15 segundos anteriores.

    Para exibir o histórico de status de espelhamento em determinada instância de servidor, o administrador do sistema também pode clicar no botão Histórico de uma instância de servidor (na página Status ). O histórico é exibido na caixa de diálogo Histórico do Espelhamento de Banco de Dados . Ali, o administrador de sistema pode exibir algumas ou todas as linhas na tabela de status da instância de servidor.

    Para obter mais informações sobre a métrica de página Status , consulte Métrica de Desempenho, exibida pelo "Monitor de Espelhamento de Banco de Dados," mais adiante neste tópico.

  • Usando sp_dbmmonitorresults

    Administradores do sistema podem usar o procedimento armazenado do sistema sp_dbmmonitorresults para exibir e, opcionalmente, atualizar a tabela de status, caso não tenha sido atualizada nos 15 segundos anteriores. Esse procedimento chama o procedimento sp_dbmmonitorupdate e retorna uma ou mais linhas do histórico, dependendo da quantidade solicitada na chamada de procedimento. Para obter informações sobre o status em seu conjunto de resultados, confira sp_dbmmonitorresults (Transact-SQL).

Monitorando o status de espelhamento de banco de dados (por membros dbm_monitor)

Conforme mencionado, na primeira vez que sp_dbmmonitorupdate é executado, ele cria a função de banco de dados fixa dbm_monitor no banco de dados msdb . Membros da função de banco de dados fixa dbm_monitor podem exibir o status de espelhamento existente usando o Monitor de Espelhamento de Banco de Dados ou o procedimento armazenado sp_dbmmonitorresults . Esses usuários, porém, não podem atualizar a tabela de status. Para saber a idade do status exibido, um usuário pode examinar os horários nos rótulos Log principal (<time>) e Log espelhado (<time>) na página Status.

Membros da função de banco de dados fixa dbm_monitor dependem do Trabalho de Monitor de Espelhamento de Banco de Dados para atualizar a tabela de status em intervalos regulares. Se o trabalho não existir ou o SQL Server Agent for interrompido, o status se tornará cada vez mais obsoleto e poderá deixar de refletir a configuração da sessão de espelhamento. Por exemplo, depois de um failover, poderá parecer que os parceiros compartilham a mesma função, principal ou espelhada ou o servidor principal atual poderá ser mostrado como o espelho e o servidor espelhado atual como o principal.

Descartando o Trabalho de Monitor de Espelhamento de Banco de Dados

O trabalho de monitor de espelhamento de banco de dados, Trabalho de Monitor de Espelhamento de Banco de Dados, permanece até que seja descartado. O trabalho de monitoramento deve ser gerenciado pelo administrador de sistema. Para remover o Trabalho de Monitor de Espelhamento de Banco de Dados, use sp_dbmmonitordropmonitoring. Para obter mais informações, confira sp_dbmmonitordropmonitoring (Transact-SQL).

Status exibido pelo Monitor de Espelhamento de Banco de Dados

A página Status do Monitor de Espelhamento de Banco de Dados descreve os parceiros, e também o estado da sessão de espelhamento. O status inclui métrica de desempenho como o estado de log de transações, além de outras informações, com o objetivo de ajudar o cálculo atual da hora exigida para completar um failover e o potencial de perda de dados, se a sessão não for sincronizada. Além disso, a página Status exibe status e informações em geral sobre a sessão de espelhamento.

Observação

Para obter uma introdução do Monitor de Espelhamento de Banco de Dados e da página Status , confira Ferramentas para monitoramento de status de espelhamento de banco de dados, acima neste tópico.

As informações fornecidas para cada um deles é resumida nas seções a seguir.

Parceiros

A página Status exibe as seguintes informações para cada um dos parceiros:

  • Instância de servidor

    Nome da instância de servidor cujo status é exibido na linha Status .

  • Função atual

    Função atual da instância de servidor. Os possíveis estados são:

    • Principal

    • Espelho

  • estado de espelhamento

    Os possíveis estados são:

    • Unknown (desconhecido)

    • Sincronizando

    • Sincronizado

    • Suspenso

    • Desconectado

  • Conexão de testemunha

    Status de conexão de testemunha. Os possíveis estados são:

    • Unknown (desconhecido)

    • Conectado

    • Desconectado

Efetue logon do servidor principal

A página Status exibe as seguintes informações sobre o status do log no servidor principal a partir da hora indicada:

  • Log não enviado

    A quantidade de log esperando na fila de envio em quilobytes (KB).

  • Transação não enviada mais antiga

    Idade da transação não enviada mais antiga na fila de envio. A idade dessa transação indica quantos minutos de transações ainda não foram enviados à instância de servidor espelho. Esse valor ajuda a medir o potencial de perda de dados em termos de tempo.

  • Tempo para enviar o log (estimado)

    Número estimado de minutos que a instância de servidor principal exige para enviar o log atualmente na fila de envio para a instância de servidor espelho com base na taxa de envio atual. A hora real para o envio do log será afetada pela taxa de transações de entrada que podem variar significativamente. Porém, o valor Tempo para enviar o log (estimado) pode ser útil para o cálculo, aproximado, do tempo exigido para um failover manual.

  • Taxa de envio atual

    Taxa à qual estão sendo enviadas transações à instância de servidor espelho em KB por segundo.

  • Taxa atual de transações novas

    Taxa em que as transações de entrada estão sendo inseridas no log do servidor principal, em KB por segundo. Para determinar se o espelhamento está atrasado, ativo ou atualizado, compare esse valor ao valor do Tempo para enviar o log (estimado) .

Efetue logon do servidor espelho

A página Status exibe as seguintes informações sobre o status do log no servidor espelho a partir da hora indicada:

  • Log não restaurado

    A quantidade de log esperando na fila de restauração em KB.

  • Tempo para recuperar o log (estimado)

    Número aproximado de minutos exigido para que o log atualmente na fila de restauração seja aplicado ao banco de dados espelho.

  • Taxa atual de restauração

    Taxa em que as transações estão sendo restauradas no banco de dados espelho (em KB por segundo).

Sessão de espelhamento

Além disso, a página Status exibe as seguintes informações sobre a sessão de espelhamento.

  • Sobrecarga de confirmação de espelhamento

    Atraso médio por transação em milissegundos (pertinente apenas em modo de alta segurança). Esse atraso consiste na quantidade de sobrecarga incidente enquanto a instância do servidor principal aguarda que a instância do servidor espelho grave o registro do log da transação na fila de restauração.

  • Tempo para enviar e restaurar todos os logs atuais (estimado)

    Tempo estimado necessário para enviar todo o log não enviado confirmado no principal e para restaurar todo o log atualmente na fila de restauração. Essa estimativa pode ser menor do que a soma dos valores dos campos Tempo para enviar o log (estimado) e Tempo para recuperar o log (estimado) uma vez que o envio e a restauração podem operar em paralelo.

  • Endereço de testemunha

    Endereço de rede da instância de servidor testemunha. Para obter informações sobre o formato desse endereço, veja Especificar um endereço de rede do servidor (Espelhamento de Banco de Dados).

  • Modo de operação

    Modo operacional da sessão de espelhamento de banco de dados:

    • Alto desempenho (assíncrono)

    • Alta segurança sem failover automático (síncrono)

    • Alta segurança com failover automático (síncrono)

Fontes adicionais de informação sobre um banco de dados espelho

Além de usar os procedimentos armazenados do Monitor de Espelhamento de Banco de Dados e dbmmonitor para monitorar um banco de dados espelhado e configurar alertas em variáveis de desempenho monitoradas, o SQL Server fornece exibições de catálogo, contadores de desempenho e notificações de eventos para espelhamento de banco de dados.

Nesta seção:

Metadados de espelhamento de banco de dados

Cada sessão de espelhamento de banco de dados é descrita em metadados expostos pelos catálogo ou exibições de gerenciamento dinâmico seguintes:

  • sys.database_mirroring

    Essa exibição mostra os metadados de espelhamento de banco de dados de cada banco de dados espelho em uma instância de servidor. Para obter mais informações, confira sys.database_mirroring (Transact-SQL).

  • sys.database_mirroring_endpoints

    A exibição de catálogo sys.database_mirroring_endpoints mostra informações sobre o ponto de extremidade do espelhamento de banco de dados da instância do servidor. Para obter mais informações, confira sys.database_mirroring_endpoints (Transact-SQL).

  • sys.database_mirroring_witnesses

    Essa exibição de catálogo mostra os metadados de espelhamento de banco de dados para cada sessão na qual uma instância de servidor é a testemunha. Para obter mais informações, confira sys.database_mirroring_witnesses (Transact-SQL).

  • sys.dm_db_mirroring_connections

    Essa exibição de gerenciamento dinâmico retorna uma linha para cada conexão de rede de espelhamento de banco de dados.

    Para obter mais informações, confira sys.dm_db_mirroring_connections (Transact-SQL).

Contadores de desempenho para espelhamento de banco de dados.

Os contadores de desempenho permitem que você monitore o desempenho de espelhamento de banco de dados. Por exemplo, você pode examinar o contador Atraso na Transação para verificar se o espelhamento de banco de dados está afetando o desempenho do servidor principal, você pode examinar os contadores Fila de Restauração e Fila de Envio de Log para verificar como o banco de dados espelho está se comportando em relação ao banco de dados principal. Você pode examinar o contador Bytes de Log Enviados/s para monitorar a quantidade de logs enviados por segundo.

No Monitor de Desempenho em qualquer um dos parceiros, os contadores de desempenho estão disponíveis no objeto de desempenho de espelhamento de banco de dados (SQLServer:Database Mirroring). Para obter mais informações, consulte SQL Server, Database Mirroring Object.

Para iniciar o monitor de desempenho

Notificações de eventos de espelhamento de banco de dados.

As notificações de evento são um tipo especial de objeto de banco de dados. As notificações de evento são executadas em resposta a uma variedade de instruções DDL (linguagem de definição de dados) Transact-SQL e eventos de Rastreamento do SQL e enviam informações sobre o servidor e eventos de banco de dados para um serviço Agente de Serviço .

Os seguintes eventos estão disponíveis para o espelhamento de banco de dados:

  • Classe de eventoDatabase Mirroring State Change

    Isso indica quando o estado de espelhamento de um banco de dados espelho muda. Para obter mais informações, consulte Database Mirroring State Change Event Class.

  • Classe de eventoAudit Database Mirroring Login

    Informa mensagens de auditoria relacionadas à segurança de transporte do espelhamento de banco de dados. Para obter mais informações, consulte Audit Database Mirroring Login Event Class.

Related Tasks

Procedimentos armazenados

Consulte Também

Espelhamento de banco de dados (SQL Server)
Provedor WMI para conceitos de eventos de servidor