O mysqldump é o programa de backup preferido de DBAs e usuários do MySQL. Seja por ser gratuito, seja pela facilidade de uso. E ainda, pelo fato de ser distribuído com todos os pacotes de instalação do MySQL (desde sempre!).
Embora, nem de longe, seja meu programa nem método preferido para realizar cópias de segurança (back ups). Tenho que concordar que, para pequenos bancos de dados (até 30~50 GB) até que ele me surpreende.
E claro que nem toda surpresa é, necessariamente, boa. Às vezes retornar 50GB de backup, não acaba bem.
Agora, convido você a imaginar um cenário. Você tem sua backup, rigorosamente, em dia. O arquivo “txt” que contém sua backup contém 50GB de… comandos SQL válidos, INSERTS em sua maioria. Eis que, a tabela de clientes é danificada, irreparavelmente! E você me diz: “não tem problema, eu tenho backup!”.
Ter backup resolve parte do problema. Note que você tem 50GB de backup, e, que contém todas as tabelas do seu banco de dados. E, para voltar esta backup você levará de 3 a 5 horas, dependendo de uma série de fatores.
Pergunta-se: É racional retornar todas as tabelas, de todos os bancos de dados contidos em sua backup ao invés de somente aquela danificada? A resposta é não!
Existem várias maneiras de conseguir resolver esta questão. Uma delas é usar o alejuice. O alejuice é um simples programa escrito em C que extrai do seu arquivo de backup, gerando pelo mysqldump, somente, a tabela que voce necessita reparar e/ou restaurar.
Seu uso é, bastante, simples: alejuice <nome da tabela a ser extraída> <arquivo de backup> <arquivo de saída>
Abaixo, seguem os binários disponíveis para download:
[download id=”1″]
[download id=”2″]
Sinta-se a vontade para apresentar idéias, e, também para comunicar eventuais erros.
Show! Seria muito pedir uma versão que rode em Windows?
Jonatas, é a falta de tempo de subir uma vm com windows… antes do natal sai!!!
Fala Alexandre,
Testado e aprovado no linux.
Abraco!
Ufff. Que bom que funcionou… Brincadeira, sempre procuro testar tudo várias vezes. Espero que tenha lhe ajudado. Abs.
Issue1: Opção para “cortar” um schema específico (quando feito dump com –all-databases)
Issue2: Opção para adicionar um SET FOREIGN_KEY_CHECKS=0; no início do arquivo output e um FOREIGN_KEY_CHECKS=1; no final. (mesmo gerando o dump com –disable-keys dá problema no restore.)
Fala Thiago, desculpe a demora na resposta… Mas, vou providenciar!