Use a recuperação pontual (PITR)

Esta página descreve como usar a recuperação num determinado momento (PITR) para restaurar a instância principal do Cloud SQL.

Para saber mais acerca da PITR, consulte o artigo Recuperação pontual (PITR).

Se criar uma instância da edição Enterprise Plus do Cloud SQL, a PITR é ativada por predefinição, independentemente do método usado para a criação. Se quiser desativar a funcionalidade, tem de o fazer manualmente.

Se criar uma instância da edição Enterprise do Cloud SQL na Google Cloud consola, a PITR é ativada por predefinição. Caso contrário, se criar a instância através da CLI gcloud, do Terraform ou da API Cloud SQL Admin, a PITR está desativada por predefinição. Neste caso, se quiser ativar a funcionalidade, tem de o fazer manualmente.

Armazenamento de registos para PITR

O Cloud SQL usa o arquivo de registo antecipado (WAL) para a PITR.

A 9 de janeiro de 2023, lançámos o armazenamento de registos de gravação antecipada para a PITR no Google Cloud Storage. Desde este lançamento, aplicam-se as seguintes condições:

  • Todas as instâncias da edição Cloud SQL Enterprise Plus armazenam os respetivos registos de gravação antecipada no Cloud Storage. Apenas as instâncias da edição Cloud SQL Enterprise Plus que atualizar a partir da edição Cloud SQL Enterprise e que tinham a PITR ativada antes de 9 de janeiro de 2023 continuam a armazenar os respetivos registos no disco.
  • As instâncias da edição Enterprise do Cloud SQL criadas com a PITR ativada antes de 9 de janeiro de 2023 continuam a armazenar os respetivos registos no disco.
  • Se atualizar uma instância da edição Cloud SQL Enterprise após 15 de agosto de 2024 que armazene registos de transações para PITR no disco para a edição Cloud SQL Enterprise Plus, o processo de atualização muda a localização de armazenamento dos registos de transações usados para PITR 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.
  • Todas as instâncias da edição Enterprise do Cloud SQL que criar com a PITR ativada após 9 de janeiro de 2023 armazenam registos no Cloud Storage.

Para instâncias que armazenam registos de gravação antecipada apenas no disco, pode mudar a localização de armazenamento dos registos de transações usados para PITR do disco para o Cloud Storage através da CLI gcloud ou da API Cloud SQL Admin sem incorrer em qualquer tempo de inatividade. Para mais informações, consulte o artigo Mude o armazenamento do registo de transações para o Cloud Storage.

Período de retenção de registos

Para ver se uma instância armazena os registos usados para a PITR no Cloud Storage, use Verifique a localização de armazenamento dos registos de transações usados para a PITR.

Depois de usar um cliente PostgreSQL, como o psql ou o pgAdmin, para se ligar a uma base de dados da instância, execute o seguinte comando: show archive_command. Se existirem registos de escrita antecipada arquivados no Cloud Storage, é apresentado o ícone -async_archive -remote_storage.

Todas as outras instâncias existentes com PITR ativado continuam a ter os respetivos registos armazenados no disco.

Se os registos estiverem armazenados no Cloud Storage, o Cloud SQL carrega os registos a cada cinco minutos ou menos. Como resultado, se estiver disponível uma instância do Cloud SQL, a instância pode ser recuperada até à hora mais recente. No entanto, se a instância não estiver disponível, o objetivo do ponto de recuperação é normalmente de cinco minutos ou menos. Use a CLI gcloud ou a API Admin para verificar a hora mais recente até à qual pode restaurar a instância e realizar a recuperação até essa hora.

Os registos de gravação antecipada usados com a PITR são eliminados automaticamente com a respetiva cópia de segurança automática associada, o que geralmente acontece após o valor definido para transactionLogRetentionDays ser atingido. Este é o número de dias de registos de transações que o Cloud SQL retém para a PITR. Para a edição Cloud SQL Enterprise Plus, pode definir o valor de 1 a 35 e, para a edição Cloud SQL Enterprise, pode definir o valor de 1 a 7.

