Quando cria uma nova instância na Google Cloud consola, as cópias de segurança automáticas e a recuperação num ponto específico no tempo (PITR) são ativadas automaticamente. Pode configurar a PITR para qualquer instância existente da seguinte forma:
- Ative a PITR
- Desative a PITR
- Defina a retenção de registos de transações
- Verifique a localização do armazenamento dos registos de transações usados na PITR
Ative a PITR
Quando cria uma nova instância na Google Cloud consola, as cópias de segurança automáticas e a opção Ativar recuperação num ponto específico no tempo são ativadas automaticamente.O procedimento seguinte ativa a PITR numa instância principal existente.
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Abra o menu de mais ações
para a instância na qual
quer ativar a PITR e clique em Editar. - Em Personalize a sua instância, expanda a secção Proteção de dados.
- Selecione a caixa de verificação Ativar recuperação num ponto específico no tempo.
- No campo Dias de registos, introduza o número de dias para reter registos, de 1 a 35 para a edição Cloud SQL Enterprise Plus ou de 1 a 7 para a edição Cloud SQL Enterprise.
- Clique em Guardar.
gcloud
- Apresente a vista geral da instância:
gcloud sql instances describe INSTANCE_NAME
- Se vir
enabled: falsena secçãobackupConfiguration, ative as cópias de segurança agendadas:gcloud sql instances patch INSTANCE_NAME \ --backup-start-time=HH:MM
Especifique o parâmetro
backup-start-timecom a hora no formato de 24 horas no fuso horário UTC±00. - Ativar PITR:
gcloud sql instances patch INSTANCE_NAME \ --enable-bin-log
Se estiver a ativar a PITR numa instância principal, também pode configurar o número de dias durante os quais quer reter os registos de transações adicionando o seguinte parâmetro:
--retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS - Confirme a alteração:
gcloud sql instances describe INSTANCE_NAME
Na secção
backupConfiguration, vêbinaryLogEnabled: truese a alteração foi bem-sucedida.
Terraform
Para ativar a PITR, use um recurso do Terraform.
Aplique as alterações
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf, por exemplo,main.tf. Neste tutorial, o ficheiro é denominadomain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o
main.tfcriado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade:terraform init -upgrade
Aplique as alterações
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça correções à configuração conforme necessário.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yesno comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Eliminar as alterações
Para eliminar as alterações, faça o seguinte:
- Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento
deletion_protectioncomofalse.deletion_protection = "false"
- Aplique a configuração do Terraform atualizada executando o seguinte comando e
introduzindo
yesno comando:terraform apply
-
Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo
yesno comando:terraform destroy
REST v1
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID ou o número do projeto do Google Cloud projeto que contém a instância
- INSTANCE_NAME: o nome da instância principal ou de réplica de leitura que está a configurar 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 do pedido:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"binaryLogEnabled": true
}
}
}
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 ou o número do projeto do Google Cloud projeto que contém a instância
- INSTANCE_NAME: o nome da instância principal ou de réplica de leitura que está a configurar para alta disponibilidade
- START_TIME: a hora (em horas e minutos)
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
Corpo JSON do pedido:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"binaryLogEnabled": true
}
}
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Desative a PITR
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Abra o menu Mais ações
para a instância que quer desativar e selecione Editar. - Em Personalize a sua instância, expanda a secção Proteção de dados.
- Desmarque a opção Ativar recuperação pontual.
- Clique em Guardar.
gcloud
- Desative a recuperação pontual:
gcloud sql instances patch INSTANCE_NAME \ --no-enable-bin-log
- Confirme a alteração:
gcloud sql instances describe INSTANCE_NAME
Na secção
backupConfiguration, vêbinaryLogEnabled: falsese a alteração foi bem-sucedida.
REST v1
Antes de usar qualquer um dos dados do pedido, 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 do pedido:
{
"settings":
{
"backupConfiguration":
{
"enabled": false,
"binaryLogEnabled": false
}
}
}
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
- 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 do pedido:
{
"settings":
{
"backupConfiguration":
{
"enabled": false,
"binaryLogEnabled": false
}
}
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Defina a retenção do registo de transações
Para definir o número de dias de retenção dos registos binários:
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Abra o menu Mais ações
para a instância na qual quer ativar o registo de transações e selecione Editar. - Em Personalize a sua instância, expanda a secção Proteção de dados.
- Na secção Ativar recuperação num ponto específico no tempo, expanda as Opções avançadas.
- Introduza o número de dias para reter registos, de 1 a 35 para a edição Cloud SQL Enterprise Plus ou de 1 a 7 para a edição Cloud SQL Enterprise.
- Clique em Guardar.
gcloud
Edite a instância para definir o número de dias de retenção dos registos binários.
Substitua o seguinte:
- INSTANCE_NAME: o nome da instância na qual quer definir o registo de transações.
DAYS_TO_RETAIN: o número de dias dos registos de transações a manter. Para a edição Cloud SQL Enterprise Plus, o intervalo válido é entre 1 e 35 dias, com um valor predefinido de 14 dias. Para a edição Cloud SQL Enterprise, o intervalo válido é entre 1 e 7 dias, com um valor predefinido de 7 dias.
Se não especificar um valor, o Cloud SQL usa o valor predefinido. Isto só é válido quando a PITR está ativada. Manter mais dias de registos 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 qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
DAYS_TO_RETAIN: o número de dias para reter os registos de transações. Para a edição Cloud SQL Enterprise Plus, o intervalo válido é entre 1 e 35 dias, com um valor predefinido de 14 dias. Para a edição Cloud SQL Enterprise, o intervalo válido é entre 1 e 7 dias, com um valor predefinido de 7 dias.
Se não for especificado nenhum valor, é usado o valor predefinido. Isto só é válido quando a PITR está ativada. Manter mais dias de registos 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 do pedido:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
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.
- INSTANCE_ID: o ID da instância.
DAYS_TO_RETAIN: o número de dias para reter os registos de transações. Para a edição Cloud SQL Enterprise Plus, o intervalo válido é entre 1 e 35 dias, com um valor predefinido de 14 dias. Para a edição Cloud SQL Enterprise, o intervalo válido é entre 1 e 7 dias, com um valor predefinido de 7 dias.
Se não for especificado nenhum valor, é usado o valor predefinido. Isto só é válido quando a PITR está ativada. Manter mais dias de registos 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 do pedido:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Verifique a localização de armazenamento dos registos de transações usados para PITR
Pode verificar onde a sua instância do Cloud SQL está a armazenar os registos de transações usados para a PITR.
gcloud
Para determinar se a sua instância armazena registos para 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 pode verificar a localização de armazenamento dos registos de transações. Para determinar a localização 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 MYSQL_8_0 us-central-1 DISK my_02 MYSQL_8_0 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 registos
de transações para PITR são armazenados para a instância.
Os estados de armazenamento possíveis do registo de transações são os seguintes:
DISK: a instância armazena os registos de transações usados para PITR no disco. Se atualizar uma instância da edição Enterprise do Cloud SQL para a edição Enterprise Plus do Cloud SQL, o processo de atualização muda automaticamente a localização do armazenamento de registos para o Cloud Storage. Para mais informações, consulte o artigo Atualize uma instância para a edição Cloud SQL Enterprise Plus através da atualização no local. Também pode optar por mudar a localização do armazenamento através da CLI gcloud ou da API Cloud SQL Admin sem atualizar a edição da sua instância e sem incorrer em tempo de inatividade. Para mais informações, consulte o artigo Mude o armazenamento do registo de transações para o Cloud Storage.SWITCHING_TO_CLOUD_STORAGE: a instância está a mudar a localização de armazenamento dos registos de transações PITR para o Cloud Storage.SWITCHED_TO_CLOUD_STORAGE: a instância concluiu a mudança da localização de armazenamento dos registos de transações PITR do disco para o Cloud Storage.CLOUD_STORAGE: a instância armazena os registos de transações usados para PITR no Cloud Storage.
Mude o armazenamento do registo de transações para o Cloud Storage
Se a sua instância armazenar os respetivos registos de transações usados para PITR no disco, pode mudar a localização de armazenamento para o Cloud Storage sem incorrer em qualquer período de inatividade. O processo geral de mudança da localização de armazenamento demora aproximadamente o período de retenção do registo de transações (dias) a ser concluído. Assim que iniciar a mudança, os registos de transações começam a acumular-se no Cloud Storage. Durante a operação, pode verificar o estado do processo geral através do comando em Verifique a localização de armazenamento dos registos de transações usados para PITR.
Após a conclusão do processo geral de mudança para o Cloud Storage, o Cloud SQL usa registos de transações do Cloud Storage para a PITR.
gcloud
Para mudar a localização do armazenamento para o Cloud Storage, use o seguinte comando:
gcloud sql instances patch INSTANCE_NAME \ --switch-transaction-logs-to-cloud-storage
Substitua INSTANCE_NAME pelo nome da instância. A instância tem de ser uma instância principal e não uma instância de réplica. A resposta é semelhante à seguinte:
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 devolver um erro, consulte o artigo Resolva problemas com a mudança para o armazenamento na nuvem para ver possíveis passos seguintes.
REST v1
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância. A instância tem de ser uma instância principal e não uma instância de réplica.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON do pedido:
{
"switchTransactionLogsToCloudStorageEnabled": true
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Se o pedido devolver um erro, consulte o artigo Resolva problemas da mudança para o Google Cloud Storage para ver possíveis passos seguintes.
REST v1beta4
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância. A instância tem de ser uma instância principal e não uma instância de réplica.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON do pedido:
{
"switchTransactionLogsToCloudStorageEnabled": true
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Se o pedido devolver um erro, consulte o artigo Resolva problemas da mudança para o Google Cloud Storage para ver possíveis passos seguintes.
Armazenamento e configuração do registo de transações após a mudança
Para fins de replicação, o Cloud SQL continua a reter cópias dos registos binários no disco.
Se quiser procurar registos binários com o utilitário mysqlbinlog, é útil armazenar registos binários no disco.
Se configurou as flags expire_logs_days ou binlog_expire_logs_seconds na sua instância antes da mudança, os valores configurados permanecem intactos.
Após a mudança, uma vez que os registos binários usados para realizar a PITR são agora armazenados no Cloud Storage, certifique-se de que os valores das flags refletem a retenção dos registos de transações no disco que espera. O Cloud SQL só retém registos no disco durante o valor mínimo de um dos seguintes:
- a definição de configuração da
transactionLogRetentionDaysPITR antes da mudança. O valor predefinido para esta definição é de 7 dias. - As flags
expire_logs_daysoubinlog_expire_logs_secondsque definiu manualmente na sua instância.
Se quiser poupar espaço em disco, após a conclusão do processo de mudança, configure o valor das flags expire_logs_days ou binlog_expire_logs_seconds para 1 dia para reduzir o tamanho do disco alocado e os custos de armazenamento em disco. Para mais informações sobre o armazenamento de registos de transações e a PITR, consulte o artigo Armazenamento de registos para PITR.
Para mais informações sobre como verificar a utilização do disco, consulte o artigo Registos e utilização do disco.
Resolva problemas na mudança para o Cloud Storage
A tabela seguinte apresenta os possíveis erros que podem ser devolvidos com o código INVALID REQUEST quando muda a localização de armazenamento dos registos de transações do disco para o armazenamento na nuvem.
| Problema | Resolução de problemas |
|---|---|
Switching the storage location of the transaction logs
used for PITR is not supported for instances with database type %s.
|
Certifique-se de que está a executar o comando da CLI gcloud ou a fazer o pedido de API numa instância do Cloud SQL para MySQL ou Cloud SQL para PostgreSQL. A mudança da localização de armazenamento dos registos de transações através da CLI gcloud ou da API Cloud SQL Admin não é suportada para o Cloud SQL para SQL Server. |
MySQL transactional logging is not enabled on this instance.
|
O MySQL usa o registo binário como os registos de transações para a recuperação num determinado momento (PITR). Para suportar a PITR, o MySQL requer que ative o registo binário na instância. Para mais informações sobre como ativar o registo binário, consulte Ative a PITR. |
This command is not supported on replica instances.
Run the command on the primary instance instead.
|
Certifique-se de que especifica uma instância principal quando executar o comando ou fizer o pedido da API. |
This instance is already storing transaction logs used for PITR in
Cloud Storage
|
Para validar a localização de armazenamento dos registos de transações, execute o comando em Verifique a localização de armazenamento dos registos de transações usados para PITR. |
The instance is already switching transaction logs used for PITR from disk
to Cloud Storage.
|
Aguarde pela conclusão da operação de mudança. Para validar o estado da operação e a localização de armazenamento dos registos de transações, execute o comando em Verifique a localização de armazenamento dos registos de transações usados para PITR. |
O que se segue?
- Configure as flags no clone