Partilhar via


Política de failover para instâncias de cluster de failover

Aplica-se a:SQL Server

Em uma FCI (instância de cluster de failover) do SQL Server, apenas um nó pode possuir o grupo de recursos de cluster WSFC (Cluster de Failover do Windows Server) em um determinado momento. As solicitações do cliente são atendidas através deste nó na FCI. No caso de uma falha e uma reinicialização malsucedida, a propriedade do grupo é movida para outro nó WSFC na FCI. Esse processo é chamado de failover. O SQL Server aumenta a confiabilidade da deteção de falhas e fornece uma política de failover flexível.

Uma FCI do SQL Server depende do serviço WSFC subjacente para deteção de failover. Portanto, dois mecanismos determinam o comportamento de failover para FCI: o primeiro é a funcionalidade WSFC nativa e o segundo é a funcionalidade adicionada pela instalação do SQL Server.

  • O cluster WSFC mantém a configuração de quórum, o que garante um destino de transição único em uma transição automática. O serviço WSFC determina se o cluster mantém continuamente a integridade ideal do quórum e, em conformidade, ativa ou desativa o grupo de recursos.

  • A instância ativa do SQL Server relata periodicamente um conjunto de diagnósticos de componentes para o grupo de recursos WSFC por meio de uma conexão dedicada. O grupo de recursos WSFC mantém a política de transferência de serviço, que define as condições de falha que acionam reinicializações e transferências de serviço.

Este tópico discute o segundo mecanismo acima. Para obter mais informações sobre o comportamento do WSFC para configuração de quorum e deteção de integridade, consulte Modos de quórum WSFC e configuração de votação (SQL Server).

Importante

Failovers automáticos de e para uma FCI não são permitidos em um grupo de disponibilidade Always On. No entanto, failovers manuais de e para e FCI são permitidos em um grupo de disponibilidade Always On.

Visão geral da política de failover

O processo de failover pode ser dividido nas seguintes etapas:

  1. Monitorar o estado de saúde

  2. Determinando falhas

  3. Respondendo a falhas

Monitorizar o estado de saúde

Há três tipos de status de saúde que são monitorados para a FCI:

Estado do serviço SQL Server

O serviço WSFC monitora o estado inicial do serviço SQL Server no nó FCI ativo para detetar quando o serviço SQL Server é interrompido.

Capacidade de resposta da instância do SQL Server

Durante a inicialização do SQL Server, o serviço WSFC usa a DLL do recurso Mecanismo de Banco de Dados do SQL Server para criar uma nova conexão em um thread separado que é usado exclusivamente para monitorar o estado de saúde. Isso garante que a instância SQL tenha os recursos necessários para relatar seu status de integridade enquanto estiver sob carga. Usando essa conexão dedicada, o SQL Server executa o procedimento armazenado do sistema sp_server_diagnostics (Transact-SQL) no modo repetido para relatar periodicamente o status de integridade dos componentes do SQL Server para a DLL do recurso.

A DLL do recurso determina a capacidade de resposta da instância SQL usando um tempo limite de verificação de integridade. A propriedade HealthCheckTimeout define quanto tempo a DLL do recurso deve esperar pelo procedimento armazenado sp_server_diagnostics antes de relatar que a instância SQL não está a responder ao serviço WSFC. Essa propriedade é configurável usando T-SQL, bem como no snap-in Gerenciador de Cluster de Failover. Para obter mais informações, consulte Definir configurações de propriedade HealthCheckTimeout. Os itens a seguir descrevem como essa propriedade afeta as configurações de tempo limite e intervalo de repetição:

  • A DLL de recurso chama o procedimento armazenado sp_server_diagnostics e define o intervalo de repetição como um terço do ajuste HealthCheckTimeout.

  • Se o procedimento armazenado sp_server_diagnostics estiver lento ou não estiver retornando informações, a DLL do recurso aguardará o intervalo especificado pelo HealthCheckTimeout antes de informar ao serviço WSFC que a instância SQL não está respondendo.

  • Se a conexão dedicada for perdida, a DLL do recurso tentará novamente a conexão com a instância SQL para o intervalo especificado por HealthCheckTimeout antes de informar ao serviço WSFC que a instância SQL não está respondendo.

Diagnóstico de componentes do SQL Server

O procedimento armazenado do sistema sp_server_diagnostics coleta periodicamente diagnósticos de componentes na instância SQL. As informações de diagnóstico coletadas são exibidas como uma linha para cada um dos seguintes componentes e passadas para o thread de chamada.

  1. sistema

  2. recurso

  3. processo de consulta

  4. io_subsystem

  5. eventos

Os componentes do sistema, do recurso e do processo de consulta são usados para deteção de falhas. Os componentes io_subsytem e eventos são usados apenas para fins de diagnóstico.

