Fazer uma recuperação pontual (PITR)

É possível usar a recuperação pontual (PITR) para restaurar as instâncias principais do Cloud SQL, estejam elas ativas ou excluídas. Com a PITR, é possível restaurar a instância para um momento específico. Para uma instância excluída, é possível restaurar a instância para um ponto específico no tempo em uma instância nova ou atual.

O Cloud SQL oferece as seguintes opções para restaurar sua instância usando a PITR:

Para executar uma PITR em uma instância indisponível ou excluída, encontre o tempo de recuperação mais recente e mais antigo.

Executar uma PITR

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Abra o menu "Mais ações" Ícone mais ações. para a instância a ser recuperada e clique em Criar clone.
  3. Na página Criar um clone, é possível atualizar o ID do novo clone.
  4. Selecione Clonar de um momento anterior.
  5. Insira um horário de PITR.
  6. Selecione Todos os bancos de dados ou especifique um nome de banco de dados.
    Se você especificar um nome de banco de dados, apenas um poderá ser selecionado. Por padrão, a PITR é para todos os bancos de dados.
  7. Clique em Criar clone.

gcloud

Criar um clone usando a PITR.

Substitua:

  • SOURCE_INSTANCE_NAME: nome da instância de que você está restaurando;
  • NEW_INSTANCE_NAME: nome do clone;
  • TIMESTAMP: fuso horário UTC para a 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 os dados da solicitação, 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 momento em que a restauração será interrompida.

Na solicitação JSON, você tem a opção de especificar até um nome de banco de dados específico como o seguinte: "databaseNames": "my-database"

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

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

Você vai receber uma resposta JSON semelhante a esta:

REST v1beta4

Antes de usar os dados da solicitação, faça as seguintes substituições:

  • project-id: o ID do projeto
  • target-instance-id: o ID da instância de destino
  • source-instance-id: o ID da instância de origem
  • restore-timestamp: o momento em que a restauração será interrompida.

Na solicitação JSON, você tem a opção de especificar até um nome de banco de dados específico como o seguinte: "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 da solicitação:

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

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

Você vai receber uma resposta JSON semelhante a esta:

Executar uma PITR usando o backup vault

Se a instância do Cloud SQL estiver ativada para usar backups avançados, será possível realizar a recuperação pontual da instância usando o cofre de backup.

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Abra o menu "Mais ações" Ícone mais ações. para a instância a ser recuperada e clique em Criar clone.

  3. Selecione Clonar de um momento anterior.

  4. Insira um horário de PITR.

  5. Clique em Criar clone.

gcloud

Para realizar uma PITR em uma instância do cofre de backup, encontre o data-source do backup mais próximo do horário em que você quer realizar a PITR. Para encontrar o backup, consulte Listar todos os backups no cofre de backup de uma instância. Depois de identificar o backup, execute o seguinte comando para fazer a PITR:

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

Substitua:

  • DATA_SOURCE: o caminho do data-source para o backup mais próximo do carimbo de data/hora da PITR que você quer recuperar.
  • PITR_TIMESTAMP: o carimbo de data/hora UTC do registro de PITR da instância de origem que você quer restaurar, no formato RFC 3339. Por exemplo, 2012-11-15T16:19:00.094Z.
  • TARGET_PROJECT: o ID do projeto da instância do Cloud SQL.

REST v1

REST v1beta4

Executar PITR em uma instância excluída

Para usar a PITR e restaurar uma instância excluída, você precisa:

  • o carimbo de data/hora da PITR (timestamp) em que você quer restaurar a instância
  • o nome da instância de destino
  • o horário em que a instância de origem foi excluída (source-instance-deletion-time)

Você pode usar PITR em uma instância excluída usando apenas CLI gcloud ou a API do Cloud SQL. Para mais informações, consulte Restaurar uma instância excluída usando uma PITR.

gcloud

Encontrar sua janela de PITR

Para encontrar a janela de PITR da instância excluída, extraia o horário de recuperação mais antigo e mais recente da instância. Você pode selecionar um carimbo de data/hora a qualquer momento nessa janela para fazer uma PITR.

Encontrar o horário de exclusão da instância de origem e os dias de retenção de registros

O source-instance-deletion-time e o log-retention-days da instância excluída são armazenados com os backups retidos após a exclusão. Para encontrar esses valores da sua instância excluída, consulte Listar backups retidos.

Restaurar usando uma PITR

