Como Executar Backup e Recuperação Incremental do MySQL?

Saiba como implementar backups incrementais do MySQL usando logs binários para otimizar o armazenamento e a recuperação. Descubra métodos passo a passo para backup, restauração e melhores práticas para garantir a consistência dos dados.

download-icon
Download Grátis
para VM, SO, BD, Arquivo, NAS, etc.
joao

Updated by João on 2025/11/03

Tabela de conteúdos
  • Introdução ao backup incremental

  • Introdução ao Binlog

  • Como Executar Backup Incremental do MySQL?

  • Como recuperar a partir de um backup incremental do MySQL?

  • Uma Maneira Mais Fácil de Criar Backups Incrementais do MySQL

  • Perguntas Frequentes sobre Backups Incrementais do MySQL

  • Conclusão

Situações inesperadas, como falhas no sistema operacional, interrupções de energia, falhas no sistema de arquivos e falhas de hardware, podem todas causar o mau funcionamento do banco de dados que estamos utilizando, resultando em inconsistências nos dados. Para garantir a segurança do banco de dados, é necessário fazer backup regularmente. Os backups de banco de dados podem ser classificados em backups completos, backups de log, backups incrementais e backups de arquivos. Para um banco de dados grande, realizar backups completos com frequência pode levar muito tempo, e esses backups geralmente copiam repetidamente dados inalterados, ocasionando desperdício de recursos. A estratégia de backup de banco de dados mais comumente utilizada atualmente consiste em realizar backups incrementais com mais frequência com base em um backup completo. Por exemplo, podemos fazer um backup completo uma vez por semana durante períodos de baixo uso e depois realizar um backup incremental diariamente, capturando as operações que possam ter modificado o banco de dados nesse período.

Introdução ao backup incremental

O backup incremental refere-se a fazer backup apenas dos arquivos que foram adicionados ou modificados desde o último backup completo ou desde o backup incremental anterior. Isso significa que o primeiro backup incremental cobre os arquivos adicionados ou modificados após o backup completo; o segundo backup incremental cobre os arquivos adicionados ou modificados após o primeiro backup incremental, e assim por diante. A maior vantagem desse método de backup é a ausência de dados duplicados, resultando em um tamanho de backup menor e tempo mais curto para realizá-lo. No entanto, restaurar dados a partir de backups incrementais é mais complicado. Você precisa ter o último backup completo e todos os backups incrementais (a perda ou danificação de qualquer backup incremental pode causar falha na restauração), e eles devem ser restaurados em ordem cronológica, do backup completo até cada backup incremental, o que aumenta significativamente o tempo de recuperação.  

Por exemplo, se tivermos um banco de dados com 20 GB de dados e um adicional de 10 MB de dados for adicionado diariamente, realizar um backup completo todos os dias sobrecarregaria o servidor. Em vez disso, podemos fazer backup apenas dos dados recém-adicionados para reduzir a carga do servidor.  

Introdução ao Binlog  

O MySQL não fornece um método direto de backup incremental, mas pode alcançar backups incrementais indiretamente por meio dos logs binários do MySQL.  

O binlog é habilitado pela opção log-bin no arquivo de configuração. O servidor MySQL criará dois novos arquivos, “XXX-bin.001” e “xxx-bin.index”, no diretório raiz de dados. Se nenhum nome de arquivo for especificado na opção de configuração, o MySQL usará o nome do host para nomear esses dois arquivos. O arquivo “.index” contém uma lista de todos os arquivos de log. O MySQL registra todas as modificações ao conteúdo e à estrutura do banco de dados nos arquivos “XXX-bin.n”, mas não registra instruções “SELECT” e “UPDATE” que não atualizem efetivamente os dados.

Quando o banco de dados MySQL é interrompido ou reiniciado, o servidor grava no próximo arquivo de log. O MySQL gera um novo arquivo binlog ao ser reiniciado, com um número de arquivo incremental. Além disso, se um arquivo de log exceder o limite definido pela variável do sistema "max_binlog_size", um novo arquivo de log também será criado.

