Recuperação de dados MySQL (innoDB) - arquivos .frm ausentes, mas ibdata intacto

Recuperação de dados MySQL (innoDB) - arquivos .frm ausentes, mas ibdata intacto

Um fiasco recente do servidor me deixou com um arquivo ibdata aparentemente intacto, mas apenas metade dos meus diretórios contendo .frm. Copiei tudo isso para uma nova instalação do mysql e recuperei com sucesso os bancos de dados para os quais ainda tinha arquivos .frm. Minha pergunta é: é possível regenerar os arquivos .frm do arquivo ibdata de alguma forma? Ou modificar de alguma forma os arquivos .frm da versão de desenvolvimento do mesmo banco de dados para que possam ser usados ​​para recuperação?

Infelizmente, restaurar a partir do backup não é uma opção viável.

Editado para esclarecer: tentei recuperar os bancos de dados usando arquivos .frm gerados localmente contendo o mesmo esquema - sem dados, mesmo em innodb_force_recovery = 1.

Responder1

Na verdade, nunca fiz isso, mas sua pergunta está relacionada às ferramentas que uso, então fiquei curioso! Parece que isso é realmente possível, aqui está um exemplo:

http://www.chriscalender.com/?p=28

Às vezes você pode precisar recuperar uma tabela quando tudo que você tem é o arquivo .ibd. Nesse caso, se você tentar carregá-lo em uma nova instância, é provável que você encontre alguns erros sobre a não correspondência do ID da tabela. E não há realmente uma maneira de contornar isso.

No entanto, encontrei duas soluções alternativas para isso:

Nota: Você precisará do arquivo .ibd e da instrução CREATE TABLE para cada tabela que deseja recuperar usando esses métodos.

  • Simule o contador da tabela interna do InnoDB. Ou seja, crie tabelas de trabalho (com innodb_file_per_table habilitado) até ter o ponteiro interno do id da tabela igual a (1 – id_of_ibd_table_you_need_to_restore). (Veja Método #1)
  • Edite hexadecimal manualmente o arquivo .ibd, alterando o ID da tabela. (Veja Método #2)

As etapas em si têm várias páginas, então não as colei aqui.

Outra postagem relacionada:http://www.mysqlperformanceblog.com/2011/05/13/connecting-orphaned-ibd-files/

Ficarei curioso para saber se isso funciona, parece que várias pessoas o usaram com sucesso.

informação relacionada