Backup incremental / diferencial do MySQL usando mysqldump

9

Existem técnicas para usar o mysqldump (ou comando similar) para fazer backups incrementais ou diferenciais para o MySQL?

Brian Boatright
fonte

Respostas:

0

Eu uso binlogs, mas eles não são uma solução definitiva e eu também me dependo de snapshots.

Há duas razões principais para isso:

  • Os binlogs armazenam todas as alterações. Uma semana de binlogs provavelmente será significativamente maior do que a diferença entre dois instantâneos por semana. O único alívio é que os binlogs tendem a se compactar bem (geralmente bem abaixo de 10%).
  • Se você precisar auditar ou voltar, a reprodução do binlog em um snapshot antigo levará muito tempo e, quanto maior o binlog, maior a chance de erro, portanto, você precisará de snapshots regulares.

Recentemente, tive um grande número de instantâneos, não havia comprimido ou diferencial. Eu experimentei o diff e descobri que, mesmo com opções como nenhum contexto, os diffs resultantes eram maiores.

Sem tentar todas as alternativas, a melhor coisa que encontrei foi rdiff. Isso os reduziu para cerca de 5% do tamanho para mim e, quando compactado com xz na zona de 1%.

Embora os arquivos de assinatura rdiff não sejam compactados bem, pois são coleções de hash (o mesmo que dados aleatórios), compactá-los um contra o outro deve produzir bons resultados.

Muitas pessoas não precisam dessa solução, pois na maioria dos casos, se houver uma falha, elas precisarão armazenar o banco de dados com a imagem mais recente e atualizá-lo o mais rápido possível.

No entanto, se você possui um sistema complexo que precisa de muita contabilidade, auditoria, depuração etc. (coisas mais críticas que um blog), o armazenamento eficiente de instantâneos se torna importante.

jgmjgm
fonte