Cada conjunto de linhas de informações também é gravado no log de diagnóstico de cluster do SQL Server. Para obter mais informações, consulte Visualizar e Consultar o Log de Diagnóstico da Instância de Cluster de Failover.

Sugestão

Embora o procedimento armazenado sp_server_diagnostic seja usado pela tecnologia Always On do SQL Server, ele está disponível para uso em qualquer instância do SQL Server para ajudar a detetar e solucionar problemas.

Determinando falhas

A DLL de recursos do Mecanismo de Banco de Dados do SQL Server determina se o estado de saúde detetado configura uma condição para falha usando a propriedade FailureConditionLevel. A propriedade FailureConditionLevel define quais os estados de integridade detetados que causam reinicializações ou failovers. Vários níveis de opções estão disponíveis, desde nenhuma reinicialização ou failover automático até todas as possíveis condições de falha, resultando em uma reinicialização ou failover automático. Para obter mais informações sobre como configurar essa propriedade, consulte Definir configurações de propriedade FailureConditionLevel.

As condições de falha são definidas em uma escala crescente. Para os níveis 1-5, cada nível inclui todas as condições dos níveis anteriores, além de suas próprias condições. Isso significa que, com cada nível, há uma maior probabilidade de failover ou reinicialização. Os níveis de condição de falha são descritos na tabela a seguir.

Revise sp_server_diagnostics (Transact-SQL) porque este procedimento armazenado do sistema desempenha um papel importante nos níveis de condição de falha.

Nível Condição Descrição
0 Sem failover ou reinicialização automática Indica que nenhum failover ou reinicialização será acionado automaticamente em quaisquer condições de falha. Este nível é apenas para fins de manutenção do sistema.
1 Failover ou reinicialização no servidor desativado Sinaliza que uma reinicialização ou failover do servidor será acionado se a seguinte condição ocorrer.

O serviço do SQL Server está inativo.
2 Failover ou reinicialização quando o servidor não responde Indica que uma reinicialização ou failover do servidor será acionado se qualquer uma das seguintes condições for gerada:

O serviço do SQL Server está inativo.

A instância do SQL Server não está respondendo (a DLL de recurso não pode receber dados de sp_server_diagnostics nas configurações HealthCheckTimeout).
3* Failover ou reinicialização em erros críticos do servidor Indica que uma reinicialização ou failover do servidor será acionado se qualquer uma das seguintes condições for gerada:

O serviço do SQL Server está inativo.

A instância do SQL Server não está respondendo (a DLL de recurso não pode receber dados de sp_server_diagnostics nas configurações HealthCheckTimeout).

O procedimento armazenado do sistema sp_server_diagnostics retorna 'erro do sistema'.
4 Alternativa de falha ou reinicialização em caso de erros moderados do servidor Indica que uma reinicialização ou failover do servidor será acionado se qualquer uma das seguintes condições for gerada:

O serviço do SQL Server está inativo.

A instância do SQL Server não está respondendo (a DLL de recurso não pode receber dados de sp_server_diagnostics nas configurações HealthCheckTimeout).

O procedimento armazenado do sistema sp_server_diagnostics retorna 'erro do sistema'.

O procedimento armazenado do sistema sp_server_diagnostics retorna 'erro de recurso'.
5 Failover ou reinicialização em quaisquer condições de falha qualificadas Indica que uma reinicialização ou failover do servidor será acionado se qualquer uma das seguintes condições for gerada:

O serviço do SQL Server está inativo.

A instância do SQL Server não está respondendo (a DLL de recurso não pode receber dados de sp_server_diagnostics nas configurações HealthCheckTimeout).

O procedimento armazenado do sistema sp_server_diagnostics retorna 'erro do sistema'.

O procedimento armazenado do sistema sp_server_diagnostics retorna 'erro de recurso'.

O procedimento armazenado do sistema sp_server_diagnostics retorna 'erro de query_processing'.

*Valor padrão

Respondendo a falhas

Depois que uma ou mais condições de falha são detetadas, a forma como o serviço WSFC responde às falhas depende do estado de quorum do WSFC e das configurações de reinicialização e failover do grupo de recursos FCI. Se a FCI perdeu o seu quórum WSFC, então toda a FCI é colocada offline e a FCI perdeu a sua alta capacidade de disponibilidade. Se a FCI ainda mantiver o seu quórum WSFC, o serviço WSFC poderá responder primeiro tentando reiniciar o nó com falha e, em seguida, executando failover se as tentativas de reinicialização não forem bem-sucedidas. As configurações de reinicialização e de tolerância a falhas são definidas no snap-in Gestor de Cluster de Tolerância a Falhas. Para obter mais informações sobre essas configurações, consulte <Propriedades do recurso> : guia Políticas.

Para obter mais informações sobre como manter a integridade do quórum, consulte Modos de quórum WSFC e configuração de votação (SQL Server).

Ver também

ALTERAR CONFIGURAÇÃO DO SERVIDOR (Transact-SQL)