Usar recuperação pontual (PITR)

Nesta página, descrevemos como usar a recuperação pontual (PITR, na sigla em inglês) para restaurar a instância principal do Cloud SQL.

Para saber mais sobre a PITR, consulte Recuperação pontual (PITR, na sigla em inglês):

Por padrão, a PITR é ativada quando você cria uma instância do Cloud SQL edição Enterprise Plus, independentemente se você criar a instância usando o console do Google Cloud, a gcloud CLI, o Terraform ou a API Cloud SQL Admin.

Se você criar uma instância do Cloud SQL edição Enterprise no console do Google Cloud, a PITR será ativada por padrão. Caso contrário, se você criar a instância usando a gcloud CLI, o Terraform ou a API Cloud SQL Admin, será necessário ativar a PITR manualmente.

Armazenamento de registros para PITR

O Cloud SQL usa o arquivamento de registro prévio de escrita (WAL) para PITR.

Em 9 de janeiro de 2023, lançamos o armazenamento de registros prévios de escrita para PITR no Cloud Storage. Desde este lançamento, estas condições se aplicam:

  • Todas as instâncias da edição Cloud SQL Enterprise Plus armazenam os registros prévios de escrita no Cloud Storage. Apenas as instâncias da edição Cloud SQL Enterprise Plus que você fez upgrade da edição Cloud SQL Enterprise e ativou a PITR antes de 9 de janeiro de 2023 continuam armazenando registros no disco.
  • As instâncias da edição Cloud SQL Enterprise criadas com a PITR ativada antes de 9 de janeiro de 2023 continuam armazenando os registros no disco.
  • Se você fizer upgrade de uma instância do Cloud SQL Enterprise após 15 de agosto de 2024 que armazena registros de transação para PITR em disco para a edição Cloud SQL Enterprise Plus, o processo de upgrade vai mudar o local de armazenamento dos registros de transações usados para a PITR. para o Cloud Storage. Para mais informações, consulte Fazer upgrade de uma instância para o Cloud SQL Enterprise Plus usando o upgrade no local.
  • Todas as instâncias da edição Cloud SQL Enterprise criadas com a PITR ativada após 9 de janeiro de 2023 armazenam registros no Cloud Storage.

Para instâncias que armazenam registros prévios de escrita apenas no disco, é possível mudar o local de armazenamento dos registros de transação usados para PITR do disco para o Cloud Storage usando a gcloud CLI ou a API Cloud SQL Admin sem incorrer em tempo de inatividade. Para mais informações, consulte Mudar o armazenamento de registros de transações para o Cloud Storage.

Período de armazenamento de registros

Para ver se uma instância armazena os registros usados para a PITR no Cloud Storage, use Verificar o local de armazenamento dos registros de transações usados para a PITR.

Depois de usar um cliente PostgreSQL, como psql ou pgAdmin, para se conectar a um banco de dados da instância, execute o comando show archive_command: Se algum registro prévio de escrita for arquivado no Cloud Storage, você verá -async_archive -remote_storage.

Todas as outras instâncias atuais com a PITR ativada continuam com os registros armazenados no disco.

Se os registros estiverem armazenados no Cloud Storage, serão enviados pelo Cloud SQL a cada cinco minutos ou menos. Como resultado, se uma instância do Cloud SQL estiver disponível, ela poderá ser recuperada para o horário mais recente. No entanto, se a instância não estiver disponível, o objetivo do ponto de recuperação normalmente será de cinco minutos ou menos. Use a CLI gcloud ou a API Admin para verificar o momento mais recente em que é possível restaurar a instância e executar a recuperação para esse momento.

Os registros de gravação antecipada usados com a PITR são excluídos automaticamente com o backup automático associado, o que geralmente acontece após o valor definido para transactionLogRetentionDays for atendida. Esse é o número de dias de registros de transação que o Cloud SQL mantém para a PITR. Para a edição Cloud SQL Enterprise Plus, o número de dias de registros de transação retidos pode ser definido de 1 a 35 e, para a edição Cloud SQL Enterprise, o valor pode ser definido de 1 a 7.

