Configurar a recuperação pontual (PITR)

Quando você cria uma instância no console do Google Cloud , os backups automatizados e a recuperação pontual (PITR) são ativados automaticamente. É possível configurar a PITR para qualquer instância fazendo o seguinte:

Ativar a PITR

Quando você cria uma instância no console do Google Cloud , as opções Backups automatizados e Ativar a recuperação pontual são ativadas automaticamente.

O procedimento a seguir ativa a PITR em uma instância principal existente.

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Abra o menu de mais ações Ícone mais ações. da instância em que você quer ativar a PITR e clique em Editar.
  3. Em Personalizar sua instância, expanda a seção Proteção de dados.
  4. Marque a caixa de seleção Ativar recuperação pontual.
  5. No campo Dias de registros, digite o número de dias em que os registros serão retidos, de 1 a 35 para a edição do Cloud SQL Enterprise Plus ou de 1 a 7 para a edição do Cloud SQL Enterprise.
  6. Clique em Salvar.

gcloud

  1. Exiba a visão geral da instância:
    gcloud sql instances describe INSTANCE_NAME
  2. Se você vir enabled: false na seção backupConfiguration, ative os backups programados:
    gcloud sql instances patch INSTANCE_NAME \
    --backup-start-time=HH:MM

    Especifique o parâmetro backup-start-time usando o horário de 24 horas no fuso horário UTC±00.

  3. Ative a PITR:
    gcloud sql instances patch INSTANCE_NAME \
    --enable-point-in-time-recovery

    Se você estiver ativando a PITR em uma instância principal, também poderá configurar o número de dias para manter os registros de transações adicionando o seguinte parâmetro:

    --retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS
  4. Confirme a mudança:
    gcloud sql instances describe INSTANCE_NAME

    Quando a operação é realizada, é exibido pointInTimeRecoveryEnabled: true na seção backupConfiguration.

Terraform

Para ativar a PITR, use um recurso do Terraform.

resource "google_sql_database_instance" "postgres_instance_pitr" {
  name             = ""
  region           = "us-central1"
  database_version = "POSTGRES_14"
  settings {
    tier = "db-custom-2-7680"
    backup_configuration {
      enabled                        = true
      point_in_time_recovery_enabled = true
      start_time                     = "20:55"
      transaction_log_retention_days = "3"
    }
  }
  # 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 Google Cloud , siga as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto Google Cloud padrão 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 Google Cloud projeto para conferir os resultados. No console do Google Cloud , navegue até seus recursos na interface 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 abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID ou número do projeto do projeto Google Cloud que contém a instância
  • INSTANCE_NAME: o nome da instância primária ou de réplica de leitura que você está configurando para alta disponibilidade
  • START_TIME: a hora (em horas e minutos)

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "pointInTimeRecoveryEnabled": true
    }
  }
}

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

Você vai receber uma resposta JSON semelhante a esta:

REST v1beta4

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 projeto Google Cloud que contém a instância
  • INSTANCE_NAME: o nome da instância primária ou de réplica de leitura que você está configurando para alta disponibilidade
  • START_TIME: a hora (em horas e minutos)

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "pointInTimeRecoveryEnabled": true
    }
  }
}

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

Você vai receber uma resposta JSON semelhante a esta:

Desativar PITR

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Abra o menu "Mais ações" Ícone mais ações. para a instância a ser desativada e selecione Editar.
  3. Em Personalizar sua instância, expanda a seção Proteção de dados.
  4. Desmarque a opção Ativar recuperação pontual.
  5. Clique em Salvar.

gcloud

  1. Desative a recuperação pontual:
    gcloud sql instances patch INSTANCE_NAME \
    --no-enable-point-in-time-recovery
  2. Confirme a alteração:
    gcloud sql instances describe INSTANCE_NAME

    Quando a operação é realizada, é exibido pointInTimeRecoveryEnabled: false na seção backupConfiguration.

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:

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

Corpo JSON da solicitação:

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "pointInTimeRecoveryEnabled": false
    }
  }
}

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

Você vai receber uma resposta JSON semelhante a esta:

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:

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

Corpo JSON da solicitação:

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "pointInTimeRecoveryEnabled": false
    }
  }
}

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

Você vai receber uma resposta JSON semelhante a esta:

Definir a retenção do registro de transações