O backup incremental depende do mecanismo binlog do MySQL. Cada etapa das operações de inserção, atualização, exclusão e consulta no banco de dados é registrada no binlog. Ao realizar inicialmente um backup completo e limpar o binlog ao mesmo tempo, todas as operações subsequentes serão registradas em novos arquivos binlog. Para o backup incremental, basta fazer o backup dos arquivos binlog recém-gerados, alcançando assim um backup perfeito do banco de dados em constante crescimento. 

A importância dos logs binários para backups é a seguinte:  

  • Os logs binários armazenam todas as operações que atualizam ou podem atualizar dados.  

  • Os logs binários começam a gravar após a inicialização do servidor MySQL e criam um novo arquivo de log quando o tamanho máximo definido é atingido ou quando o comando "flush logs" é executado.

  • Ao executar periodicamente o comando "flush logs", criando uma nova sequência de arquivos binários de log e armazenando esses arquivos com segurança, é concluído um backup incremental ao longo de um período.

Como Executar Backup Incremental do MySQL?  

O backup incremental do MySQL pode ser realizado utilizando os logs do MySQL. Os logs do MySQL incluem três tipos: logs binários, logs de transação e logs de erros. Dentre eles, os logs binários são os principais logs do MySQL, contendo todas as operações de modificação de dados em formato binário armazenadas no disco. Ao fazer backup dos logs binários, pode-se implementar o backup incremental do MySQL.  

Passos para o backup incremental do MySQL:  

1. Ativar o Log Binário do MySQL:

Defina os seguintes parâmetros no arquivo de configuração do MySQL ("my.cnf"):  

 [mysql]  
   log-bin=mysql-bin  
   server-id=1

O parâmetro "log-bin" especifica o prefixo do arquivo de log binário, e o parâmetro "server-id" identifica exclusivamente a instância do MySQL.

2. Criar um Usuário de Backup:

 CREATE USER 'backup'@'localhost' IDENTIFIED BY 'your_password';  
 GRANT REPLICATION CLIENT, REPLICATION SLAVE, PROCESS, SUPER, RELOAD ON *.* TO 'backup'@'localhost';

 Aqui, "backup" é o nome de usuário. O usuário deve ter as seguintes permissões: "REPLICATION CLIENT", "REPLICATION SLAVE", "PROCESS", "SUPER" e "RELOAD". 

3. Realize um backup completo:

Use o comando "mysqldump" para fazer backup de todo o banco de dados MySQL para um arquivo:

mysqldump -u root -P 3306 -h 127.0.0.1 -p123456 ks_flask > ks_flask.sql

Aqui, “localhost” é o host do MySQL, “root” é o nome de usuário e “ks_flask” é o nome do banco de dados.

4. Registre a Posição Atual do Log Binário:

Depois de realizar o primeiro backup completo, registre o nome atual do arquivo de log binário e a posição para backups incrementais futuros.

SHOW MASTER STATUS;

Este comando retorna o arquivo de log binário atual e a posição.

5. Executar Backup Incremental:

Utilize o comando "mysqlbinlog" com os parâmetros "--start-datetime", "--stop-datetime" e "--start-position" para especificar o intervalo de tempo e a posição do backup anterior.

mysqlbinlog --start-datetime='2023-10-23 00:00:00'
--stop-datetime='2023-10-23 23:59:59'
--start-position=[previous position]
mysql-bin.000001 > incr_backup_2023-10-23.sql

Aqui, "[previous position]" é a posição do log binário registrada no último backup.

6. Registre a Nova Posição do Log Binário:  

Após executar o backup incremental, use "SHOW MASTER STATUS" para registrar o novo arquivo de log binário e a posição para o próximo backup incremental.

SHOW MASTER STATUS;

7. Execute backups incrementais regularmente: 

Execute backups incrementais diariamente com base nos requisitos, garantindo que as alterações do dia anterior sejam incluídas. Scripts de automação podem ser usados para registrar e atualizar periodicamente as posições dos logs binários.  

8. Restaurar Dados de Backup:

   Mesclar e restaurar backups completos e incrementais no MySQL:  

mysql -hlocalhost -uroot -p your_database < ks_flask.sql  
mysql -hlocalhost -uroot -p your_database < incr_backup_2023-10-23.sql

Se houver vários backups incrementais, restaure-os em ordem cronológica.  

