Faça uma recuperação pontual (PITR)

Pode usar a recuperação num determinado momento (PITR) para restaurar as suas instâncias primárias do Cloud SQL, quer a instância esteja ativa ou eliminada. A PITR permite-lhe restaurar a instância para um momento específico. Para uma instância eliminada, pode restaurar a instância para um ponto específico no tempo numa instância nova ou existente.

O Cloud SQL oferece as seguintes opções para restaurar a sua instância através do PITR:

Para realizar uma PITR numa instância indisponível ou eliminada, tem de encontrar o tempo de recuperação mais recente e mais antigo.

Faça uma 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 da 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 da 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 da 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:

Faça uma 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 de 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 de uma 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 através de um PITR

Para restaurar a instância eliminada através de uma 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 através de um 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 de origem
  • source-instance-deletion-time: a hora de eliminação da instância da 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 de origem
  • source-instance-deletion-time: a hora de eliminação da instância da 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:

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

Para uma instância disponível, pode executar uma PITR para qualquer data/hora no período de 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"
}

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?