Ativar e desativar a alta disponibilidade

Nesta página, descrevemos como configurar uma instância para alta disponibilidade.

É possível configurar uma instância para alta disponibilidade ao criá-la ou ativar a alta disponibilidade em uma instância atual.

Para mais informações sobre alta disponibilidade, consulte Visão geral da configuração de alta disponibilidade.

Criar uma nova instância configurada para alta disponibilidade

Quando você cria uma instância e a configura para alta disponibilidade, o Cloud SQL a cria como uma instância regional.

Para criar uma instância configurada para alta disponibilidade:

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Selecione Criar instância.
  3. Selecione o mecanismo do banco de dados.
  4. Na seção Escolher região e disponibilidade por zona, selecione Várias zonas (altamente disponível).
  5. Expanda Especificar zonas.
  6. Selecione as zonas primária e secundária. As condições a seguir se aplicam quando a zona secundária é usada durante a criação ou edição da instância:
    • A zona padrão é Any para a zona primária e Any (different from primary) para a zona secundária.
    • Se as zonas primária e secundária forem especificadas, elas precisarão ser zonas diferentes.

  7. Clique em Salvar.

    Você retornará à página da instância principal enquanto ela está sendo atualizada.

gcloud

  1. Crie a instância regional:
    gcloud sql instances create REGIONAL_INSTANCE_NAME \
    --availability-type=REGIONAL \
    --database-version=SQLSERVER_2017_STANDARD \
    --cpu=NUMBER_CPUS \
    --memory=MEMORY_SIZE
  2. Configure o usuário raiz:
    gcloud sql users set-password root no-host \
    --instance=REGIONAL_INSTANCE_NAME \
    --password=PASSWORD
Para uma lista completa de parâmetros disponíveis, consulte a página de referência sobre criação de instâncias gcloud sql.

Terraform

Para criar uma instância com alta disponibilidade, use um recurso do Terraform.

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-ha"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled    = true
      start_time = "20:55"
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplique as alterações

Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.

    Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Preparar o diretório

Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.

  1. No Cloud Shell, crie um diretório e um novo arquivo dentro dele. O nome do arquivo precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

    Copie o exemplo de código no main.tf recém-criado.

    Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção -upgrade:

    terraform init -upgrade

Aplique as alterações

  1. Revise a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expectativas:
    terraform plan

    Faça as correções necessárias na configuração.

  2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  3. Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.

Excluir as alterações

Para excluir as mudanças, faça o seguinte:

  1. Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo yes no prompt:

    terraform destroy

REST v1

Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:insert.