Quando restaura uma cópia de segurança numa instância do Cloud SQL antes de ativar o PITR, perde os registos de gravação antecipada que permitem a operacionalidade do PITR.

Para instâncias com a chave de encriptação gerida pelo cliente (CMEK) ativada, os registos de escrita antecipada são encriptados com a versão mais recente da CMEK. Para fazer um restauro, todas as versões da chave que foram as mais recentes durante o número de dias que configurou para o parâmetro retained-transaction-log-days devem estar disponíveis.

Para instâncias com registos de gravação antecipada armazenados no Cloud Storage, os registos são armazenados na mesma região que a instância principal. Este armazenamento de registos (até 35 dias para a edição Cloud SQL Enterprise Plus e sete dias para a edição Cloud SQL Enterprise, o comprimento máximo para PITR) não gera custos adicionais por instância.

Registos e utilização do disco

Se a sua instância tiver a PITR ativada e se o tamanho dos registos de gravação antecipada no disco estiver a causar um problema na sua instância:

  • Pode mudar a localização de armazenamento dos registos usados para PITR do disco para o Cloud Storage sem tempo de inatividade através da CLI gcloud ou da API Cloud SQL Admin.

  • Pode atualizar a sua instância para a edição Cloud SQL Enterprise Plus.

  • Pode aumentar o tamanho do armazenamento da instância, mas o aumento do tamanho do registo de transações antecipadas na utilização do disco pode ser temporário.

  • Recomendamos que ative o aumento automático do armazenamento para evitar problemas de armazenamento inesperados. Esta recomendação aplica-se apenas se a sua instância tiver a PITR ativada e os registos estiverem armazenados no disco.

  • Pode desativar a PITR se quiser eliminar registos e recuperar armazenamento. A diminuição dos registos de gravação antecipada usados não reduz o tamanho do disco aprovisionado para a instância.

  • Os registos são eliminados uma vez por dia e não de forma contínua. A definição da retenção de registos para dois dias significa que são retidos, pelo menos, dois dias de registos e, no máximo, três dias de registos. Recomendamos que defina o número de cópias de segurança como um valor superior ao número de dias de retenção de registos.

    Por exemplo, se especificar 7 para o valor do parâmetro transactionLogRetentionDays, para o parâmetro backupRetentionSettings, defina o número de retainedBackups como 8.

Ative a PITR

Quando cria uma nova instância na Google Cloud consola, as opções Cópias de segurança automáticas e 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 ficheiro 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 as correções necessárias à configuração.

  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:

Efetue a PITR numa instância indisponível

Consola

Recomendamos que recupere uma instância que não está disponível para uma zona diferente pelos seguintes motivos:

  • A zona na qual a instância está configurada não está acessível. Esta instância tem um estado FAILED.
  • A instância está a ser alvo de manutenção. Esta instância tem um estado MAINTENANCE.

Para recuperar uma instância indisponível, conclua os seguintes passos:

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

    Aceda a Instâncias do Cloud SQL

  2. Encontre a linha da instância a clonar.
  3. Na coluna Ações, clique no menu Mais ações.
  4. Clique em Criar clone.
  5. Na página Criar um clone, conclua as seguintes ações:
    1. No campo ID da instância, atualize o ID da instância, se necessário.
    2. Clique em Clonar a partir de um ponto anterior no tempo.
    3. No campo Ponto no tempo, selecione uma data e uma hora a partir das quais quer clonar os dados. Esta ação recupera o estado da instância a partir desse momento.
    4. Clique em Criar clone.
  6. Enquanto o clone é inicializado, regressa à página de listagem de instâncias.

gcloud

Pode querer recuperar uma instância que não está disponível para uma zona diferente porque a zona na qual a instância está configurada não está acessível.

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--point-in-time DATE_AND_TIME_STAMP \
--preferred-zone ZONE_NAME \
--preferred-secondary-zone SECONDARY_ZONE_NAME

O utilizador ou a conta de serviço que está a executar o comando gcloud sql instances clone tem de ter a autorização cloudsql.instances.clone. Para mais informações sobre as autorizações necessárias para executar comandos da CLI gcloud, consulte o artigo Autorizações do Cloud SQL.

