Nesta página, discutimos a recuperação pontual (PITR) e os backups automatizados. É possível configurar a PITR para qualquer instância fazendo o seguinte:
- Ativar PITR
- Desativar a PITR
- Definir a retenção do registro de transações
- Verificar o local de armazenamento dos registros de transações usados na PITR
Antes de começar
Antes de começar, leia o seguinte:
- Se você ativar a PITR em uma instância atual, ela será reiniciada.
- A PITR é ativada por padrão quando você cria uma instância da edição Cloud SQL Enterprise no Google Cloud console. Se você estiver usando a CLI gcloud, o Terraform ou a API Cloud SQL Admin e quiser ativar o recurso, faça isso manualmente.
- A PITR é ativada por padrão quando você cria uma instância do Cloud SQL Enterprise Plus, independentemente do método usado. Se quiser desativar o recurso, faça isso manualmente.
- Os backups automatizados são ativados por padrão quando você cria uma instância no console Google Cloud . Se você estiver usando a CLI gcloud, o Terraform ou a API Cloud SQL Admin e quiser ativar o recurso, faça isso manualmente.
Verifique se todos os bancos de dados na instância do Cloud SQL para SQL Server têm nomes de arquivos físicos exclusivos no disco de dados. Para mais informações, consulte Arquivos lógicos e físicos. Para detectar isso, execute a seguinte consulta T-SQL:
SELECT d.name AS DatabaseName, mf.physical_name FROM sys.master_files mf JOIN sys.databases d ON mf.database_id = d.database_id WHERE mf.type = 0 AND mf.file_id = 1;Se a consulta retornar dois ou mais bancos de dados com o mesmo valor para o campo
physical_name, siga estas etapas:- Se a PITR estiver ativada na instância, desative-a.
- Exporte o arquivo BAK associado a cada banco de dados afetado.
- Exclua cada banco de dados afetado na instância do Cloud SQL para SQL Server.
- Importe o arquivo BAK associado a cada banco de dados afetado.
- Reative a PITR na instância.
Ativar a PITR
O procedimento a seguir ativa a PITR em uma instância principal existente.
Console
-
No console 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: falsena seçãobackupConfiguration, ative os backups programados:gcloud sql instances patch INSTANCE_NAME \ --backup-start-time=HH:MM
Especifique o parâmetro
backup-start-timeusando 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: truena seçãobackupConfiguration.
Terraform
Para ativar a PITR, use um recurso do Terraform.
Ativar a PITR para o Cloud SQL Enterprise Plus
Use o exemplo de código do Terraform a seguir para criar uma instância da edição Cloud SQL Enterprise Plus com a PITR ativada:Ativar a PITR para o Cloud SQL Enterprise Edition
Use o exemplo de código do Terraform a seguir para criar uma instância da edição Cloud SQL Enterprise com a PITR ativada:Aplique as alterações
Para aplicar a configuração do Terraform em um projeto Google Cloud , siga as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto Google Cloud padrão 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.tfrecé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
yesno prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu Google Cloud projeto para conferir os resultados. No console do Google Cloud , navegue até seus recursos na UI 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_protectioncomofalse.deletion_protection = "false"
- Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite
yesno prompt:terraform apply
-
Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo
yesno prompt:terraform destroy
REST v1
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do projeto 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ê vai 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 ou número do projeto do projeto 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ê vai receber uma resposta JSON semelhante a esta:
Desativar PITR
Console
-
No console 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: falsena 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ê 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
- 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ê vai receber uma resposta JSON semelhante a esta:
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 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 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ê vai 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ê vai 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, também é possível 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.
A seguir
- Configurar sinalizações no clone.