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, a PITR é desativada por predefinição, independentemente do método usado para a criação. Neste caso, se quiser ativar a funcionalidade, tem de o fazer manualmente.

Armazenamento de registos para PITR

A 31 de maio de 2024, lançámos o armazenamento de registos de transações para PITR no Cloud Storage. Desde este lançamento, aplicam-se as seguintes condições:

  • As instâncias do Cloud SQL com PITR ativado criadas antes desta data costumavam armazenar registos de transações PITR no disco. Os registos de transações PITR para a maioria destas instâncias foram migrados para o Cloud Storage. Para validar a localização dos registos de uma instância específica, consulte o artigo Verifique a localização de armazenamento dos registos de transações usados para PITR.

  • Todas as instâncias do Cloud SQL criadas com a PITR ativada a partir desta data armazenam estes registos no Cloud Storage.

Os registos de transações são atualizados regularmente e usam espaço de armazenamento. O Cloud SQL elimina automaticamente os registos de transações com as respetivas cópias de segurança automáticas associadas. Isto acontece depois de o valor definido para o parâmetrotransactionLogRetentionDays ser atingido. Para mais informações acerca deste parâmetro, consulte o artigo Registos e utilização do disco.

Para instâncias que armazenam registos de transações apenas no disco, pode configurar o Cloud SQL para armazenar os registos no Cloud Storage desativando primeiro e, em seguida, reativando a PITR. Não é possível mover registos do Cloud Storage de volta para o disco.

Para garantir que os registos da sua instância são armazenados no Cloud Storage em vez de no disco, conclua as seguintes ações:

Registos e utilização do disco

Para instâncias com registos de transações 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.

O Cloud SQL gera registos de transações regularmente e estes registos usam espaço de armazenamento. O Cloud SQL elimina automaticamente os registos de transações com as respetivas cópias de segurança automáticas associadas. Isto acontece depois de o valor que definiu para o parâmetro transactionLogRetentionDays ser atingido. Este parâmetro especifica o número de dias que o Cloud SQL retém os registos de transações. Para a edição Cloud SQL Enterprise Plus, pode definir o número de dias de registos de transações retidos de 1 a 35 e, para a edição Cloud SQL Enterprise, pode definir este valor de 1 a 7.

Se não for definido um valor para este parâmetro, o período de retenção predefinido do registo de transações é de 14 dias para instâncias da edição Cloud SQL Enterprise Plus e de 7 dias para instâncias da edição Cloud SQL Enterprise. Para mais informações sobre como aplicar esta definição, consulte o artigo Defina a retenção do registo de transações.

Para saber a quantidade de disco que os registos de transações usam, verifique a métrica bytes_used_by_data_type para a instância. O valor do tipo de dados devolve o tamanho dos registos de transações no disco. Para instâncias que armazenam registos de transações usados para PITR no disco, o Cloud SQL elimina dados do disco diariamente para cumprir a definição de PITR.transactionLogRetentionDays Para mais informações, consulte o artigo Retenção de cópias de segurança automáticas.

Limitações

As seguintes limitações estão associadas à sua instância com a PITR ativada e ao tamanho dos registos de transações no disco, o que causa um problema para a sua instância:

  • Pode desativar a PITR e reativá-la para garantir que o Cloud SQL armazena registos no Cloud Storage na mesma região que a instância. No entanto, o Cloud SQL elimina todos os registos existentes, pelo que não pode executar uma operação de PITR antes da hora em que reativou a PITR.
  • Pode aumentar o tamanho do armazenamento da instância, mas o aumento do tamanho do registo de transações no disco pode ser temporário.
  • Para evitar problemas de armazenamento inesperados, recomendamos que ative os aumentos automáticos de armazenamento. Esta recomendação aplica-se apenas se a sua instância tiver a PITR ativada e os registos estiverem armazenados no disco.
  • Se quiser eliminar registos e recuperar armazenamento, pode desativar a PITR sem a reativar. No entanto, a diminuição do armazenamento usado 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. Definir a 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.

Para mais informações sobre a PITR, consulte o artigo Recuperação pontual (PITR).

Modelo de recuperação da base de dados para PITR

