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 este link.
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 registros binários para a PITR.Em 11 de agosto de 2023, lançamos o armazenamento de registros de transações para a PITR no Cloud Storage. Desde esse lançamento, estas condições são aplicáveis:
- Todas as instâncias da edição Cloud SQL Enterprise Plus armazenam os registros binários usados para PITR no Cloud Storage. Apenas as instâncias da edição Cloud SQL Enterprise Plus que você fez upgrade do Cloud SQL Enterprise antes de 1o de abril de 2024 e ativou a PITR antes de 11 de agosto de 2023 continuam armazenando os registros da PITR no disco.
- As instâncias da edição Cloud SQL Enterprise criadas com a PITR ativada antes de 11 de agosto de 2023 continuam armazenando os registros no disco.
- Se você fizer upgrade de uma instância do Cloud SQL Enterprise após 1o de abril 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 que você criar com a PITR ativada após 11 de agosto de 2023 armazenam os registros usados para a PITR no Cloud Storage.
Para mais informações sobre como verificar o local de armazenamento dos registros de transações usados para a PITR, consulte Verificar o local de armazenamento dos registros de transação usados para a PITR.
Para instâncias que armazenam registros binários apenas no disco, é possível mover os registros do disco para o Cloud Storage primeiro desativando e depois reativando a PITR.
Período de armazenamento de registros
O Cloud SQL mantém os registros de transação no Cloud Storage até o valor definido na configuração da PITR transactionLogRetentionDays
.
Essa valor pode variar de 1 a 35 dias para a edição Cloud SQL Enterprise Plus e de 1 a 7 dias para a edição Cloud SQL Enterprise. Se um valor não for definido,
o período de armazenamento de registros de transações padrão será de 14 dias para as instâncias da edição Cloud SQL Enterprise Plus
e de sete dias para as instâncias da edição Cloud SQL Enterprise. Para mais informações sobre como definir dias de retenção de registro de transações, consulte Definir retenção de registros de transações.
Uma instância armazena os registros binários usados para a PITR no Cloud Storage, mas também mantém um número menor de registros binários no disco para permitir a replicação dos registros no Cloud Storage. Por padrão, quando você cria uma instância com a PITR ativada,
ela armazena os registros binários para a PITR
no Cloud Storage. O Cloud SQL também define o valor das
sinalizações expire_logs_days
e binlog_expire_logs_seconds
como o equivalente de um dia automaticamente. Isso significa um dia de registros no disco.
Ao reduzir os valores dessas configurações de sinalização, o Cloud SQL ajuda a economizar nos custos de uso do disco. No entanto, se você quiser que os registros adicionais estejam disponíveis no disco, por exemplo, para procurar os registros binários com o utilitário mysqlbinlog
, aumente os valores dessas sinalizações. O Cloud SQL mantém os registros no disco durante o mínimo de dias de retenção de registros de transações ou durante o valor definido para as flags.
Em registros binários usados para a PITR armazenados no disco, o Cloud SQL mantém os registros para o valor mínimo definido para uma das seguintes configurações:
- A configuração de backup de
transactionLogRetentionDays
. A flag
expire_logs_days
oubinlog_expire_logs_seconds
.A modificação dos valores dessas flags pode afetar o comportamento da recuperação PITR e o número de dias em que os registros ficarão armazenados no disco. Não recomendamos configurar o valor de qualquer uma dessas sinalizações como
0
. Para mais informações sobre essas flags, consulte Configurar flags do banco de dados.
Para instâncias ativadas por chave de criptografia gerenciada pelo cliente (CMEK, na sigla em inglês), os registros binários 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.
Registros e uso do disco
Novos registros são gerados regularmente e usam espaço de armazenamento. Os registros
binários são excluídos automaticamente com o backup automático associado, o que
acontece depois que o valor definido para
transactionLogRetentionDays
é atingido.
Para descobrir a quantidade do disco que os registros binários estão usando, verifique a métrica bytes_used_by_data_type
da instância. O valor do tipo de dados binlog
retorna o tamanho dos binlogs no disco. Para instâncias que armazenam registros de transações
usados para PITR no disco,
o Cloud SQL limpa os dados do disco diariamente para atender à
configuração de PITR transactionLogRetentionDays
,
conforme descrito em Backup automático e retenção de registros de transações.
No entanto, se você definir a sinalização expire_logs_days
como um valor menor que os dias de retenção de registros de transações,
o Cloud SQL poderá limpar os registros binários mais cedo.
Se o tamanho dos registros binários estiver causando um problema para a instância:
- Verifique se a instância está armazenando registros no disco. Desative e reative a PITR para mover os registros usados para a PITR do disco para o Cloud Storage. Essa operação resulta em alguns minutos de inatividade, mas libera espaço em disco. Se você estiver usando o Cloud SQL Enterprise, também poderá fazer upgrade para o Cloud SQL Enterprise Plus para mudar o local de armazenamento dos registros PITR.
É possível aumentar o tamanho do armazenamento da instância, mas o aumento do tamanho do registro binário no uso do disco pode ser temporário.
Recomendamos que você ative o aumento automático de armazenamento para evitar problemas de armazenamento inesperados.
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 que você defina o número de backups como sendo maior do que o número de dias de retenção de registros. Dessa forma, é possível garantir um mínimo de dias especificados para a retenção.
Para mais informações sobre a PITR, consulte este link.
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
-
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.
- 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 Save.
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-bin-log
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
binaryLogEnabled: true
na seçãobackupConfiguration
.
Terraform
Para ativar a PITR, use um recurso do Terraform.
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 abaixo, faça as substituições a seguir:
- 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, "binaryLogEnabled": 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 abaixo, faça as substituições a seguir:
- 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/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
Corpo JSON da solicitação:
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "binaryLogEnabled": true } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Executar a PITR com um carimbo de data/hora
Usar o carimbo de data/hora é a abordagem recomendada para executar a PITR.
O Cloud SQL usa o utilitário mysqlbinlog
para restaurar instâncias até um momento específico. Para mais informações sobre o utilitário mysqlbinlog
, consulte a documentação de referência do MySQL (em inglês).
Para concluir a tarefa a seguir, você precisa dos seguintes itens:
- Geração de registros binários e backups ativados para a instância, com registros binários contínuos desde o último backup antes do evento do qual você quer recuperar. Para mais informações, veja o tópico Ativar a geração de registros binários.
- Um carimbo de data/hora para definir o ponto de recuperação. Os eventos que ocorrem nesse carimbo de data/hora ou após ele não são refletidos na nova instância.
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.
- 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 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
- 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 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
- 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
-
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.
- Na página Visão geral da instância, em Configuração, a configuração da PITR é listada como desativada.
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
Quando a operação é realizada, é exibido
binaryLogEnabled: false
na seçãobackupConfiguration
.
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
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, "binaryLogEnabled": 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 abaixo, faça as substituições a seguir:
- 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, "binaryLogEnabled": 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.
Na saída do comando, o campo transactionalLogStorageState
mostra informações sobre onde os registros de transações da PITR são armazenados para a 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 também vai mudar o local de armazenamento de registros 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.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.
Definir a retenção do registro de transações
Para definir o número de dias de retenção de registros binários:
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 Save.
gcloud
Edite a instância para definir o número de dias de retenção dos registros binários.
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. Só é válido 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:
- days-to-retain: o número de dias para armazenar registros de transação, de 1 a 7
- 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": { "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:
- days-to-retain: o número de dias para armazenar registros de transação, de 1 a 7
- 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": { "transactionLogRetentionDays": "days-to-retain" } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Executar a PITR usando posições de registro binárias
Recomendamos que você execute a PITR usando carimbos de data/hora, conforme descrito em Executar a PITR usando um carimbo de data/hora, mas também é possível executá-la fornecendo uma posição de registro binário específica em um arquivo de registro binário.
Para mais informações sobre a PITR usando posições de registros binários, consulte a Referência do MySQL, PITR usando o registro binário.
Antes de começar
Antes de concluir esta tarefa, você precisa ter:
Geração de registros binários e backups ativados para a instância, com registros binários contínuos desde o último backup antes do evento do qual você quer realizar a recuperação. Para mais informações, veja o tópico Ativar a geração de registros binários.
Os registros binários precisam estar disponíveis no disco para que você possa procurá-los em busca de eventos. Para verificar a duração da retenção dos registros binários no disco, consulte Período de armazenamento dos registros. Não é possível procurar registros binários armazenados no Cloud Storage com o utilitário
mysqlbinlog
.Um nome de arquivo de registros binários e a posição do evento de que você quer realizar a recuperação. Esse evento e todos os que vieram depois dele não são refletidos na nova instância. Para mais informações, veja Identificar a posição do registro binário.
Depois de identificar o nome do arquivo e a posição do registro binário, execute a PITR usando posições de eventos de registro binário.
Identificar a posição de recuperação
Use o cliente MySQL para se conectar à instância para que você quer restaurar.
Para fazer isso, use o Cloud Shell ou a máquina cliente local. Para mais informações, consulte Opções de conexão para aplicativos externos.
Mostre os arquivos de registros binários para a instância:
SHOW BINARY LOGS;
Exibir os 100 primeiros eventos no arquivo de registros binários mais recente:
SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' LIMIT 100;
É possível ajustar o número de linhas a serem exibidas, mas não mostrar todos os eventos no arquivo até saber o tamanho dele. A exibição de um grande número de eventos pode afetar o desempenho do sistema.
Se o evento que você está procurando não for exibido, use a última posição exibida como ponto de partida para pesquisar o próximo conjunto de eventos:
SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' FROM <POSITION> LIMIT 100;
Ao encontrar o evento que marca o momento em que a restauração será interrompida, registre a posição (mostrada como
Pos
) e o nome do arquivo de registro binário.O nome de arquivo e a posição do registro binário são os valores usados para a PITR.
Veja abaixo um exemplo de saída do comando SHOW BINLOG EVENTS:
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+ | mysql-bin.000011 | 4 | Format_desc | 88955285 | 120 | Server ver: 5.6.30-log, Binlog ver: 4 | | mysql-bin.000011 | 120 | Query | 88955285 | 211 | create database db1 | | mysql-bin.000011 | 211 | Query | 88955285 | 310 | use `db1`; CREATE TABLE t (c CHAR(20)) | | mysql-bin.000011 | 310 | Query | 88955285 | 381 | BEGIN | | mysql-bin.000011 | 381 | Table_map | 88955285 | 426 | table_id: 18 (db1.t) | | mysql-bin.000011 | 310 | Query | 88955285 | 381 | BEGIN | | mysql-bin.000011 | 426 | Write_rows | 88955285 | 464 | table_id: 18 flags: STMT_END_F | | mysql-bin.000011 | 464 | Xid | 88955285 | 495 | COMMIT /* xid=56 */ | | mysql-bin.000011 | 495 | Query | 88955285 | 566 | BEGIN | | mysql-bin.000011 | 566 | Table_map | 88955285 | 611 | table_id: 18 (db1.t) | | mysql-bin.000011 | 611 | Write_rows | 88955285 | 649 | table_id: 18 flags: STMT_END_F | | mysql-bin.000011 | 649 | Xid | 88955285 | 680 | COMMIT /* xid=57 */ | | mysql-bin.000011 | 680 | Query | 88955285 | 751 | BEGIN | | mysql-bin.000011 | 751 | Table_map | 88955285 | 796 | table_id: 18 (db1.t) | | mysql-bin.000011 | 796 | Write_rows | 88955285 | 834 | table_id: 18 flags: STMT_END_F | | mysql-bin.000011 | 834 | Xid | 88955285 | 865 | COMMIT /* xid=58 */ | | mysql-bin.000011 | 865 | Query | 88955285 | 977 | use `db1`; DROP TABLE `t` /* generated by server */ | +------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+ 16 rows in set (0.04 sec)
Para restaurar até a instrução DROP TABLE, em negrito acima, seria preciso usar "865" em "mysql-bin.000011" como a posição de recuperação. A instrução DROP TABLE e todas as operações depois dela não são refletidas na nova instância.
Executar a PITR usando posições de eventos de registros binários
gcloud
Use o comando
gcloud sql instances clone
com as sinalizações
--bin-log-file-name
e --bin-log-position
.
-
Crie a instância usando o nome de arquivo do registro binário e a posição de recuperação.
Substitua:
- SOURCE_INSTANCE_NAME: nome da instância da qual você está restaurando;
- NEW_INSTANCE_NAME: nome do clone;
- BINLOG_FILE_NAME: nome do registro binário, como
mysql-bin.187288
; - POSITION: a posição no registro binário em que a restauração será interrompida,
como
50001356
.
gcloud sql instances clone SOURCE_INSTANCE_NAME \ NEW_INSTANCE_NAME \ --bin-log-file-name="BINLOG_FILE_NAME" \ --bin-log-position=POSITION
Por exemplo, é possível que um comando
gcloud sql instances clone
seja parecido com isto:gcloud sql instances clone instance1 \ instance1-clone \ --bin-log-file-name=mysql-bin.0000031 \ --bin-log-position=107 \
- Use o ID de operação retornado pelo comando
clone
para verificar o status da operação de restauração.gcloud sql operations describe OPERATION_ID
Quando a operação está em andamento, um estado
RUNNING
é retornado. Quando a operação é concluída, um estadoDONE
é retornado.
REST v1
Crie a instância usando o nome do arquivo de registros binários e a posição de recuperação que você identificou:
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
- binary-log-file-name: o nome do arquivo de registro binário
- binary-log-position: a posição no arquivo de registros binários
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", "binLogCoordinates": { "kind": "sql#binLogCoordinates", "binLogFileName": "binary-log-file-name", "binLogPosition": "binary-log-position" } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
Crie a nova instância usando o nome do arquivo de registros binários e a posição da recuperação identificada:
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
- binary-log-file-name: o nome do arquivo de registro binário
- binary-log-position: a posição no arquivo de registros binários
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", "binLogCoordinates": { "kind": "sql#binLogCoordinates", "binLogFileName": "binary-log-file-name", "binLogPosition": "binary-log-position" } } }
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.