Configure a recuperação pontual (PITR)

Quando cria uma nova instância na Google Cloud consola, as cópias de segurança automáticas e a recuperação num ponto específico no tempo (PITR) são ativadas automaticamente. Pode configurar a PITR para qualquer instância existente da seguinte forma:

Ative a PITR

Quando cria uma nova instância na Google Cloud consola, as cópias de segurança automáticas e a opção Ativar recuperação num ponto específico no tempo são ativadas automaticamente.

O procedimento seguinte ativa a PITR numa instância principal existente.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Abra o menu de mais ações Ícone Mais ações. para a instância na qual quer ativar a PITR e clique em Editar.
  3. Em Personalize a sua instância, expanda a secção Proteção de dados.
  4. Selecione a caixa de verificação Ativar recuperação num ponto específico no tempo.
  5. No campo Dias de registos, introduza o número de dias para reter registos, de 1 a 35 para a edição Cloud SQL Enterprise Plus ou de 1 a 7 para a edição Cloud SQL Enterprise.
  6. Clique em Guardar.

gcloud

  1. Apresente a vista geral da instância:
    gcloud sql instances describe INSTANCE_NAME
  2. Se vir enabled: false na secção backupConfiguration, ative as cópias de segurança agendadas:
    gcloud sql instances patch INSTANCE_NAME \
    --backup-start-time=HH:MM

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

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

    Se estiver a ativar a PITR numa instância principal, também pode configurar o número de dias durante os quais quer reter os registos de transações adicionando o seguinte parâmetro:

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

    Na secção backupConfiguration, vê pointInTimeRecoveryEnabled: true se a alteração foi bem-sucedida.

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 num Google Cloud projeto, conclua os passos nas secções seguintes.

Prepare o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.

    Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.

Prepare o diretório

Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).

  1. No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o ficheiro é denominado main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.

    Copie o exemplo de código para o main.tf criado recentemente.

    Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.

  3. Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
  4. Guarde as alterações.
  5. Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
    terraform init

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

    terraform init -upgrade

Aplique as alterações

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

    Faça correções à configuração conforme necessário.

  2. Aplique a configuração do Terraform executando o seguinte comando e introduzindo yes no comando:
    terraform apply

    Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).

  3. Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.

Eliminar as alterações

Para eliminar as alterações, faça o seguinte:

  1. Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Aplique a configuração do Terraform atualizada executando o seguinte comando e introduzindo yes no comando:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo yes no comando:

    terraform destroy

REST v1

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID ou o número do projeto do Google Cloud projeto que contém a instância
  • INSTANCE_NAME: o nome da instância principal ou de réplica de leitura que está a configurar 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 do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

REST v1beta4

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID ou o número do projeto do Google Cloud projeto que contém a instância
  • INSTANCE_NAME: o nome da instância principal ou de réplica de leitura que está a configurar 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 do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Desative a PITR

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Abra o menu Mais ações Ícone Mais ações. para a instância que quer desativar e selecione Editar.
  3. Em Personalize a sua instância, expanda a secção Proteção de dados.
  4. Desmarque a opção Ativar recuperação pontual.
  5. Clique em Guardar.

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

    Na secção backupConfiguration, vê pointInTimeRecoveryEnabled: false se a alteração foi bem-sucedida.

REST v1

Antes de usar qualquer um dos dados do pedido, 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 do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

REST v1beta4

Antes de usar qualquer um dos dados do pedido, 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 do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Defina a retenção do registo de transações

Para definir o número de dias para reter registos de gravação antecipada:

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Abra o menu Mais ações Ícone Mais ações. para a instância na qual quer ativar o registo de transações e selecione Editar.
  3. Em Personalize a sua instância, expanda a secção Proteção de dados.
  4. Na secção Ativar recuperação num ponto específico no tempo, expanda as Opções avançadas.
  5. Introduza o número de dias para reter registos, de 1 a 35 para a edição Cloud SQL Enterprise Plus ou de 1 a 7 para a edição Cloud SQL Enterprise.
  6. Clique em Guardar.

gcloud

Edite a instância para definir o número de dias de retenção dos registos de gravação antecipada.

Substitua o seguinte:

  • INSTANCE_NAME: o nome da instância na qual quer definir o registo de transações.
  • DAYS_TO_RETAIN: o número de dias dos registos de transações a manter. Para a edição Cloud SQL Enterprise Plus, o intervalo válido é entre 1 e 35 dias, com um valor predefinido de 14 dias. Para a edição Cloud SQL Enterprise, o intervalo válido é entre 1 e 7 dias, com um valor predefinido de 7 dias.

    Se não especificar um valor, o Cloud SQL usa o valor predefinido. Isto só é válido quando a PITR está ativada. Manter mais dias de registos 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 qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • INSTANCE_ID: o ID da instância.
  • DAYS_TO_RETAIN: o número de dias para reter os registos de transações. Para a edição Cloud SQL Enterprise Plus, o intervalo válido é entre 1 e 35 dias, com um valor predefinido de 14 dias. Para a edição Cloud SQL Enterprise, o intervalo válido é entre 1 e 7 dias, com um valor predefinido de 7 dias.

    Se não for especificado nenhum valor, é usado o valor predefinido. Isto só é válido quando a PITR está ativada. Manter mais dias de registos 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 do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