Se ativar a PITR numa instância, o Cloud SQL define automaticamente o modelo de recuperação das bases de dados existentes e subsequentes para o modelo de recuperação completo.

Para mais informações sobre os modelos de recuperação do SQL Server, consulte a documentação da Microsoft.

Ative a PITR

Quando cria uma nova instância na Google Cloud consola, a definição Cópias de segurança automatizadas é ativada 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.

Ative a PITR para a edição Cloud SQL Enterprise Plus

Use o seguinte exemplo de código do Terraform para criar uma instância da edição Enterprise Plus do Cloud SQL com a PITR ativada:
# Creates a SQL SERVER Enterprise Plus edition instance. Unless specified otherwise, PITR is enabled by default.
resource "google_sql_database_instance" "enterprise_plus" {
  name             = "sqlserver-enterprise-plus-instance-pitr"
  region           = "asia-northeast1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    backup_configuration {
      enabled = true
    }
  }
  # Setting the `deletion_protection` flag to true ensures you can't accidentally delete the instance
  # using Terraform. Setting the `deletion_protection_enabled` flag to true protects the instance at the
  # Google Cloud level.
  deletion_protection = false
}

Ative a PITR para a edição Enterprise do Cloud SQL

Use o seguinte exemplo de código do Terraform para criar uma instância da edição Enterprise do Cloud SQL com a PITR ativada:
# Creates a SQL SERVER Enterprise edition instance with PITR enabled. Unless specified otherwise,
# PITR is disabled by default.
resource "google_sql_database_instance" "enterprise" {
  name             = "sqlserver-enterprise-instance-pitr"
  region           = "asia-northeast1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier    = "db-custom-4-26624"
    edition = "ENTERPRISE"
    backup_configuration {
      enabled                        = true
      point_in_time_recovery_enabled = true
    }
  }
  # Setting the `deletion_protection` flag to true ensures you can't accidentally delete the instance
  # using Terraform. Setting the `deletion_protection_enabled` flag to true protects the instance at the
  # Google Cloud 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 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:

Obtenha o tempo de recuperação mais cedo e mais tarde

Para uma instância disponível, pode executar a PITR para qualquer data/hora no período PITR da instância. O período de PITR começa na hora de recuperação mais antiga e termina na hora de recuperação mais recente. Se a instância estiver indisponível e os registos da instância estiverem armazenados no Cloud Storage, ou se a instância tiver sido eliminada e tiver a retenção de PITR ativada, pode obter a hora de recuperação mais antiga e mais recente, e executar a PITR para qualquer data/hora nesse período. Em todos os casos, pode restaurar a instância para uma zona principal ou secundária diferente fornecendo valores para as zonas preferenciais.

gcloud

Instância indisponível

Para saber a hora mais antiga e mais recente até à qual pode recuperar uma instância do Cloud SQL que não esteja disponível, execute o seguinte comando:

gcloud sql instances get-latest-recovery-time INSTANCE_NAME

Substitua o seguinte:

  • INSTANCE_NAME: o nome da instância para a qual quer encontrar o tempo de recuperação mais recente.

Instância eliminada

Para saber a hora mais antiga e mais recente até à qual pode recuperar uma instância eliminada do Cloud SQL, execute o seguinte comando:

gcloud sql instances get-latest-recovery-time INSTANCE_NAME
--source-instance-deletion-time='SOURCE_INSTANCE_DELETION_TIMESTAMP'

Substitua o seguinte:

  • INSTANCE_NAME: o nome da instância para a qual quer encontrar o tempo de recuperação mais recente.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP: a indicação de tempo UTC para a hora em que a instância de origem foi eliminada, no formato RFC 3339. Por exemplo, 2012-11-15T16:19:00.094Z.

REST v1

Instância indisponível

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",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

Instância eliminada

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 de origem para a qual está a consultar o tempo de recuperação mais recente
  • SOURCE_INSTANCE_DELETION_TIME: a hora em que a instância de origem foi eliminada

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",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

REST v1beta4

Instância indisponível

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",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

Instância eliminada

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 de origem para a qual está a consultar o tempo de recuperação mais recente
  • SOURCE_INSTANCE_DELETION_TIME: a hora em que a instância de origem foi eliminada

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",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

