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):
Se você criar uma instância da edição Cloud SQL Enterprise Plus, a PITR será ativada por padrão, independente do método usado para a criação. Se você quiser desativar o recurso, faça isso manualmente.
Se você criar uma instância do Cloud SQL edição Enterprise, a PITR será desativada por padrão, independente do método usado para a criação. Nesse caso, se você quiser ativar o recurso, faça isso manualmente.
Armazenamento de registros para PITR
Em 31 de maio de 2024, lançamos o armazenamento de registros de transação para PITR no Cloud Storage. Desde esse lançamento, estas condições são aplicáveis:As instâncias do Cloud SQL com PITR ativada criadas antes dessa data eram usadas para armazenar registros de transação da PITR no disco. Os registros de transação da PITR para a maioria dessas instâncias foram migrados para o Cloud Storage. Para verificar o local de um registro específico, consulte Verificar o local de armazenamento dos registros de transações usados para a PITR.
Todas as instâncias do Cloud SQL criadas com a PITR ativada a partir dessa data armazenam os registros no Cloud Storage.
Eles são atualizados regularmente e usam espaço de armazenamento. O Cloud SQL
exclui automaticamente os registros de transações com os backups automáticos associados.
Isso acontece depois que o valor definido para o parâmetro transactionLogRetentionDays
é atingido. Para mais informações sobre esse parâmetro, consulte
Registros e uso do disco.
Para instâncias que armazenam registros de transação apenas no disco, é possível configurar o Cloud SQL para armazenar os registros no Cloud Storage primeiro desativando e depois reativando a PITR. Não é possível mover registros do Cloud Storage de volta para o disco.
Para garantir que os registros da sua instância sejam armazenados no Cloud Storage em vez de no disco, siga estas etapas:
- Verifique se a instância armazena registros em disco ou no Cloud Storage.
- Verifique a arquitetura de rede da instância. Se a instância estiver na arquitetura de rede antiga, faça upgrade para a nova arquitetura de rede.
- Se o tamanho dos registros no disco estiver causando problemas de desempenho para sua instância, desative a PITR e reative-a.
Registros e uso do disco
Para as instâncias que têm registros de gravação armazenados 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.
O Cloud SQL gera registros de transação regularmente, e eles
usam espaço de armazenamento. O Cloud SQL exclui automaticamente os registros de transações com os backups automáticos associados. Isso acontece depois que
o valor definido para o parâmetro transactionLogRetentionDays
é atingido. Esse parâmetro especifica o número de dias em que o Cloud SQL retém os registros de transações. Para a edição Cloud SQL Enterprise Plus, é possível definir o
número de dias de registros de transação retidos de 1 a 35. Para a edição Cloud SQL Enterprise,
o valor pode ser definido de 1 a 7.
Se um valor não for definido, o período de armazenamento de registros de transações padrão de 14 dias será definido para as instâncias da edição Cloud SQL Enterprise Plus e de 7 dias para as instâncias da edição Cloud SQL Enterprise. Para mais informações sobre como aplicar essa configuração, consulte Definir a retenção de registros de transações.
Para descobrir quanto espaço em disco os registros de transação usam, verifique a métrica bytes_used_by_data_type
da instância. O valor do tipo de dados retorna o tamanho dos
registros de transações no disco. Para instâncias que armazenam registros de transação
usados para PITR no disco, o Cloud SQL limpa os dados do disco diariamente
para atender à configuração de PITR transactionLogRetentionDays
. Para mais informações, consulte
Retenção automatizada de backup.
Limitações
As limitações a seguir estão associadas à ativação da PITR na instância e ao tamanho dos registros de transação no disco que causam um problema na instância:
- É possível desativar a PITR e reativá-la para garantir que o Cloud SQL armazene registros no Cloud Storage na mesma região da instância. No entanto, o Cloud SQL exclui todos os registros atuais para que não seja possível realizar uma operação de PITR antes do momento em que você reativou a PITR.
- É possível aumentar o tamanho do armazenamento da instância, mas o aumento do tamanho do registro de transações no uso do disco pode ser temporário.
- Para evitar problemas de armazenamento inesperados, recomendamos ativar os aumentos automáticos de armazenamento. Essa recomendação se aplica somente se a instância tiver a PITR ativada e seus registros estiverem armazenados no disco.
- Se você quiser excluir registros e recuperar o armazenamento, desative a PITR sem reativá-la. No entanto, diminuir o armazenamento usado não reduz 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âmetrotransactionLogRetentionDays
, defina o número deretainedBackups
como8
para o parâmetrobackupRetentionSettings
.
Para mais informações sobre a PITR, consulte Recuperação pontual (PITR, na sigla em inglês).
Modelo de recuperação de banco de dados para PITR
Se você ativar a PITR em uma instância, o Cloud SQL vai definir automaticamente o modelo de recuperação dos bancos de dados atuais e subsequentes como 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.
Ativar a PITR
Quando você cria uma nova instância no console do Google Cloud, a configuração Backups automatizados é ativada automaticamente.O procedimento a seguir ativa a PITR em uma instância principal existente.
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Abra o menu de mais ações
da instância em que você quer ativar a PITR e clique em Editar.
- Em Personalizar sua instância, expanda a seção Proteção de dados.
- Marque a caixa de seleção Ativar recuperação pontual.
- 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.
- Clique em Salvar.
gcloud
- Exiba a visão geral da instância:
gcloud sql instances describe INSTANCE_NAME
- Se você vir
enabled: false
na seçãobackupConfiguration
, 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. - 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
- Confirme a mudança:
gcloud sql instances describe INSTANCE_NAME
Quando a operação é realizada, é exibido
pointInTimeRecoveryEnabled: true
na seçãobackupConfiguration
.
Terraform
Para ativar a PITR, use um recurso do Terraform.
Ativar a PITR para a edição Cloud SQL Enterprise Plus
Use o exemplo de código do Terraform abaixo para criar uma instância do Cloud SQL Enterprise Plus com a PITR ativada:Ativar a PITR para o Cloud SQL edição Enterprise
Use o exemplo de código do Terraform abaixo para criar uma instância do Cloud SQL Enterprise com a PITR ativada: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
- Inicie o Cloud Shell.
-
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.
-
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 demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
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
-
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.
-
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!".
- 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:
- Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
-
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:
Execute o PITR
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Abra o menu "Mais ações"
para a instância a ser recuperada e clique em Criar clone.
- Na página Criar um clone, é possível atualizar o ID do novo clone.
- Selecione Clonar de um momento anterior.
- Insira um horário de PITR.
- 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. - 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ê 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ê receberá uma resposta JSON semelhante a esta:
Desativar PITR
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Abra o menu "Mais ações"
para a instância a ser desativada e selecione Editar.
- Em Personalizar sua instância, expanda a seção Proteção de dados.
- Desmarque a opção Ativar recuperação pontual.
- Clique em Salvar.
gcloud
- Desative a recuperação pontual:
gcloud sql instances patch INSTANCE_NAME \ --no-enable-point-in-time-recovery
- Confirme a alteração:
gcloud sql instances describe INSTANCE_NAME
Quando a operação é realizada, é exibido
pointInTimeRecoveryEnabled: false
na seçãobackupConfiguration
.
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.
Para várias instâncias no mesmo projeto, você também pode verificar o local de armazenamento dos registros de transações. 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 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 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.CLOUD_STORAGE
: a instância armazena os registros de transações usados para a PITR no Cloud Storage.
Definir a retenção do registro de transações
Para definir o número de dias de retenção dos registros de transação, faça o seguinte:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Abra o menu "Mais ações"
para a instância em que você quer definir o registro das transações e selecione Editar.
- Em Personalizar sua instância, expanda a seção Proteção de dados.
- Na seção Ativar recuperação pontual, expanda Opções avançadas.
- 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.
- Clique em Salvar.
gcloud
Edite a instância para definir o número de dias de retenção dos registros de transações.
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 você não especificar um valor, o Cloud SQL vai usar o valor padrão. 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 |
---|---|
OU
|
O carimbo de data/hora fornecido é inválido. |
OU
|
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
- Configurar sinalizações no clone.