REST v1beta4

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • INSTANCE_ID: o ID da instância.
  • DAYS_TO_RETAIN: o número de dias para reter os registos de transações. Para a edição Cloud SQL Enterprise Plus, o intervalo válido é entre 1 e 35 dias, com um valor predefinido de 14 dias. Para a edição Cloud SQL Enterprise, o intervalo válido é entre 1 e 7 dias, com um valor predefinido de 7 dias.

    Se não for especificado nenhum valor, é usado o valor predefinido. Isto só é válido quando a PITR está ativada. Manter mais dias de registos 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 do pedido:

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

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Verifique a localização de armazenamento dos registos de transações usados para PITR

Pode verificar onde a sua instância do Cloud SQL está a armazenar os registos de transações usados para a PITR.

gcloud

Para determinar se a sua instância armazena registos para 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 pode verificar a localização de armazenamento dos registos de transações. Para determinar a localização 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 registos de transações para PITR são armazenados para a instância. Os estados de armazenamento possíveis do registo de transações são os seguintes:

  • DISK: a instância armazena os registos de transações usados para PITR no disco. Se atualizar uma instância da edição Enterprise do Cloud SQL para a edição Enterprise Plus do Cloud SQL, o processo de atualização muda automaticamente a localização do armazenamento de registos para o Cloud Storage. Para mais informações, consulte o artigo Atualize uma instância para a edição Cloud SQL Enterprise Plus através da atualização no local. Também pode optar por mudar a localização do armazenamento através da CLI gcloud ou da API Cloud SQL Admin sem atualizar a edição da sua instância e sem incorrer em tempo de inatividade. Para mais informações, consulte o artigo Mude o armazenamento do registo de transações para o Cloud Storage.
  • SWITCHING_TO_CLOUD_STORAGE: a instância está a mudar a localização de armazenamento dos registos de transações PITR para o Cloud Storage.
  • SWITCHED_TO_CLOUD_STORAGE: a instância concluiu a mudança da localização de armazenamento dos registos de transações PITR do disco para o Cloud Storage.
  • CLOUD_STORAGE: a instância armazena os registos de transações usados para PITR no Cloud Storage.

Mude o armazenamento do registo de transações para o Cloud Storage

Se a sua instância armazenar os respetivos registos de transações usados para PITR no disco, pode mudar a localização de armazenamento para o Cloud Storage sem incorrer em qualquer período de inatividade. O processo geral de mudança da localização de armazenamento demora aproximadamente o período de retenção do registo de transações (dias) a ser concluído. Assim que iniciar a mudança, os registos de transações começam a acumular-se no Cloud Storage. Durante a operação, pode verificar o estado do processo geral através do comando em Verifique a localização de armazenamento dos registos de transações usados para PITR.

Após a conclusão do processo geral de mudança para o Cloud Storage, o Cloud SQL usa registos de transações do Cloud Storage para a PITR.

gcloud

Para mudar a localização do armazenamento para o Cloud Storage, use o seguinte comando:

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

Substitua INSTANCE_NAME pelo nome da instância. A instância tem de ser uma instância principal e não uma instância de réplica. A resposta é semelhante à seguinte:

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 devolver um erro, consulte o artigo Resolva problemas com a mudança para o armazenamento na nuvem para ver possíveis passos seguintes.

REST v1

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • INSTANCE_ID: o ID da instância. A instância tem de ser uma instância principal e não uma instância de réplica.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Se o pedido devolver um erro, consulte o artigo Resolva problemas da mudança para o Google Cloud Storage para possíveis passos seguintes.

REST v1beta4

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • INSTANCE_ID: o ID da instância. A instância tem de ser uma instância principal e não uma instância de réplica.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Se o pedido devolver um erro, consulte o artigo Resolva problemas da mudança para o Google Cloud Storage para ver possíveis passos seguintes.

Resolva problemas na mudança para o Cloud Storage

A tabela seguinte apresenta os possíveis erros que podem ser devolvidos com o código INVALID REQUEST quando muda a localização de armazenamento dos registos de transações do disco para o armazenamento na nuvem.

Problema Resolução de problemas
Switching the storage location of the transaction logs used for PITR is not supported for instances with database type %s. Certifique-se de que está a executar o comando da CLI gcloud ou a fazer o pedido de API numa instância do Cloud SQL para MySQL ou Cloud SQL para PostgreSQL. A mudança da localização de armazenamento dos registos de transações através da CLI gcloud ou da API Cloud SQL Admin não é suportada para o Cloud SQL para SQL Server.
PostgreSQL transactional logging is not enabled on this instance. O PostgreSQL usa o registo antecipado como os registos de transações para a recuperação num determinado momento (PITR). Para suportar a PITR, o PostgreSQL requer que ative o registo antecipado na instância. Para mais informações sobre como ativar o registo antecipado, consulte o artigo Ative a PITR.
This instance is already storing transaction logs used for PITR in Cloud Storage Para validar a localização de armazenamento dos registos de transações, execute o comando em Verifique a localização de armazenamento dos registos de transações usados para PITR.
The instance is already switching transaction logs used for PITR from disk to Cloud Storage.

Aguarde pela conclusão da operação de mudança.

Para validar o estado da operação e a localização de armazenamento dos registos de transações, execute o comando em Verifique a localização de armazenamento dos registos de transações usados para PITR.

O que se segue?