REST v1

Pode querer recuperar uma instância que não está disponível para uma zona diferente porque a zona na qual a instância está configurada não está acessível.

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

  • PROJECT_ID: o ID do projeto.
  • SOURCE_INSTANCE_NAME: o nome da instância da origem.
  • TARGET_INSTANCE_NAME: o nome da instância de destino (clonada).
  • DATE_AND_TIME_STAMP: uma indicação de data/hora para a instância de origem no fuso horário UTC e no formato RFC 3339 (por exemplo,
    2012-11-15T16:19:00.094Z).
  • ZONE_NAME: opcional. O nome da zona principal da instância de destino. Isto é usado para especificar uma zona principal diferente para a instância do Cloud SQL que quer clonar. Para uma instância regional, esta zona substitui a zona principal, mas a zona secundária permanece igual à da instância.
  • SECONDARY_ZONE_NAME: opcional. O nome da zona secundária para a instância de destino. Isto é usado para especificar uma zona secundária diferente para a instância regional do Cloud SQL que quer clonar.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Corpo JSON do pedido:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_NAME",
    "pointInTime": "DATE_AND_TIME_STAMP",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}

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

Deve receber uma resposta JSON semelhante à seguinte:

O utilizador ou a conta de serviço que está a usar o método da API instances.clone tem de ter a autorização cloudsql.instances.clone. Para mais informações sobre as autorizações necessárias para usar métodos da API, consulte o artigo Autorizações do Cloud SQL.

REST v1beta4

Pode querer recuperar uma instância que não está disponível para uma zona diferente porque a zona na qual a instância está configurada não está acessível.

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

  • PROJECT_ID: o ID do projeto.
  • SOURCE_INSTANCE_NAME: o nome da instância da origem.
  • TARGET_INSTANCE_NAME: o nome da instância de destino (clonada).
  • DATE_AND_TIME_STAMP: uma indicação de data/hora da instância de origem no fuso horário UTC e no formato RFC 3339 (por exemplo,
    2012-11-15T16:19:00.094Z).
  • ZONE_NAME: opcional. O nome da zona principal da instância de destino. Isto é usado para especificar uma zona principal diferente para a instância do Cloud SQL que quer clonar. Para uma instância regional, esta zona substitui a zona principal, mas a zona secundária permanece igual à da instância.
  • SECONDARY_ZONE_NAME: opcional. O nome da zona secundária para a instância de destino. Isto é usado para especificar uma zona secundária diferente para a instância regional do Cloud SQL que quer clonar.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Corpo JSON do pedido:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_NAME",
    "pointInTime": "DATE_AND_TIME_STAMP",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}

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

Deve receber uma resposta JSON semelhante à seguinte:

O utilizador ou a conta de serviço que está a usar o método da API instances.clone tem de ter a autorização cloudsql.instances.clone. Para mais informações sobre as autorizações necessárias para usar métodos da API, consulte o artigo Autorizações do Cloud SQL.

Se tentar criar um clone de PITR num momento posterior à hora recuperável mais recente, é apresentada a seguinte mensagem de erro:

The timestamp for point-in-time recovery is after the latest recovery time of
Timestamp of latest recovery time. Clone the instance with a time
that's earlier than this recovery time.

Obtenha o tempo de recuperação mais recente

Para uma instância disponível, pode executar a PITR até à hora mais recente. Se a instância não estiver disponível e os registos da instância estiverem armazenados no Cloud Storage, pode obter a hora de recuperação mais recente e executar a PITR até essa hora. Em ambos os casos, pode restaurar a instância para uma zona principal ou secundária diferente fornecendo valores para as zonas preferenciais.

gcloud

Obtenha a hora mais recente até à qual pode recuperar uma instância do Cloud SQL que não esteja disponível.

Substitua INSTANCE_NAME pelo nome da instância que está a consultar.

gcloud sql instances get-latest-recovery-time INSTANCE_NAME

REST v1

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

  • PROJECT_ID: o ID do projeto
  • INSTANCE_NAME: o nome da instância para a qual está a consultar o tempo de recuperação mais recente

Método HTTP e URL:

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

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