Ao restaurar um backup em uma instância do Cloud SQL antes de ativar a PITR, você perde os registros de gravação antecipada que permitem a operabilidade da PITR.

Para instâncias ativadas por chave de criptografia gerenciada pelo cliente (CMEK, na sigla em inglês), os registros de gravação antecipada são criptografados usando a versão mais recente da CMEK. Para realizar uma restauração, todas as versões da chave que foram as mais recentes para o número de dias que você configurou para o parâmetro retained-transaction-log-days estarão disponíveis.

Para as instâncias que têm registros de gravação antecipada no Cloud Storage, os registros são armazenados na mesma região da instância principal. Esse armazenamento de registros (até 35 dias para o Cloud SQL Enterprise Plus e sete dias para o Cloud SQL Enterprise, a duração máxima para a PITR) não gera custo extra por instância.

Registros e uso do disco

Se a instância tiver a PITR ativada e o tamanho dos registros prévios de escrita no disco estiver causando um problema na instância:

  • É possível mudar o local de armazenamento dos registros usados para PITR do disco para o Cloud Storage sem tempo de inatividade usando a gcloud CLI ou a API Cloud SQL Admin.

  • É possível fazer upgrade da sua instância para o Cloud SQL Enterprise Plus.

  • É possível aumentar o tamanho do armazenamento da instância, mas o aumento no tamanho do registro write-ahead no uso do disco pode ser temporário.

  • Recomendamos que você ative o aumento automático de armazenamento para evitar problemas de armazenamento inesperados. Essa recomendação se aplica somente se a instância tiver a PITR ativada e seus registros estiverem armazenados no disco.

  • Desative a PITR se quiser excluir registros e recuperar o armazenamento. A redução dos registros de gravação antecipada usados não diminui o tamanho do disco provisionado para a instância.

  • Os registros são limpados uma vez por dia, e não continuamente. Configurar a retenção de registros para dois dias significa que no mínimo dois dias de registros, e no máximo três, serão mantidos. Recomendamos definir o número de backups para um a mais do que os dias de retenção de registro.

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

Ativar a PITR

Quando você cria uma instância no Console do Google Cloud, as opções Backups automatizados e Ativar a recuperação pontual são ativadas automaticamente.

O procedimento a seguir ativa a PITR em uma instância principal existente.

Console

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

    Acesse "Instâncias do Cloud SQL"

  2. Abra o menu de mais ações Ícone mais ações. da instância em que você quer ativar a PITR e clique em Editar.
  3. Em Personalizar sua instância, expanda a seção Proteção de dados.
  4. Marque a caixa de seleção Ativar recuperação pontual.
  5. No campo Dias de registros, digite o número de dias em que os registros serão retidos, de 1 a 35 para a edição do Cloud SQL Enterprise Plus ou de 1 a 7 para a edição do Cloud SQL Enterprise.
  6. Clique em Salvar.

gcloud

  1. Exiba a visão geral da instância:
    gcloud sql instances describe INSTANCE_NAME
  2. Se você vir enabled: false na seção backupConfiguration, ative os backups programados:
    gcloud sql instances patch INSTANCE_NAME \
    --backup-start-time=HH:MM

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

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

    Se você estiver ativando a PITR em uma instância principal, também poderá configurar o número de dias para manter os registros de transações adicionando o seguinte parâmetro:

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

    Quando a operação é realizada, é exibido pointInTimeRecoveryEnabled: true na seção backupConfiguration.

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 em um projeto do Google Cloud, conclua as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.

    Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Preparar o diretório

Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.

  1. No Cloud Shell, crie um diretório e um novo arquivo dentro dele. O nome do arquivo precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

    Copie o exemplo de código no main.tf recém-criado.

    Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

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

    terraform init -upgrade

Aplique as alterações

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

    Faça as correções necessárias na configuração.

  2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  3. Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.

Excluir as alterações

Para excluir as mudanças, faça o seguinte:

  1. Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo yes no prompt:

    terraform destroy

REST v1

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

  • PROJECT_ID: o ID ou número do projeto do Google Cloud que contém a instância
  • INSTANCE_NAME: o nome da instância primária ou de réplica de leitura que você está configurando 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 da solicitação:

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

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