Crie a instância regional.

  1. Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto
    • instance-name: o nome da instância
    • database-version: a string de enum da versão do banco de dados
    • region: a região do GCP
    • machine-type: o tipo de máquina

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

    Corpo JSON da solicitação:

    {
      "name": "instance-name",
      "region": "region",
      "databaseVersion": "database-version",
       "settings": {
         "tier": "machine-type",
         "backupConfiguration": {
             "enabled": true
          },
          "availabilityType": "REGIONAL"
       }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

  2. Quando a instância concluir a inicialização, atualize a senha raiz na instância:

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • password: a nova senha de usuário raiz

    Método HTTP e URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=%25&name=sqlserver'

    Corpo JSON da solicitação:

    {
       "name": "sqlserver",
       "host": "nohost",
       "password": "password"}
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

REST v1beta4

Para ver a lista completa de parâmetros dessa solicitação, consulte a página instances:insert.

Crie a instância regional.

  1. Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto
    • instance-name: o nome da instância
    • database-version: a string de enum da versão do banco de dados
    • region: a região do GCP
    • machine-type: o tipo de máquina

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

    Corpo JSON da solicitação:

    {
      "name": "instance-name",
      "region": "region",
      "databaseVersion": "database-version",
       "settings": {
         "tier": "machine-type",
         "backupConfiguration": {
             "enabled": true
          },
          "availabilityType": "REGIONAL"
       }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

  2. Quando a instância concluir a inicialização, atualize a senha raiz na instância:

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto
    • instance-id: o ID da instância
    • password: a nova senha de usuário raiz

    Método HTTP e URL:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=sqlserver'

    Corpo JSON da solicitação:

    {
       "name": "sqlserver",
       "host": "nohost",
       "password": "password"}
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

Para mais detalhes sobre como criar uma instância, consulte Como criar instâncias.

Configurar uma instância existente para alta disponibilidade

Você pode configurar uma instância do Cloud SQL para alta disponibilidade usando o Console do Google Cloud, gcloud CLI, ou a API.

Console

Para configurar uma instância para alta disponibilidade:

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página Visão geral de uma instância, clique no nome dela.
  3. Clique em Editar.
  4. Na seção da opção de configuração Backups automáticos e alta disponibilidade, selecione Alta disponibilidade (regional). Também é recomendável ativar a opção Automatizar backups.
  5. Clique em Salvar.

gcloud

Para configurar uma instância regional de alta disponibilidade, use o comando gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME \
--availability-type REGIONAL

Substitua INSTANCE_NAME pelo nome da instância do Cloud SQL que você está configurando para alta disponibilidade.

REST v1

Para configurar uma instância como regional de alta disponibilidade:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
  • INSTANCE_NAME: o nome da instância que você está configurando para alta disponibilidade

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Corpo JSON da solicitação:

{
  "settings": {"availabilityType": "REGIONAL" }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

REST v1beta4

Para configurar uma instância como regional de alta disponibilidade:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
  • INSTANCE_NAME: o nome da instância que você está configurando para alta disponibilidade

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Corpo JSON da solicitação:

{
  "settings": {"availabilityType": "REGIONAL" }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

Iniciar o failover

O teste de failover é opcional, mas é recomendado. Portanto, você pode ver como seu aplicativo responde em caso de um failover.

Para saber mais sobre failover, consulte a Visão geral do failover.

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Clique em Failover.
  4. Na caixa de diálogo Acionar manualmente um failover, insira o ID da instância no campo de texto e clique em Acionar failover.

gcloud

Inicie o failover:

gcloud sql instances failover PRIMARY_INSTANCE_NAME

REST v1

  1. Descreva a instância principal para conseguir o valor do campo settingsVersion.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
    • INSTANCE_NAME: o nome da instância que você está configurando para alta disponibilidade

    Método HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    {
      "kind": "sql#instance",
      "state": "RUNNABLE",
      "databaseVersion": "SQLSERVER_2019_STANDARD"
    }
    
  2. Inicie o failover:

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto
    • instance-name: o nome da instância
    • settings-version: a settingsVersion de instanceInfo

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-name/failover

    Corpo JSON da solicitação:

    {
      "failoverContext":
         {
            "settingsVersion":"settings-version"
         }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

REST v1beta4

  1. Descreva a instância principal para conseguir o valor do campo settingsVersion.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
    • INSTANCE_NAME: o nome da instância que você está configurando para alta disponibilidade

    Método HTTP e URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    {
      "kind": "sql#instance",
      "state": "RUNNABLE",
      "databaseVersion": "SQLSERVER_2019_STANDARD"
    }
    
  2. Inicie o failover:

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • project-id: o ID do projeto
    • instance-name: o nome da instância
    • settings-version: a settingsVersion de instanceInfo

    Método HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name/failover

    Corpo JSON da solicitação:

    {
      "failoverContext":
         {
            "settingsVersion":"settings-version"
         }
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

A instância apresenta failover e ela fica indisponível para exibir os dados por alguns minutos.

Verificar a configuração de alta disponibilidade de uma instância

Para verificar se uma instância tem alta disponibilidade e ver as zonas em que ela está em execução:

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Confirme se as seguintes configurações de alta disponibilidade são exibidas na seção Configuração:
    • Altamente disponível (regional)
    • Localizado em mostra a zona principal atual da instância.

gcloud

gcloud sql instances describe INSTANCE_NAME

A resposta indica que availabilityType é REGIONAL. Os campos gceZone e secondaryGceZone mostram as zonas primária e secundária atuais da instância.

REST v1

Antes de usar os dados da solicitação, faça as seguintes substituições:

  • project-id: o ID do projeto
  • instance-id: o ID da instância

Método HTTP e URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "SQLSERVER_2019_STANDARD"
}

A resposta indica que availabilityType é REGIONAL. Os campos gceZone e secondaryGceZone mostram as zonas primária e secundária atuais da instância.

REST v1beta4

Antes de usar os dados da solicitação, faça as seguintes substituições:

  • project-id: o ID do projeto
  • instance-id: o ID da instância

Método HTTP e URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "SQLSERVER_2017_STANDARD",
}

A resposta indica que availabilityType é REGIONAL. Os campos gceZone e secondaryGceZone mostram as zonas primária e secundária atuais da instância.

Alterar as zonas de uma instância de alta disponibilidade

Alterar uma ou ambas as zonas de uma instância de alta disponibilidade existente causa alguns minutos de inatividade enquanto a instância é reconfigurada. Para ver as zonas primária e secundária atuais em que a instância de alta disponibilidade está sendo executada, consulte Verificar a configuração de alta disponibilidade de uma instância.

Para alterar as zonas de uma instância de alta disponibilidade:

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página Visão geral de uma instância, clique no nome dela.
  3. Clique em Editar.
  4. Na seção Escolher a disponibilidade por região e zona, expanda Especificar zonas e selecione novas zonas. A zona padrão é Any para a zona primária e Any (different from primary) para a zona secundária. As seguintes restrições são aplicadas:
    • É possível especificar apenas a zona principal ou as zonas principal e secundária.
    • Se as zonas primária e secundária forem especificadas, elas precisarão ser zonas diferentes.
  5. Clique em Salvar.

    Você retornará à página da instância principal enquanto ela está sendo atualizada.

gcloud

Altere a zona em que a instância está em execução:

gcloud sql instances patch INSTANCE_NAME \
  --zone=PRIMARY_ZONE --secondary-zone=SECONDARY_ZONE

O parâmetro --secondary-zone é opcional. Se você omiti-la, o Cloud SQL selecionará uma zona disponível diferente da principal.

As seguintes restrições são aplicadas:

  • As zonas precisam ser válidas e pertencerem à mesma região da instância do Cloud SQL.
  • Se a zona secundária for especificada, ela precisa ser diferente da zona principal.

REST v1

  1. Altere as zonas da instância regional:

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do projeto
    • INSTANCE_NAME: o nome da instância
    • PRIMARY_ZONE: a zona principal
    • SECONDARY_ZONE: a zona secundária

    Método HTTP e URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Corpo JSON da solicitação:

    {
    "settings": {"locationPreference": {"zone": "PRIMARY_ZONE", "secondaryZone": "SECONDARY_ZONE"}}
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

    O parâmetro secondaryZone é opcional. Se você omiti-la, o Cloud SQL selecionará uma zona disponível diferente da principal.

    As seguintes restrições são aplicadas:

    • As zonas precisam ser válidas.
    • Todas as zonas escolhidas precisam pertencer à mesma região da instância do Cloud SQL.

REST v1beta4

  1. Altere as zonas da instância regional:

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do projeto
    • INSTANCE_NAME: o nome da instância
    • PRIMARY_ZONE: a zona principal
    • SECONDARY_ZONE: a zona secundária

    Método HTTP e URL:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    Corpo JSON da solicitação:

    {
    "settings": {"locationPreference": {"zone": "PRIMARY_ZONE", "secondaryZone": "SECONDARY_ZONE"}}
    }
    

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

    O parâmetro secondaryZone é opcional. Se você omiti-la, o Cloud SQL selecionará uma zona disponível diferente da principal.

    As seguintes restrições são aplicadas:

    • As zonas precisam ser válidas.
    • Todas as zonas escolhidas precisam pertencer à mesma região da instância do Cloud SQL.

Desativar a alta disponibilidade de uma instância

Você pode configurar uma instância do Cloud SQL para alta disponibilidade usando o Console do Google Cloud, gcloud CLI, ou a API.

Console

Para desativar a alta disponibilidade em uma instância:

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página Visão geral de uma instância, clique no nome dela.
  3. Clique em Editar.
  4. Abra Backups automáticos.
  5. Na seção Disponibilidade, clique em Zona única.
  6. Clique em Salvar. Esta edição requer que você reinicie a instância.
  7. Quando a caixa de diálogo aparecer, clique em Salvar e reiniciar.

gcloud

Para desativar a alta disponibilidade em uma instância, use o comando gcloud sql instances patch:

gcloud sql instances patch INSTANCE_NAME \
--availability-type ZONAL

Substitua INSTANCE_NAME pelo nome da instância do Cloud SQL para a qual você está desativando a alta disponibilidade.

REST v1

Para mudar o tipo de disponibilidade da instância para ZONAL, use o método instances:patch. Esse método desativa a alta disponibilidade da instância.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
  • INSTANCE_NAME: o nome da instância para a qual você está desativando a alta disponibilidade

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Corpo JSON da solicitação:

{
  "settings": {"availabilityType": "ZONAL" }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

REST v1beta4

Para mudar o tipo de disponibilidade da instância para ZONAL, use o método instances:patch. Esse método desativa a alta disponibilidade da instância.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
  • INSTANCE_NAME: o nome da instância para a qual você está desativando a alta disponibilidade

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Corpo JSON da solicitação:

{
  "settings": {"availabilityType": "ZONAL" }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

Resolver problemas

Problema Solução de problemas
Não é possível encontrar as métricas de um failover manual. Somente failovers automáticos entram nas métricas.
Os recursos da instância do Cloud SQL (CPU e RAM) estão quase com 100% de uso, fazendo com que a instância de alta disponibilidade fique inativa. O tamanho da máquina da instância é pequeno demais para a carga.

Edite a instância para fazer upgrade para um tamanho de máquina maior e receber mais CPUs e memória.

A seguir