Deve receber uma resposta JSON semelhante à seguinte:

{
  "kind": "sql#getLatestRecoveryTime",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

REST v1beta4

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

  • PROJECT_ID: o ID do projeto
  • INSTANCE_NAME: o nome da instância para a qual está a consultar o tempo de recuperação mais recente

Método HTTP e URL:

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

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

Deve receber uma resposta JSON semelhante à seguinte:

{
  "kind": "sql#getLatestRecoveryTime",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

Realize 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 de mais ações Ícone Mais ações. para a instância que quer recuperar e clique em Criar clone.
  3. Opcionalmente, na página Criar um clone, atualize o ID do novo clone.
  4. Selecione Clonar a partir de um ponto anterior no tempo.
  5. Introduza uma hora de PITR.
  6. Clique em Criar clone.

gcloud

Crie um clone através da PITR.

Substitua o seguinte:

  • SOURCE_INSTANCE_NAME - Nome da instância a partir da qual está a fazer a restauração.
  • NEW_INSTANCE_NAME: nome do clone.
  • TIMESTAMP: fuso horário UTC da instância de origem no formato RFC 3339. Por exemplo, 2012-11-15T16:19:00.094Z.
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time 'TIMESTAMP'

REST v1

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

  • project-id: o ID do projeto
  • target-instance-id: o ID da instância de destino
  • source-instance-id: o ID da instância de origem
  • restore-timestamp O ponto no tempo até ao qual restaurar

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

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
  • target-instance-id: o ID da instância de destino
  • source-instance-id: o ID da instância de origem
  • restore-timestamp O ponto no tempo até ao qual restaurar

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

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

Deve receber uma resposta JSON semelhante à seguinte:

Realize a PITR através do cofre de cópias de segurança

Se a sua instância do Cloud SQL estiver ativada para usar cópias de segurança melhoradas, pode fazer uma recuperação num ponto específico no tempo para a sua instância através do cofre de cópias de segurança.

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 que quer recuperar e clique em Criar clone.

  3. Selecione Clonar a partir de um ponto anterior no tempo.

  4. Introduza uma hora de PITR.

  5. Clique em Criar clone.

gcloud

Para fazer uma PITR numa instância a partir do cofre de cópias de segurança, tem de encontrar o data-source da cópia de segurança mais próxima da hora em que quer fazer a PITR. Para encontrar a cópia de segurança, consulte o artigo Liste todas as cópias de segurança no cofre de cópias de segurança de uma instância. Depois de identificar a cópia de segurança, execute o seguinte comando para realizar a PITR:

gcloud sql instances point-in-time-restore DATA_SOURCE
PITR_TIMESTAMP
--project=TARGET_PROJECT

Substitua o seguinte:

  • DATA_SOURCE: o caminho do data-source para a cópia de segurança mais próxima da data/hora da PITR para a qual quer fazer a recuperação.
  • PITR_TIMESTAMP: a data/hora UTC do registo PITR da instância de origem para o qual quer restaurar a instância, no formato RFC 3339. Por exemplo, 2012-11-15T16:19:00.094Z.
  • TARGET_PROJECT: o ID do projeto da sua instância do Cloud SQL.

REST v1

REST v1beta4

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:

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 Cloud SQL Enterprise para a edição Cloud SQL Enterprise Plus, 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 possíveis passos seguintes.

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:

Resolver problemas

Problema Resolução de problemas

argument --point-in-time: Failed to parse date/time:
Unknown string format: 2021-0928T30:54:03.094;
received: 2021-0928T30:54:03.094Z

OU

Invalid value at 'body.clone_context.point_in_time'
(type.googleapis.com/google.protobuf.Timestamp), Field 'pointInTime',
Invalid time format: Failed to parse input,

A data/hora que indicou é inválida.

HTTP Error 400: Successful backup required for carrying out the operation was not found.

OU

Successful backup required for carrying out the operation was not found. or Time where no backups can be found.

A data/hora que indicou corresponde a um momento em que não foi possível encontrar cópias de segurança nem coordenadas binlog.

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 de gravação antecipada 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 verificar 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?