Você 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 ou número do projeto do Google Cloud que contém a instância
  • INSTANCE_NAME: o nome da instância primária ou de réplica de leitura que você está configurando 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 da solicitação:

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

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

Você receberá uma resposta JSON semelhante a esta:

Executar PITR em uma instância indisponível

Console

Talvez você queira recuperar uma instância que não está disponível em uma zona diferente por estes motivos:

  • A zona em que a instância está configurada não é acessível. Esta instância tem um estado FAILED.
  • A instância está em manutenção. Esta instância tem um estado MAINTENANCE.

Para recuperar uma instância indisponível, siga estas etapas:

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

    Acesse "Instâncias do Cloud SQL"

  2. Encontre a linha da instância a ser clonada.
  3. Na coluna Ações, clique no menu Mais ações.
  4. Clique em Criar clone.
  5. Na página Criar um clone, faça o seguinte:
    1. No campo ID da instância, atualize o ID da instância, se necessário.
    2. Clique em Clone de um momento anterior.
    3. No campo Ponto no tempo, selecione a data e a hora para clonar os dados. Isso recupera o estado da instância a partir desse momento.
    4. Clique em Criar clone.
  6. Enquanto o clone é inicializado, você retorna à página de listagem de instâncias.

gcloud

Talvez você queira recuperar uma instância que não está disponível para uma zona diferente porque a zona em que 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

A conta de serviço ou o usuário que está executando o comando gcloud sql instances clone precisa ter a permissão cloudsql.instances.clone. Para mais informações sobre as permissões necessárias para executar os comandos da CLI gcloud, consulte Permissões do Cloud SQL.

REST v1

Talvez você queira recuperar uma instância que não está disponível para uma zona diferente porque a zona em que a instância está configurada não está acessível.

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

  • PROJECT_ID: o ID do projeto.
  • SOURCE_INSTANCE_NAME: o nome da instância de origem.
  • TARGET_INSTANCE_NAME: o nome da instância de destino (clonada).
  • DATE_AND_TIME_STAMP: um carimbo de data e 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. Isso é usado para especificar uma zona principal diferente para a instância do Cloud SQL que você quer clonar. Para uma instância regional, esta zona substitui a zona principal, mas a zona secundária permanece igual à instância.
  • SECONDARY_ZONE_NAME: opcional. O nome da zona secundária da instância de destino. Isso é usado para especificar uma zona secundária diferente para a instância regional do Cloud SQL que você quer clonar.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

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

Você receberá uma resposta JSON semelhante a esta:

O usuário ou a conta de serviço que está usando o método instances.clone da API precisa ter a permissão cloudsql.instances.clone. Para mais informações sobre as permissões necessárias para usar os métodos da API, consulte Permissões do Cloud SQL.

REST v1beta4

Talvez você queira recuperar uma instância que não está disponível para uma zona diferente porque a zona em que a instância está configurada não está acessível.

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

  • PROJECT_ID: o ID do projeto.
  • SOURCE_INSTANCE_NAME: o nome da instância de origem.
  • TARGET_INSTANCE_NAME: o nome da instância de destino (clonada).
  • DATE_AND_TIME_STAMP: um carimbo de data e 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. Isso é usado para especificar uma zona principal diferente para a instância do Cloud SQL que você quer clonar. Para uma instância regional, esta zona substitui a zona principal, mas a zona secundária permanece igual à instância.
  • SECONDARY_ZONE_NAME: opcional. O nome da zona secundária da instância de destino. Isso é usado para especificar uma zona secundária diferente para a instância regional do Cloud SQL que você quer clonar.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

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

Você receberá uma resposta JSON semelhante a esta:

O usuário ou a conta de serviço que está usando o método instances.clone da API precisa ter a permissão cloudsql.instances.clone. Para mais informações sobre as permissões necessárias para usar os métodos da API, consulte Permissões do Cloud SQL.

Confira o tempo de recuperação mais recente

Para uma instância disponível, execute a PITR para o horário mais recente. Se a instância não estiver disponível e os registros da instância estiverem armazenados no Cloud Storage, recupere o tempo de recuperação mais recente e execute a PITR para esse momento. Em ambos os casos, é possível restaurar a instância em uma zona principal ou secundária diferente fornecendo valores para as zonas preferenciais.

