No trabalho, fazemos um despejo noturno de nossos bancos de dados mysql. Diariamente, gostaria de estimar que cerca de 90-95% dos dados são duplicados, aumentando à medida que o tempo passa. (Heck neste momento alguns são provavelmente 99%)
Esses despejos são onde uma linha é uma única instrução INSERT do mysql; portanto, as únicas diferenças são as linhas inteiras e a ordem em que elas estão no arquivo. Se eu os classificasse, a diferença real de arquivo para arquivo seria muito pequena.
Eu estive procurando e não encontrei nenhuma maneira de classificar a saída no dump. Eu poderia passar através do sort
comando, no entanto. Então haveria longos, longos blocos de linhas idênticas.
Então, eu estou tentando descobrir uma maneira de armazenar apenas as diferenças. Eu poderia começar com um despejo mestre e diferir disso todas as noites. Mas as diferenças seriam maiores a cada noite. Ou, eu poderia fazer diferenças de rolagem, que individualmente seriam muito pequenas, mas parece que levaria mais e mais tempo para calcular, se eu tiver que montar uma comparação mestre de toda a série a cada noite.
Isso é viável? Com quais ferramentas?
Editar Não estou perguntando como fazer backups do mysql. Esqueça o mysql por enquanto. É um arenque vermelho. O que eu quero saber é como fazer uma série de diferenças de rolagem a partir de uma série de arquivos. A cada noite, obtemos um arquivo (que por acaso é um arquivo mysqldump ) 99% semelhante ao arquivo anterior. Sim, nós compactamos todos eles. Mas é redundante ter toda essa redundância em primeiro lugar. Tudo o que realmente preciso é das diferenças da noite anterior ... que são apenas 1% diferentes da noite anterior ... e assim por diante. Então, o que eu estou procurando é como fazer uma série de diferenças, então eu preciso armazenar apenas 1% a cada noite.
fonte
Ultimamente, tenho tentado armazenar dumps de banco de dados no git. Isso pode ser impraticável se os despejos de banco de dados forem realmente grandes, mas funcionou para bancos de dados pequenos (sites do Wordpress e similares).
Meu script de backup é aproximadamente:
fonte
Você pode fazer algo assim (com
a.sql
o backup semanal).Seus arquivos diff ficarão maiores até o final da semana.
Minha sugestão, porém, é apenas gzip-lo (use
gzip -9
para máxima compressão). Fazemos isso no momento e isso fornece um arquivo de 59 MB gz enquanto o original é de 639 MB.fonte
(Eu não fiz isso na produção.)
Faça um backup completo uma vez por dia ou semana. Os logs de retransmissão de backup uma vez por hora ou dia.
fonte