Recuperação pontual

Nesta página, descrevemos como usar a recuperação pontual para restaurar o trabalho da instância do Cloud SQL.

Para saber mais sobre a recuperação pontual, consulte esta página.

Antes de começar

Antes de concluir esta tarefa, você precisa ter o seguinte:

  • 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, consulte Como ativar a geração de registros binários.

  • Um nome de arquivo de registros binários e a posição do evento do qual você quer realizar a recuperação. Esse evento e todos os eventos que vieram depois dele não serão refletidos na nova instância. Para mais informações, consulte Como identificar a posição do registro binário.

    Depois de identificar o arquivo e a posição do registro binário, execute a recuperação pontual.

Como ativar registros binários

Console

  1. Acesse a página Instâncias do Cloud SQL no Console do Google Cloud.

    Acessar a página "Instâncias" do Cloud SQL

  2. Selecione a instância em que você quer ativar a recuperação pontual.
  3. Clique em Edit.
  4. Na seção Backups, recuperação e alta disponibilidade, selecione Automatizar backups e Ativar recuperação pontual.
  5. Clique em Salvar.
  6. Na página Detalhes da instância, binaryLogEnabled é exibido como true.

gcloud

  1. Exiba os detalhes da instância:
    gcloud sql instances describe [INSTANCE_NAME]
    
  2. Se aparecer enabled: false em 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 recuperação pontual:
    
    gcloud sql instances patch [INSTANCE_NAME] --enable-bin-log
    
    
  4. Confirme a alteração:
    gcloud sql instances describe [INSTANCE_NAME]
    

    Em backupConfiguration, procure binaryLogEnabled: true.

REST

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
  • start-time: o horário no formato "HH:MM"

Método HTTP e URL:

PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

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:

Como identificar a posição de recuperação

Antes de executar uma recuperação pontual, você precisa ter identificado um nome de arquivo de registros binários e uma posição que correspondam ao momento em que você quer recuperar a instância.

Você usa o MySQL Client para realizar essa tarefa.

  1. Use o cliente MySQL para se conectar à instância 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][connection-options].

  2. Mostre os arquivos de registros binários para a instância:

    SHOW BINARY LOGS;
    
  3. Exibir os 100 primeiros eventos no arquivo de registros 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.

  4. 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;
    
  5. Ao encontrar o evento que marca o momento que você quer restaurar, registre a posição que você quer restaurar (exibida como Pos) e o nome do arquivo de registros.

    O nome e a posição do arquivo de registros são os valores usados para a recuperação pontual.

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 seriam refletidas na nova instância.

Como executar a recuperação pontual

Console

  1. Acesse a página Instâncias do Cloud SQL no Console do Google Cloud.

    Acessar a página "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 "Clonar".
  3. Na janela Criar um clone, atualize o nome da nova instância, se necessário.
  4. Selecione Clone de um momento anterior
  5. Em Nome do arquivo de registro binário, digite o nome do registro binário já identificado.
  6. Insira a posição do evento em Posição de recuperação..
  7. Clique em Criar clone.

gcloud

  1. Crie a nova instância usando o nome do arquivo de registros binários e a posição de recuperação que você identificou:
    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 clone seja parecido com isto:

    gcloud sql instances clone instance1 instance1-clone \
           --bin-log-file-name=mysql-bin.0000031 --bin-log-position=107
    
  2. 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. Porém, quando ela é concluída, um estado DONE é retornado.

Para mais informações sobre recuperação pontual, consulte a referência do MySQL, Recuperação pontual usando o registro binário (em inglês).

REST

Crie a nova instância usando o nome do arquivo de registros binários e a posição de 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://www.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:

Como desativar registros binários

Console

  1. Acesse a página Instâncias do Cloud SQL no Console do Google Cloud.

    Acesse a página "Instâncias" do Cloud SQL

  2. Selecione a instância em que você quer desativar a recuperação pontual.
  3. Clique em Editar.
  4. Na seção Backups, recuperação e alta disponibilidade, desmarque Ativar a recuperação pontual.
  5. Clique em Salvar.
  6. Na página Detalhes da instância, binaryLogEnabled é exibido como false.

gcloud

  1. Desative a recuperação pontual:
    
    gcloud sql instances patch [INSTANCE_NAME] --no-enable-bin-log
    
        
  2. Confirme a alteração:
    gcloud sql instances describe [INSTANCE_NAME]
    

    Em backupConfiguration, procure binaryLogEnabled: false.

REST

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://www.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:

Uso de disco e recuperação pontual

A recuperação pontual (PITR, na sigla em inglês) usa registros binários. Eles são atualizados regularmente e usam espaço de armazenamento. Os registros binários são excluídos automaticamente com o backup automático associado, o que geralmente acontece após cerca de sete dias.

Se o tamanho dos registros binários estiver causando um problema para a instância, é possível aumentar o tamanho do armazenamento. No entanto, o aumento do uso de registros binários no uso do disco pode ser temporário. Para evitar problemas inesperados de armazenamento, recomendamos ativar os aumentos no armazenamento automático ao usar o PITR.

Para excluir os registros e recuperar o armazenamento, desative a recuperação pontual. Observe, porém, que diminuir o armazenamento usado não reduz o tamanho do armazenamento provisionado para a instância.