Partilhar via


Executar um failover manual planejado de um grupo de disponibilidade (SQL Server)

Este tópico descreve como executar um failover manual sem perda de dados (um failover manual planejado) em um grupo de disponibilidade AlwaysOn usando SQL Server Management Studio, Transact-SQL ou PowerShell no SQL Server 2014. Um grupo de disponibilidade faz failover no nível de uma réplica de disponibilidade. Um failover manual planejado, como qualquer failover de grupos de disponibilidade Always On, faz a transição de um réplica secundário para a função primária e, simultaneamente, faz a transição do antigo réplica primário para a função secundária.

Um failover manual planejado, que é suportado apenas quando a réplica primária e a réplica secundária de destino estão executando em modo de confirmação síncrona e estão sincronizadas no momento, preserva todos os dados nos bancos de dados secundários que estão unidos ao grupo de disponibilidade em uma réplica secundária de destino. Quando a réplica primária antiga faz a transição para a função secundária, seus bancos de dados se tornam bancos de dados secundários e começam a ser sincronizados com os novos bancos de dados primários. Depois que a transição de todos é feita para o estado SYNCHRONIZED, a nova réplica secundária se torna qualificada para servir como o destino de uma futuro failover manual planejado.

Observação

Se as réplicas secundárias e primárias estiverem configuradas para o modo de failover automático, quando a réplica secundária for sincronizada, ela também poderá servir como o destino de um failover automático. Para obter mais informações, consulte Modos de disponibilidade (Grupos de Disponibilidade AlwaysOn).

Antes de começar

Limitações e Restrições

  • Um comando de failover é retornado assim que a réplica secundária de destino aceitar o comando. No entanto, a recuperação de banco de dados ocorre de forma assíncrona depois que o grupo de disponibilidade terminar o failover.

  • A consistência do banco de dados entre bancos de dados dentro do grupo de disponibilidade não é mantida no failover.

    Observação

    Transações entre bancos de dados e transações distribuídas não são compatíveis com Always On Grupos de Disponibilidade. Para obter mais informações, consulte Transações entre bancos de dados sem suporte para espelhamento de banco de dados ou grupos de disponibilidade AlwaysOn (SQL Server).

Pré-requisitos e restrições

  • A réplica secundária de destino e a réplica primária devem estar executando em modo de disponibilidade de confirmação síncrona.

  • A réplica primária de destino deve estar sincronizada com a réplica primária. Isso requer que todos os bancos de dados secundários dessa réplica secundária ao grupo tenham sido unidos ao grupo de disponibilidade e tenham sido sincronizados com os bancos de dados primários correspondentes (quer dizer, os bancos de dados secundários locais devem estar SYNCHRONIZED).

    Dica

    Para determinar a prontidão do failover de uma réplica secundária, consulte a coluna is_failover_ready na exibição de gerenciamento dinâmico sys.dm_hadr_database_cluster_states ou consulte a coluna Prontidão de Failover do Painel de Grupo AlwaysOn.

  • Esta tarefa tem suporte apenas na réplica secundária de destino. Você deve estar conectado à instância de servidor que hospeda a réplica secundária de destino.

Segurança

Permissões

Requer a permissão ALTER AVAILABILITY GROUP no grupo de disponibilidade, a permissão CONTROL AVAILABILITY GROUP, a permissão ALTER ANY AVAILABILITY GROUP ou a permissão CONTROL SERVER.

Como usar o SQL Server Management Studio.

Para fazer o failover de um grupo de disponibilidade manualmente

  1. No Pesquisador de Objetos, conecte-se a uma instância do servidor que hospeda uma réplica secundária do grupo de disponibilidade que precise passar por failover e expanda a árvore de servidores.

  2. Expanda os nós Alta Disponibilidade AlwaysOn e Grupos de Disponibilidade .

  3. Clique com o botão direito do mouse no grupo de disponibilidade do qual fazer failover e selecione o comando Failover .

  4. Isso inicia o Assistente de Grupo de Disponibilidade de Failover. Para obter mais informações, confira Usar o Assistente para Executar Failover de Grupo de Disponibilidade (SQL Server Management Studio).

Usando o Transact-SQL

Para fazer o failover de um grupo de disponibilidade manualmente

  1. Conecte-se à instância do servidor que hospeda a réplica secundária de destino.

  2. Use a instrução ALTER AVAILABILITY GROUP , da seguinte maneira:

    ALTER AVAILABILITY GROUP group_name FAILOVER

    em que group_name é o nome do grupo de disponibilidade.

    O exemplo a seguir faz failover manual do grupo de disponibilidade MyAg para o réplica secundário conectado.

    ALTER AVAILABILITY GROUP MyAg FAILOVER;  
    

Usando o PowerShell

Para fazer o failover de um grupo de disponibilidade manualmente

  1. Altere o diretório (cd) para a instância do servidor que hospeda a réplica secundária de destino.

  2. Use o cmdlet Switch-SqlAvailabilityGroup.

    Observação

    Para exibir a sintaxe de um cmdlet, use o Get-Help cmdlet no ambiente do PowerShell SQL Server 2014. Para obter mais informações, consulte Get Help SQL Server PowerShell.

    O exemplo a seguir faz failover manual do grupo de disponibilidade MyAg para o réplica secundário com o caminho especificado.

    Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SecondaryServer\InstanceName\AvailabilityGroups\MyAg  
    

Para configurar e usar o provedor do SQL Server PowerShell

Acompanhamento: após o failover manual de um grupo de disponibilidade

Se você fez failover fora do conjunto de failover automático do grupo de disponibilidade, ajuste os votos de quorum dos nós WSFC para refletir a nova configuração do grupo de disponibilidade. Para obter mais informações, consulte WSFC (Clustering de Failover do Windows Server) com SQL Server.

Consulte Também

Visão geral de grupos de disponibilidade AlwaysOn (SQL Server)
Failover e modos de failover (grupos de disponibilidade AlwaysOn)
Executar um Failover Manual forçado de um grupo de disponibilidade (SQL Server)