Como recuperar a partir de um backup incremental do MySQL? 

Existem três métodos comuns para recuperação incremental: recuperação geral, recuperação baseada em posição e recuperação ponto-a-ponto.  

1. Recuperação Geral  

Restaura todo o conteúdo do log binário de backup.

mysqlbinlog [--no-defaults] incremental backup file | mysql -u username -p password

2. Recuperação Baseada em Posição  

Quando um administrador de banco de dados realiza operações, tanto operações incorretas quanto corretas podem ocorrer ao mesmo tempo. A recuperação baseada em posição permite uma recuperação mais precisa. 

Recuperação para uma Posição Específica

mysqlbinlog --stop-position='operation ID' binary log | mysql -u username -p password

Recuperação iniciada a partir de uma posição específica  

mysqlbinlog --start-position='operation ID' binary log | mysql -u username -p password

3. Recuperação em um Ponto no Tempo  

Ignora um ponto de tempo específico com erro para recuperar dados. Existem três métodos: 

1) Recuperação desde o início do log até um ponto específico no tempo  

mysqlbinlog [--no-defaults] --stop-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password

2) Recuperação de um Ponto Temporal Específico até o Fim do Log

mysqlbinlog [--no-defaults] --start-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password

3) Recuperação de um momento para outro momento  

mysqlbinlog [--no-defaults] --start-datetime='YYYY-MM-DD HH:MM:SS' --stop-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password

Uma Maneira Mais Fácil de Criar Backups Incrementais do MySQL

Como você pode ver, todo o processo de realizar backup e recuperação incremental do MySQL usando logs binários é complexo e demorado. Como são operações baseadas em linha de comando, você não terá chance de desfazer se cometer um erro durante os processos de backup e restauração.

Felizmente, o poderoso software de backup MySQL Vinchin Backup & Recovery oferece uma interface amigável para facilitar as coisas.

Vinchin Backup & Recovery oferece uma solução mais automatizada, eficiente e segura, simplificando os processos de backup do MySQL com gerenciamento centralizado, recuperação rápida, backups incrementais e estratégias flexíveis de armazenamento para garantir a disponibilidade contínua dos dados. E também fornece estratégias de backup flexíveis para Oracle DB, SQL Server, SQL Server, PostgreSQL, Postgres Pro e MariaDB, permitindo backup automático, backup diferencial e backup de log de transações.

Para criar tarefas de backup incremental de banco de dados MySQL, acesse a página Physical Backup > Database Backup > Backup (observe que o primeiro backup deve ser um backup completo):

1. Selecione os bancos de dados que precisam ser copiados.

Criar backups incrementais do MySQL

2. Selecione um nó de backup no qual você deseja que os dados de backup sejam processados e armazenados.

Criar Backups Incrementais do MySQL

3. Configure estratégias de backup de acordo com suas necessidades.

Criar Backups Incrementais do MySQL

Aqui você pode escolher o backup incremental como programado.

4. Revise e confirme as configurações.

Criar Backups Incrementais do MySQL

Clique no botão abaixo para experimentar o teste gratuito de 60 dias da Vinchin e conhecer uma solução eficiente e confiável de backup e recuperação de dados!

Perguntas Frequentes sobre Backups Incrementais do MySQL

1. O que acontece se um arquivo de log binário for excluído antes da restauração de um backup incremental?

Se os arquivos de log binário necessários estiverem ausentes, a recuperação pode ser incompleta, resultando em perda de dados. Sempre certifique-se de que os logs binários sejam mantidos até que não sejam mais necessários.

2. Por quanto tempo devo manter os logs binários do MySQL para backups incrementais?

Depende da sua política de backup. Normalmente, os logs devem ser mantidos até que um novo backup completo seja concluído e verificado.

Conclusão 

Recomenda-se atualizar os logs binários de backup incremental diariamente. Isso garante que a frequência do backup do banco de dados seja suficientemente alta para minimizar o risco de perda de dados. Ao atualizar os backups incrementais diariamente, as alterações no banco de dados podem ser gerenciadas de forma mais eficaz, permitindo a restauração para o estado mais recente quando necessário.  

Compartilhar em:

Categories: Database Backup