Reiniciar uma instância com um failover manual iniciado pelo usuário – Instância Gerenciada de SQL do Azure
Aplica-se a: Instância Gerenciada de SQL do Azure
Este artigo explica como reiniciar a Instância Gerenciada de SQL do Azure executando um failover manual iniciado pelo usuário para um nó de computação secundário usando o PowerShell, a CLI do Azure ou a API REST.
É possível fazer failover manual de um nó primário nas camadas de serviço GP (Uso Geral) e BC (Comercialmente Crítico) e fazer failover manual de um nó secundário de réplica somente leitura na camada de serviço BC.
Observação
O failover neste artigo refere-se ao início do processo do mecanismo de banco de dados do SQL Server em um nó secundário e não está relacionado ao failover entre regiões de grupos de failover.
Quando usar o failover manual
A disponibilidade, uma parte fundamental da plataforma de Instância Gerenciada de SQL, funciona de forma transparente para seus aplicativos de banco de dados, fornecendo nós de computação em espera local para hospedar o processo do mecanismo de banco de dados do SQL Server. Um failover ocorre quando o processo do mecanismo de banco de dados do SQL Server é colocado offline no nó de computação primário e é colocado online em um nó de computação secundário. Normalmente, os failovers entre nós de computação da instância gerenciada de SQL são automáticos e gerenciados pela plataforma quando uma falha é detectada, um nó é degradado ou durante atualizações de software mensais regulares.
Toda a operação de failover consiste em colocar o processo do mecanismo de banco de dados do SQL Server online em um nó secundário, validar o estado do banco de dados e, finalmente, redirecionar as conexões do cliente para o novo nó primário. As conexões do cliente falham apenas por um curto período de tempo, normalmente menos de um minuto, durante a etapa final da operação de failover.
Você pode executar um failover manual para reiniciar o processo do mecanismo em um nó diferente pelos seguintes motivos:
- Logons com falha ou lentidão devido a problemas de desempenho.
- Testar o aplicativo quanto à resiliência a failover antes da implantação em produção.
- Testar os sistemas de ponta a ponta quanto à resiliência a falhas em failovers automáticos.
- Testar como o failover afeta as sessões de banco de dados existentes.
- Degradação do desempenho da consulta (reiniciar a instância pode ajudar a atenuar o problema de desempenho).
Garantir que os aplicativos sejam resilientes a failover antes da implantação na produção ajuda a reduzir o risco de falhas do aplicativo na produção e contribui para a disponibilidade do aplicativo aos clientes. Saiba mais sobre como testar seus aplicativos para preparação para a nuvem assistindo ao seguinte vídeo:
A tabela a seguir descreve o comportamento esperado da Instância Gerenciada de SQL durante uma operação de failover com base na camada de serviço e no modelo de disponibilidade:
Camada de serviço | Modelo de disponibilidade | Outro comportamento esperado | Comportamento de failover potencial (exceções) |
---|---|---|---|
Uso Geral | Redundância de zona (Zona de disponibilidade única) |
O processo SQL é reiniciado na mesma VM. | O processo SQL é reiniciado em uma VM diferente. |
Uso Geral | Redundância de zona (preview) (Várias zonas de disponibilidade) |
O processo SQL é reiniciado na mesma VM. | O processo SQL é reiniciado em uma VM diferente. |
Comercialmente Crítico | Redundância de zona (Zona de disponibilidade única) |
A réplica secundária aleatória é promovida a primária. | N/D |
Comercialmente Crítico | Redundância de zona (Várias zonas de disponibilidade) |
A réplica secundária aleatória é promovida a primária, na mesma zona de disponibilidade ou em uma zona de disponibilidade diferente. | N/D |
Permissões
Os usuários que estiverem iniciando um failover precisam ter uma das seguintes funções do Azure:
- Função Proprietário da Assinatura ou
- Função Colaborador da Instância Gerenciada de SQL ou
- Função personalizada com a seguinte permissão:
Microsoft.Sql/managedInstances/failover/action
Reiniciar uma instância com um failover manual
Você pode reiniciar uma instância com um failover manual usando a API REST, o PowerShell ou a CLI do Azure.
A versão mínima do Az.Sql precisa ser v 2.9.0. Considere a possibilidade de usar sempre o Azure Cloud Shell do portal do Azure que tenha a versão mais recente do PowerShell disponível.
Como pré-requisito, use o script do PowerShell a seguir para instalar os módulos do Azure necessários. Além disso, selecione a assinatura em que está localizada a Instância Gerenciada de SQL que sofrerá o failover.
$subscription = 'enter your subscription ID here'
Install-Module -Name Az
Import-Module Az.Accounts
Import-Module Az.Sql
Connect-AzAccount
Select-AzSubscription -SubscriptionId $subscription
Use o comando Invoke-AzSqlInstanceFailover do PowerShell com o exemplo a seguir para iniciar o failover do nó primário, aplicável às camadas de serviço BC e GP.
$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName
Use o comando do PowerShell a seguir para fazer failover do nó secundário de leitura, aplicável somente à camada de serviço BC.
$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName -ReadableSecondary
Monitorar o failover
O monitoramento do progresso de um failover iniciado pelo usuário difere para instâncias nas camadas de serviço Comercialmente Crítico e de Uso Geral.
Para monitorar o progresso de um failover iniciado pelo usuário, use:
- sys.dm_os_sys_info para verificar o tempo de atividade do sistema para a camada de serviço de Uso Geral.
sys.dm_hadr_fabric_replica_states
para verificar as réplicas disponíveis para a camada de serviço Comercialmente Crítico.
A etapa final do processo de failover é o redirecionamento das conexões do cliente para o novo nó primário. A pequena perda de conectividade do cliente durante o failover, normalmente por menos de um minuto, indica que o failover foi executado, independentemente da camada de serviço.
Camada de serviço de Uso Geral
O exemplo de T-SQL a seguir mostra o tempo de atividade do processo SQL no nó da camada de serviço de Uso Geral:
SELECT sqlserver_start_time, sqlserver_start_time_ms_ticks FROM sys.dm_os_sys_info
A hora de início do processo SQL é a hora em que o processo do mecanismo de banco de dados do SQL Server foi iniciado no nó. O tempo é reiniciado após a conclusão do failover. Execute essa consulta antes e depois de iniciar um failover de uma instância na camada de serviço de Uso Geral para monitorar o progresso da operação de failover.
Camada de serviço comercialmente crítica
O exemplo de T-SQL a seguir indica qual nó é atualmente a réplica primária para a camada de serviço Comercialmente Crítico:
SELECT DISTINCT replication_endpoint_url, fabric_replica_role_desc FROM sys.dm_hadr_fabric_replica_states
O nó que hospeda a réplica primária é alterado após a conclusão do failover. Execute essa consulta antes e depois de iniciar um failover de uma instância na camada de serviço Comercialmente Crítico para monitorar o progresso da operação de failover.
Observação
O processo de failover completo pode levar vários minutos para ser concluído durante cargas de trabalho de alta intensidade porque o mecanismo de instância garante que as transações no nó secundário sejam capturadas para as transações do nó primário antes de iniciar o failover.
Limitações
Considere as seguintes limitações funcionais de failovers manuais iniciados pelo usuário:
- Só pode haver um (1) failover iniciado na mesma Instância Gerenciada de SQL a cada 15 minutos.
- Failovers não são permitidos:
- Enquanto o primeiro backup completo de um novo banco de dados não for concluído por sistemas de backup automatizados.
- Se houver alguma restauração de banco de dados em andamento.
- Para instâncias na camada de serviço Comercialmente Crítico:
- Deve haver um quorum de réplicas para que a solicitação de failover seja aceita.
- Não é possível especificar em qual réplica secundária para leitura o failover será iniciado.
Conteúdo relacionado
- Saiba mais sobre como testar a preparação de aplicativos para a nuvem, com a gravação do vídeo Testing App Cloud Readiness for Failover Resiliency with SQL Managed Instance (Testar a preparação para a resiliência a failover do aplicativo para a nuvem com a Instância Gerenciada de SQL).
- Saiba mais sobre a alta disponibilidade de instâncias gerenciadas em Alta disponibilidade para Instância Gerenciada de SQL.
- Confira O que é Instância Gerenciada de SQL? para ter uma visão geral.