gcloud

Confira o momento mais recente em que é possível recuperar uma instância do Cloud SQL que não está disponível.

Substitua INSTANCE_NAME pelo nome da instância que você está consultando.

gcloud sql instances get-latest-recovery-time INSTANCE_NAME

REST v1

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

REST v1beta4

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

Execute o PITR

Console

  1. No console do 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. 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.

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ê 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.

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ê receberá uma resposta JSON semelhante a esta:

Desativar PITR

Console

  1. No console do 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 desativada e selecione Editar.
  3. Em Personalizar sua instância, expanda a seção Proteção de dados.
  4. Desmarque a opção Ativar recuperação pontual.
  5. Clique em Salvar.

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

    Quando a operação é realizada, é exibido pointInTimeRecoveryEnabled: false na seção backupConfiguration.

REST v1

Antes de usar os dados da solicitação, 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 da solicitação:

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

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

Você 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
  • 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 da solicitação:

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

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

Você receberá uma resposta JSON semelhante a esta:

Verificar o local de armazenamento dos registros de transações usados para a PITR

É possível verificar onde sua instância do Cloud SQL está armazenando os registros de transações usados para a PITR.

gcloud

Para determinar se a instância armazena registros para a 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.

Também é possível verificar o local de armazenamento dos registros de transações de várias instâncias no mesmo projeto. Para determinar o local 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 registros de transações da PITR são armazenados na instância. Os estados de armazenamento de registros de transações possíveis são estes:

  • DISK: a instância armazena os registros de transação usados para a PITR no disco. Se você fizer upgrade de uma instância do Cloud SQL Enterprise para o Cloud SQL Enterprise Plus, o processo de upgrade vai mudar o local de armazenamento dos registros automaticamente para o Cloud Storage. Para mais informações, consulte Fazer upgrade de uma instância para o Cloud SQL Enterprise Plus usando o upgrade no local. Você também pode mudar o local de armazenamento usando a gcloud CLI ou a API Cloud SQL Admin sem fazer upgrade da edição da instância e sem gerar inatividade. Para mais informações, consulte Mudar o armazenamento dos registros de transações para o Cloud Storage.
  • SWITCHING_TO_CLOUD_STORAGE: a instância está alternando o local de armazenamento dos registros de transação da PITR para o Cloud Storage.
  • SWITCHED_TO_CLOUD_STORAGE: a instância concluiu a mudança do local de armazenamento dos registros de transação PITR do disco para o Cloud Storage.
  • CLOUD_STORAGE: a instância armazena os registros de transações usados para a PITR no Cloud Storage.

Mudar o armazenamento dos registros de transações para o Cloud Storage

Se a instância armazenar os registros de transações usados para a PITR no disco, você poderá mudar o local de armazenamento para o Cloud Storage sem gerar inatividade. O processo geral de mudança do local de armazenamento leva aproximadamente o período de retenção do registro de transações (dias) para ser concluído. Assim que você iniciar a mudança, os registros de transações vão começar a ser acumulados no Cloud Storage. Durante a operação, é possível verificar o status do processo geral usando o comando em Verificar o local de armazenamento dos registros de transações usados para a PITR.

Depois que o processo geral de mudança para o Cloud Storage for concluído, o Cloud SQL vai usar registros de transação do Cloud Storage para a PITR.

gcloud

Para mudar o local de armazenamento para o Cloud Storage, use este comando:

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

Substitua INSTANCE_NAME pelo nome da instância. A instância precisa ser principal e não uma réplica. A resposta é semelhante a:

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 retornar um erro, consulte Solução de problemas de mudança para o Cloud Storage para saber as próximas etapas.

REST v1

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

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

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

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

Você receberá uma resposta JSON semelhante a esta:

Se a solicitação retornar um erro, consulte Solução de problemas de mudança para o Cloud Storage para saber as próximas etapas.

REST v1beta4

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

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

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

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

Você receberá uma resposta JSON semelhante a esta:

Se a solicitação retornar um erro, consulte Resolver problemas de mudança para o Cloud Storage para saber as próximas etapas.