Efetue 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. Selecione Todas as bases de dados ou especifique um nome de base de dados.
    Se especificar um nome de base de dados, só pode selecionar um. Por predefinição, a PITR destina-se a todas as bases de dados.
  7. 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

No pedido JSON, pode especificar opcionalmente até um nome de base de dados específico da seguinte forma: "databaseNames": "my-database"

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

No pedido JSON, pode especificar opcionalmente até um nome de base de dados específico da seguinte forma: "databaseNames": "my-database"

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

Realize a PITR numa instância eliminada

Para usar a PITR para restaurar uma instância eliminada, precisa do seguinte:

  • A data/hora da PITR (timestamp) para a qual quer restaurar a sua instância
  • O nome da instância de destino
  • A hora em que a instância da origem foi eliminada (source-instance-deletion-time)

Só pode usar a PITR numa instância eliminada através da CLI gcloud ou da API Cloud SQL. Para mais informações, consulte o artigo Restaure uma instância eliminada através da PITR.

gcloud

Encontre a sua janela PITR

Para encontrar o período de PITR da instância eliminada, obtenha a hora de recuperação mais antiga e mais recente da instância. Pode selecionar uma data/hora em qualquer altura nesta janela para fazer uma PITR.

Encontre a hora de eliminação da instância de origem e os dias de retenção dos registos

Os valores source-instance-deletion-time e log-retention-days da instância eliminada são armazenados com as cópias de segurança retidas da sua instância após a eliminação. Para encontrar estes valores para a sua instância eliminada, consulte o artigo Liste as cópias de segurança retidas.

Restaure com a PITR

Para restaurar a instância eliminada através da PITR, execute o seguinte comando:

gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time='PITR_TIMESTAMP' \
--source-instance-deletion-time=SOURCE_INSTANCE_DELETION_TIMESTAMP

Substitua o seguinte:

  • SOURCE_INSTANCE_NAME: o nome da instância de origem que quer restaurar.
  • NEW_INSTANCE_NAME: o nome da nova instância.
  • 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.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP: a indicação de tempo UTC para a hora em que a instância de origem foi eliminada, no formato RFC 3339. Por exemplo, 2012-11-15T16:19:00.094Z.

REST v1

Encontre a sua janela PITR

Para encontrar o período de PITR da instância eliminada, obtenha a hora de recuperação mais antiga e mais recente da instância. Pode selecionar uma data/hora em qualquer altura nesta janela para fazer uma PITR.

Encontre a hora de eliminação da instância de origem e os dias de retenção dos registos

Os valores source-instance-deletion-time e log-retention-days da instância eliminada são armazenados com as cópias de segurança retidas da sua instância após a eliminação. Para encontrar estes valores para a sua instância eliminada, consulte o artigo Liste as cópias de segurança retidas.

Restaure com a PITR

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 da origem
  • source-instance-deletion-time: a hora de eliminação da instância de origem
  • restore-timestamp o momento específico em que quer restaurar a instância

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",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

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

Deve receber uma resposta JSON semelhante à seguinte:

REST v1beta4

Encontre a sua janela PITR

Para encontrar o período de PITR da instância eliminada, obtenha a hora de recuperação mais antiga e mais recente da instância. Pode selecionar uma data/hora em qualquer altura nesta janela para fazer uma PITR.

Encontre a hora de eliminação da instância de origem e os dias de retenção dos registos

Os valores source-instance-deletion-time e log-retention-days da instância eliminada são armazenados com as cópias de segurança retidas da sua instância após a eliminação. Para encontrar estes valores para a sua instância eliminada, consulte o artigo Liste as cópias de segurança retidas.

Restaure com a PITR

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 da origem
  • source-instance-deletion-time: a hora de eliminação da instância de origem
  • restore-timestamp o momento específico em que quer restaurar a instância

No pedido JSON, pode especificar opcionalmente até um nome de base de dados específico da seguinte forma: "databaseNames": "my-database"

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",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

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:

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 SQLSERVER_2019_STANDARD  us-central-1   DISK
my_02 SQLSERVER_2019_STANDARD  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.
  • CLOUD_STORAGE: a instância armazena os registos de transações usados para PITR no Cloud Storage.

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

Para definir o número de dias para reter registos de transações:

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 transações.

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.

O que se segue?