Manutenção de autoatendimento

Nesta página, descrevemos a manutenção de autoatendimento, que permite aceitar uma atualização de manutenção na instância fora do fluxo normal de manutenção programada.

Visão geral

O Cloud SQL lança regularmente melhorias no software, como patches para vulnerabilidades conhecidas, usando novas versões de manutenção. O Cloud SQL programa atualizações de manutenção uma vez em intervalos de meses para garantir que você tenha a versão mais recente, mas convém usar a manutenção de autoatendimento se:

  • você precisar de uma atualização antes do próximo evento de manutenção programado;
  • você quiser ter a versão da manutenção mais recente depois de pular o evento de manutenção programado mais recente.

Não é necessário fazer a atualização manual para a versão mais recente. O Cloud SQL pode fazer a atualização automaticamente da versão de manutenção durante o próximo evento de manutenção programado.

Gerenciar a manutenção em todas as réplicas de leitura de uma instância principal

Quando você executa a manutenção de autoatendimento em uma instância principal que tem réplicas de leitura, o Cloud SQL aplica automaticamente a atualização de manutenção a todas as réplicas de leitura. Se você tiver mais de três instâncias de réplica de leitura, as instâncias serão divididas em grupos e atualizadas em paralelo. Na etapa final, a atualização de manutenção é aplicada à instância principal.

Se necessário, ainda é possível executar a manutenção de autoatendimento em uma única réplica de leitura. No entanto, para garantir que todas as instâncias de réplica de leitura e a instância principal operem na mesma versão de manutenção, recomendamos realizar a manutenção de autoatendimento em todas as réplicas de leitura de uma instância principal ao mesmo tempo. ao longo do tempo.

Para atualizar uma única instância de réplica de leitura, especifique essa instância de réplica de leitura ao realizar a manutenção de autoatendimento.

Antes de começar

Antes de fazer a manutenção de autoatendimento, verifique a versão atual. Em seguida, é possível determinar a versão de manutenção de destino para a qual você quer atualizar e atualizar a instância para essa versão. Se você usa réplicas de leitura, atualize todas as réplicas de leitura da instância principal para essa versão.

Para ver a versão de manutenção atual de uma instância, use o seguinte procedimento:

gcloud

Antes de executar o comando gcloud a seguir, faça a seguinte substituição:

  • INSTANCE_ID: a instância a ser consultada
gcloud sql instances describe INSTANCE_ID
  

A versão de manutenção instalada na instância é indicada ao lado do atributo maintenanceVersion.

REST v1

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

  • 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": "POSTGRES_13"
}

Procure o item maintenanceVersion na seção DatabaseInstance da resposta.

REST v1beta4

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

  • 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": "POSTGRES_13"
}

Procure o item maintenanceVersion na seção DatabaseInstance da resposta.

Determinar a versão de manutenção de destino

Use o método a seguir para visualizar as versões de manutenção que podem ser selecionadas como destino. Não é possível atualizar para uma versão anterior à versão de manutenção atual.

gcloud

Antes de executar o comando gcloud a seguir, faça a seguinte substituição:

  • INSTANCE_ID: a instância a ser consultada
gcloud sql instances describe INSTANCE_ID
  

A versão de manutenção disponível é indicada ao lado do atributo availableMaintenanceVersions.

REST v1

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

  • 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": "POSTGRES_13"
}

Procure o item availableMaintenanceVersions na seção DatabaseInstance da resposta.

REST v1beta4

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

  • 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": "POSTGRES_13"
}

Procure o item availableMaintenanceVersions na seção DatabaseInstance da resposta.

Atualizar todas as réplicas de leitura de uma instância principal para a versão de manutenção de destino

Para executar uma atualização de manutenção em todas as instâncias de réplica de leitura de uma instância principal, use o procedimento a seguir.

gcloud

Antes de usar o seguinte comando gcloud, faça a seguinte substituição:

  • PRIMARY_INSTANCE_ID: o ID da instância principal
  • MAINTENANCE_VERSION: a versão de manutenção do Cloud SQL a ser aplicada
gcloud sql instances patch PRIMARY_INSTANCE_ID \
   --maintenance-version=MAINTENANCE_VERSION
  

No prompt de confirmação, digite Y para continuar ou N para cancelar.

Se você selecionar Y, o processo de atualização aplicará a versão de manutenção especificada a todas as réplicas de leitura primeiro antes de atualizar a instância principal. Todas as instâncias de réplica de leitura que já foram atualizadas para a versão de manutenção de destino serão ignoradas.

Se você selecionar N, nenhuma instância será atualizada.

Depois que a atualização das réplicas de leitura e a instância principal for concluída, uma mensagem semelhante a esta será exibida:

  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_ID]
  

Terraform

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

resource "google_sql_database_instance" "postgres_ssm_instance_name" {
  name                = "postgres-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "POSTGRES_14"
  maintenance_version = "POSTGRES_14_4.R20220710.01_07"
  settings {
    tier = "db-f1-micro"
  }
  # 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

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

  • PROJECT_ID: o ID do projeto
  • PROJECT_ID: o ID da instância principal
  • MAINTENANCE_VERSION: a versão de manutenção de software do Cloud SQL a ser aplicada

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

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 principal
  • MAINTENANCE_VERSION: a versão de manutenção de software do Cloud SQL a ser aplicada

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Atualizar uma única instância para a versão de manutenção de destino

Para executar uma atualização de manutenção em uma única instância, use o procedimento a seguir. Se necessário, use este procedimento para atualizar uma única instância de réplica de leitura.

gcloud

Antes de usar o comando gcloud a seguir, faça as seguintes substituições:

  • INSTANCE_ID: o ID da instância. Essa instância pode ser uma instância de réplica de leitura.
  • MAINTENANCE_VERSION: a versão de manutenção do Cloud SQL a ser aplicada
  gcloud sql instances patch INSTANCE_ID \
     --maintenance-version=MAINTENANCE_VERSION
  

Se você especificar uma réplica de leitura, uma solicitação de confirmação será exibida. Digite Y para continuar ou N para cancelar.

  • Se você selecionar Y, o processo de atualização aplicará a versão de manutenção especificada apenas à réplica de leitura especificada.
  • Se você selecionar N, nenhuma instância será atualizada.

Depois que a atualização da instância for concluída, uma mensagem semelhante a esta será exibida:

  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID]
  

Terraform

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

resource "google_sql_database_instance" "postgres_ssm_instance_name" {
  name                = "postgres-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "POSTGRES_14"
  maintenance_version = "POSTGRES_14_4.R20220710.01_07"
  settings {
    tier = "db-f1-micro"
  }
  # 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

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

  • PROJECT_ID: o ID do projeto
  • PROJECT_ID: o ID da instância, que pode ser uma instância de réplica de leitura
  • MAINTENANCE_VERSION: a versão de manutenção de software do Cloud SQL a ser aplicada

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

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, que pode ser uma instância de réplica de leitura
  • MAINTENANCE_VERSION: a versão de manutenção de software do Cloud SQL a ser aplicada

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

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

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Resolver problemas

Problema Solução de problemas
Não é possível aplicar a atualização de manutenção a uma instância interrompida. Para resolver, inicie a instância antes de executar a atualização de manutenção de autoatendimento.
Devido a uma diferença na versão principal do banco de dados, a atualização de manutenção falhou.

Não é possível usar a manutenção de autoatendimento para fazer upgrade da versão principal do banco de dados de uma instância.

Para fazer upgrade da versão principal de uma instância, use um dos seguintes procedimentos:

A seguir