No trabalho, fazemos um despejo noturno de nossos bancos de dados mysql. De dia para dia, gostaria de estimar que cerca de 90-95% dos dados são duplicados, aumentando conforme o tempo passa. (Heck neste momento alguns são provavelmente 99%)
Estes dumps são onde uma linha é uma única instrução INSERT do mysql, então as únicas diferenças são 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.
Estou procurando e não encontrei uma maneira de classificar a saída no dump. Eu poderia canalizá-lo através do comando sort
, no entanto. Então haveria longos e longos blocos de linhas idênticas.
Então, estou tentando descobrir uma maneira de armazenar apenas os diffs. Eu poderia começar com um dump mestre e diferenciar isso a cada noite. Mas os diffs seriam maiores a cada noite. Ou, eu poderia fazer rolling diffs, que individualmente seriam muito pequenos, mas parece que levaria mais e mais tempo para computar, se eu tivesse que montar um diff mestre de toda a série toda noite.
Isso é viável? Com quais ferramentas?
Editar Não estou perguntando como fazer backups do mysql. Esqueça o mysql no momento. É um arenque vermelho. O que eu estou querendo saber é como fazer uma série de diffs de uma série de arquivos. Cada noite nós recebemos um arquivo (que é um arquivo mysqldump ) que é 99% similar ao anterior. Sim, nós gzip todos eles. Mas é redundante ter toda essa redundância em primeiro lugar. Tudo o que eu realmente preciso é das diferenças da noite anterior ... que é apenas 1% diferente da noite anterior ... e assim por diante. Então, o que eu estou procurando é como fazer uma série de diffs, então eu preciso apenas armazenar 1% a cada noite.