Para definir o número de dias em que os registros de gravação antecipada serão guardados:

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Abra o menu "Mais ações" Ícone mais ações. para a instância em que você quer definir o registro das transações e selecione Editar.
  3. Em Personalizar sua instância, expanda a seção Proteção de dados.
  4. Na seção Ativar recuperação pontual, expanda Opções avançadas.
  5. Digite o número de dias em que os registros serão retidos, de 1 a 35 para a edição do Cloud SQL Enterprise Plus ou de 1 a 7 para a edição do Cloud SQL Enterprise.
  6. Clique em Salvar.

gcloud

Edite a instância para definir o número de dias de retenção dos registros em tempo de gravação:

Substitua:

  • INSTANCE_NAME: o nome da instância em que você quer definir o registro de transações.
  • DAYS_TO_RETAIN: o número de dias de registros de transações a serem mantidos. Para o Cloud SQL edição Enterprise Plus, o intervalo válido é de 1 a 35 dias, com um padrão de 14 dias. Para o Cloud SQL edição Enterprise, o intervalo válido é de um a sete dias, com um padrão de sete dias.

    Se você não especificar um valor, o Cloud SQL usará o padrão. Isso é válido apenas quando a PITR está ativada. A especificação de mais dias de registros de transações requer um tamanho de armazenamento maior.

  gcloud sql instances patch INSTANCE_NAME 
--retained-transaction-log-days=DAYS_TO_RETAIN

REST v1

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
  • DAYS_TO_RETAIN: o número de dias de retenção dos registros de transação. Para o Cloud SQL Enterprise Plus, o intervalo válido é de 1 a 35 dias, com um padrão de 14 dias. Para o Cloud SQL Enterprise, o intervalo válido é de um a sete dias, com um padrão de sete dias.

    Se nenhum valor for especificado, o valor padrão será usado. Isso é válido apenas quando a PITR está ativada. A especificação de uma retenção de mais dias dos registros de transações requer um tamanho de armazenamento maior.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "settings":
  {
    "backupConfiguration":
    {
      "transactionLogRetentionDays": "DAYS_TO_RETAIN"
    }
  }
}

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

Você vai receber uma resposta JSON semelhante a esta:

REST v1beta4

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
  • DAYS_TO_RETAIN: o número de dias de retenção dos registros de transação. Para o Cloud SQL Enterprise Plus, o intervalo válido é de 1 a 35 dias, com um padrão de 14 dias. Para o Cloud SQL Enterprise, o intervalo válido é de um a sete dias, com um padrão de sete dias.

    Se nenhum valor for especificado, o valor padrão será usado. Isso é válido apenas quando a PITR está ativada. A especificação de uma retenção de mais dias dos registros de transações requer um tamanho de armazenamento maior.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "settings":
  {
    "backupConfiguration":
    {
      "transactionLogRetentionDays": "DAYS_TO_RETAIN"
    }
  }
}

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

Você vai receber uma resposta JSON semelhante a esta:

Verificar o local de armazenamento dos registros de transações usados para a PITR

É possível verificar onde sua instância do Cloud SQL está armazenando os registros de transações usados para a PITR.

gcloud

Para determinar se a instância armazena registros para a PITR no disco ou no Cloud Storage, use o seguinte comando:

   gcloud sql instances describe INSTANCE_NAME
   

Substitua INSTANCE_NAME pelo nome da instância.

Para várias instâncias no mesmo projeto, também é possível verificar o local de armazenamento dos registros de transações. Para determinar o local de várias instâncias, use o seguinte comando:

   gcloud sql instances list --show-transactional-log-storage-state
   

Exemplo de resposta:

NAME  DATABASE_VERSION LOCATION         TRANSACTIONAL_LOG_STORAGE_STATE
my_01 POSTGRES_12      us-central-1     DISK
my_02 POSTGRES_12      us-central-1     CLOUD_STORAGE
...
   