Definir a retenção do registro de transações

Para definir o número de dias em que os registros de gravação antecipada serão guardados:

Console

  1. No console do 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 em que você quer definir o registro das transações e selecione Editar.
  3. Em Personalizar sua instância, expanda a seção Proteção de dados.
  4. Na seção Ativar recuperação pontual, expanda Opções avançadas.
  5. Digite o número de dias em que os registros serão retidos, de 1 a 35 para a edição do Cloud SQL Enterprise Plus ou de 1 a 7 para a edição do Cloud SQL Enterprise.
  6. Clique em Salvar.

gcloud

Edite a instância para definir o número de dias de retenção dos registros em tempo de gravação:

Substitua:

  • INSTANCE_NAME: o nome da instância em que você quer definir o registro de transações.
  • DAYS_TO_RETAIN: o número de dias de registros de transações a serem mantidos. Para o Cloud SQL edição Enterprise Plus, o intervalo válido é de 1 a 35 dias, com um padrão de 14 dias. Para o Cloud SQL edição Enterprise, o intervalo válido é de um a sete dias, com um padrão de sete dias.

    Se nenhum valor for especificado, o valor padrão será usado. Isso é válido apenas quando a PITR está ativada. A especificação de mais dias de registros 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 os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • INSTANCE_ID: o ID da instância
  • DAYS_TO_RETAIN: o número de dias de retenção dos registros de transação. Para o Cloud SQL Enterprise Plus, o intervalo válido é de 1 a 35 dias, com um padrão de 14 dias. Para o Cloud SQL Enterprise, o intervalo válido é de um a sete dias, com um padrão de sete dias.

    Se nenhum valor for especificado, o valor padrão será usado. Isso é válido apenas quando a PITR está ativada. A especificação de uma retenção de mais dias dos registros 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 da solicitação:

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

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

Você receberá uma resposta JSON semelhante a esta:

REST v1beta4

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

  • PROJECT_ID: o ID do projeto.
  • INSTANCE_ID: o ID da instância
  • DAYS_TO_RETAIN: o número de dias de retenção dos registros de transação. Para o Cloud SQL Enterprise Plus, o intervalo válido é de 1 a 35 dias, com um padrão de 14 dias. Para o Cloud SQL Enterprise, o intervalo válido é de um a sete dias, com um padrão de sete dias.

    Se nenhum valor for especificado, o valor padrão será usado. Isso é válido apenas quando a PITR está ativada. A especificação de uma retenção de mais dias dos registros 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 da solicitação:

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

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

Você receberá uma resposta JSON semelhante a esta:

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.

Resolver problemas com a mudança para o Cloud Storage

A tabela a seguir lista os possíveis erros que podem ser retornados com o código INVALID REQUEST ao mudar o local de armazenamento dos registros de transações do disco para o Cloud Storage.

Problema Solução de problemas
Switching the storage location of the transaction logs used for PITR is not supported for instances with database type %s. Verifique se você está executando o comando da gcloud CLI ou fazendo a solicitação da API em uma instância do Cloud SQL para MySQL ou do Cloud SQL para PostgreSQL. Não é possível mudar o local de armazenamento dos registros de transações usando a CLI gcloud ou a API Cloud SQL Admin no Cloud SQL para SQL Server.
PostgreSQL transactional logging is not enabled on this instance. O PostgreSQL usa o registro prévio de escrita como os registros de transação para recuperação pontual (PITR). Para oferecer suporte à PITR, o PostgreSQL exige que você ative a geração de registros prévios de escrita na instância. Para mais informações sobre como ativar o registro prévio de escrita, consulte Ativar a PITR.
This instance is already storing transaction logs used for PITR in Cloud Storage Para verificar o local de armazenamento dos registros de transações, execute o comando em Verificar o local de armazenamento dos registros de transações usados para a PITR.
The instance is already switching transaction logs used for PITR from disk to Cloud Storage.

Aguarde a conclusão da outra operação.

Para verificar o status da operação e o local de armazenamento dos registros de transações, execute o comando contido em Verificar o local de armazenamento dos registros de transações usados para a PITR.

A seguir