Referência de falha de failover do Cloud SQL

Esta página descreve o que acontece durante um experimento com um tipo de falha do Cloud SQL de failover.

Como funciona a falha do Cloud SQL de failover

A falha do Cloud SQL de failover aciona um failover de alta disponibilidade (HA) para uma instância do Cloud SQL chamando o método failover na API Cloud SQL Admin. O objetivo dessa falha é permitir que você teste o comportamento e a resiliência do serviço quando a instância principal do Cloud SQL faz a transição para a instância de espera em outra zona na mesma região.

O destino dessa falha é uma instância do Cloud SQL.

O que acontece durante a execução do experimento

À medida que o experimento avança pelos estados, os recursos envolvidos passam pelas seguintes mudanças.

Recurso

PREPARING

INJECTING

REVERTING

instância

Nenhum

Promover instância de espera de HA

Não relevante

Validação e novas tentativas de failover de HA

O back-end do Fault Injection Testing realiza verificações de validação antes de iniciar o failover para garantir que o ambiente seja adequado. Esse processo ocorre durante a fase INJECTING, antes de enviar a chamada de API sqladmin.instances.failover para o plano de controle do Cloud SQL:

  • O sistema verifica se o estado da instância do Cloud SQL é RUNNABLE. Se a instância estiver em qualquer outro estado durante um experimento em execução, o Fault Injection Testing vai notificar você.
  • Ele verifica se a métrica cloudsql.googleapis.com/database/available_for_failover é TRUE.

Se essas condições não forem atendidas, a solicitação de failover será enfileirada para nova tentativa.

Gerenciamento de falhas

Se o failover já estiver em andamento ou encontrar um erro:

  • Durante a injeção:se a chamada de failover for rejeitada pelo plano de controle do Cloud SQL (por exemplo, se a instância de espera não estiver íntegra), o experimento vai passar para o estado STOPPING.
  • Monitoramento pós-failover:se a operação de failover não atingir o status DONE em um período predeterminado de 10 minutos, o back-end do Fault Injection Testing vai consultar os erros de operação, mover o experimento para o estado STOPPING e marcá-lo como tendo encontrado um erro.

O Fault Injection Testing depende do plano de controle do Cloud SQL como a fonte da verdade. O plano de controle rejeita qualquer tentativa de failover se a instância de espera não estiver íntegra. O Fault Injection Testing usa verificações de pré-voo e monitoramento de status para evitar ou informar essas falhas, em vez de tentar novas tentativas automatizadas após uma rejeição.

Failback manual

Como o failover é uma mudança com estado, interromper o experimento não faz o failback automático para a instância principal original (conforme indicado por "Não relevante" na fase REVERTING). O banco de dados vai continuar sendo executado na zona secundária.

Para retornar a instância à zona original após a conclusão do experimento, é necessário iniciar manualmente outro failover usando o Google Cloud console ou a gcloud CLI.