Na saída do comando, o campo transactionalLogStorageState ou a coluna TRANSACTIONAL_LOG_STORAGE_STATE fornece informações sobre onde os registros de transações da PITR são armazenados na instância. Os estados de armazenamento de registros de transações possíveis são estes:

  • DISK: a instância armazena os registros de transação usados para a PITR no disco. Se você fizer upgrade de uma instância do Cloud SQL Enterprise para o Cloud SQL Enterprise Plus, o processo de upgrade vai mudar o local de armazenamento dos registros automaticamente para o Cloud Storage. Para mais informações, consulte Fazer upgrade de uma instância para o Cloud SQL Enterprise Plus usando o upgrade no local. Você também pode mudar o local de armazenamento usando a gcloud CLI ou a API Cloud SQL Admin sem fazer upgrade da edição da instância e sem gerar inatividade. Para mais informações, consulte Mudar o armazenamento dos registros de transações para o Cloud Storage.
  • SWITCHING_TO_CLOUD_STORAGE: a instância está alternando o local de armazenamento dos registros de transação da PITR para o Cloud Storage.
  • SWITCHED_TO_CLOUD_STORAGE: a instância concluiu a mudança do local de armazenamento dos registros de transação PITR do disco para o Cloud Storage.
  • CLOUD_STORAGE: a instância armazena os registros de transações usados para a PITR no Cloud Storage.

Mudar o armazenamento dos registros de transações para o Cloud Storage

Se a instância armazenar os registros de transações usados para a PITR no disco, você poderá mudar o local de armazenamento para o Cloud Storage sem gerar inatividade. O processo geral de mudança do local de armazenamento leva aproximadamente o período de retenção do registro de transações (dias) para ser concluído. Assim que você iniciar a mudança, os registros de transações vão começar a ser acumulados no Cloud Storage. Durante a operação, é possível verificar o status do processo geral usando o comando em Verificar o local de armazenamento dos registros de transações usados para a PITR.

Depois que o processo geral de mudança para o Cloud Storage for concluído, o Cloud SQL vai usar registros de transação do Cloud Storage para a PITR.

gcloud

Para mudar o local de armazenamento para o Cloud Storage, use este comando:

   gcloud sql instances patch INSTANCE_NAME \
      --switch-transaction-logs-to-cloud-storage
   

Substitua INSTANCE_NAME pelo nome da instância. A instância precisa ser principal e não uma réplica. A resposta é semelhante a:

The following message is used for the patch API method.
{"name": "INSTANCE_NAME", "project": "PROJECT_NAME", "switchTransactionalLogsToCloudStorageEnabled": "true"}

Patching Cloud SQL instance...done.
Updated
[https://sqladmin.prod.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME].
   

Se o comando retornar um erro, consulte Solução de problemas de mudança para o Cloud Storage para saber as próximas etapas.

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 A instância precisa ser principal e não uma réplica.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

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

Você vai receber uma resposta JSON semelhante a esta:

Se a solicitação retornar um erro, consulte Solução de problemas de mudança para o Cloud Storage para saber as próximas etapas.

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 A instância precisa ser principal e não uma réplica.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

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

Você vai receber uma resposta JSON semelhante a esta:

Se a solicitação retornar um erro, consulte Solução de problemas de mudança para o Cloud Storage para saber as próximas etapas.

Resolver problemas com a mudança para o Cloud Storage

A tabela a seguir lista os possíveis erros que podem ser retornados com o código INVALID REQUEST ao mudar o local de armazenamento dos registros de transações do disco para o Cloud Storage.

Problema Solução de problemas
Switching the storage location of the transaction logs used for PITR is not supported for instances with database type %s. Verifique se você está executando o comando da gcloud CLI ou fazendo a solicitação da API em uma instância do Cloud SQL para MySQL ou do Cloud SQL para PostgreSQL. Não é possível mudar o local de armazenamento dos registros de transações usando a CLI gcloud ou a API Cloud SQL Admin no Cloud SQL para SQL Server.
PostgreSQL transactional logging is not enabled on this instance. O PostgreSQL usa o registro prévio de escrita como os registros de transação para recuperação pontual (PITR). Para oferecer suporte à PITR, o PostgreSQL exige que você ative a geração de registros prévios de escrita na instância. Para mais informações sobre como ativar o registro prévio de escrita, consulte Ativar a PITR.
This instance is already storing transaction logs used for PITR in Cloud Storage Para verificar o local de armazenamento dos registros de transações, execute o comando em Verificar o local de armazenamento dos registros de transações usados para a PITR.
The instance is already switching transaction logs used for PITR from disk to Cloud Storage.

Aguarde a conclusão da outra operação.

Para verificar o status da operação e o local de armazenamento dos registros de transações, execute o comando contido em Verificar o local de armazenamento dos registros de transações usados para a PITR.

A seguir