Para restaurar a instância excluída usando 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:

  • SOURCE_INSTANCE_NAME: o nome da instância de origem que você quer restaurar.
  • NEW_INSTANCE_NAME: o nome da nova instância .
  • PITR_TIMESTAMP: o carimbo de data/hora UTC do registro de PITR da instância de origem que você quer restaurar, no formato RFC 3339. Por exemplo, 2012-11-15T16:19:00.094Z.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP: o carimbo de data/hora UTC do momento em que a instância de origem foi excluída, no formato RFC 3339. Por exemplo, 2012-11-15T16:19:00.094Z.

REST v1

Encontrar sua janela de PITR

Para encontrar a janela de PITR da instância excluída, extraia o horário de recuperação mais antigo e mais recente da instância. Você pode selecionar um carimbo de data/hora a qualquer momento nessa janela para fazer uma PITR.

Encontrar o horário de exclusão da instância de origem e os dias de retenção de registros

O source-instance-deletion-time e o log-retention-days da instância excluída são armazenados com os backups retidos após a exclusão. Para encontrar esses valores da sua instância excluída, consulte Listar backups retidos.

Restaurar usando uma PITR

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • 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: o horário de exclusão da instância de origem
  • restore-timestamp: o momento em que você 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 da solicitação:

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

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

Você vai receber uma resposta JSON semelhante a esta:

REST v1beta4

Encontrar sua janela de PITR

Para encontrar a janela de PITR da instância excluída, extraia o horário de recuperação mais antigo e mais recente da instância. Você pode selecionar qualquer carimbo de data/hora nessa janela para realizar a PITR.

Encontrar o horário de exclusão da instância de origem e os dias de retenção de registros

O source-instance-deletion-time e o log-retention-days da instância excluída são armazenados com os backups retidos da instância após a exclusão. Para encontrar esses valores da sua instância excluída, consulte Listar backups retidos.

Restaurar usando a PITR

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • 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: o horário de exclusão da instância de origem
  • restore-timestamp: o momento em que você quer restaurar a instância

Na solicitação JSON, você tem a opção de especificar até um nome de banco de dados específico como o seguinte: "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 da solicitação:

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

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

Você vai receber uma resposta JSON semelhante a esta:

Conferir o tempo de recuperação mais antigo e mais recente

Para uma instância disponível, é possível executar uma PITR para qualquer carimbo de data/hora na janela de PITR da instância. A janela da PITR começa no horário de recuperação mais antigo e termina no mais recente. Se a instância não estiver disponível e os registros dela estiverem armazenados no Cloud Storage, ou se a instância foi excluída e tinha a retenção de PITR ativada, recupere o tempo de recuperação mais antigo e mais recente e execute a PITR para qualquer carimbo de data/hora nessa janela. Em todos os casos, é possível restaurar a instância em uma zona principal ou secundária diferente fornecendo valores para as zonas preferenciais.

gcloud

Instância indisponível

Para conferir o momento mais antigo e mais recente em que é possível recuperar uma instância do Cloud SQL que não está disponível, execute o seguinte comando:

gcloud sql instances get-latest-recovery-time INSTANCE_NAME

Substitua:

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

Instância excluída

Para conferir o momento mais antigo e mais recente em que é possível recuperar uma instância excluída 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:

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

REST v1

Instância indisponível

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto;
  • INSTANCE_NAME: o nome da instância que você está consultando para saber 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 a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Instância excluída

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto;
  • INSTANCE_NAME: o nome da instância de origem que você está consultando para saber o tempo de recuperação mais recente
  • SOURCE_INSTANCE_DELETION_TIME: o horário em que a instância de origem foi excluída.

Método HTTP e URL:

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

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

Você receberá uma resposta JSON semelhante a esta:

{
  "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 os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto;
  • INSTANCE_NAME: o nome da instância que você está consultando para saber 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 a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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

Instância excluída

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto;
  • INSTANCE_NAME: o nome da instância de origem que você está consultando para saber o tempo de recuperação mais recente
  • SOURCE_INSTANCE_DELETION_TIME: o horário em que a instância de origem foi excluída.

Método HTTP e URL:

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

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

Você receberá uma resposta JSON semelhante a esta:

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

Resolver problemas

Problema Soluçã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,

O carimbo de data/hora fornecido é inválido.

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.

O carimbo de data/hora que você forneceu refere-se a um momento em que não foram encontrados backups ou coordenadas binlog.

A seguir