Depois que um servidor Mac falhou, estou lutando para recuperar os registros de uma tabela InnoDB. Todas as tabelas compartilhavam um único arquivo de dados. Eu copiei ibdata1 e os dois arquivos de log para um novo servidor mysql hospedado no Windows para recuperação, junto com o único arquivo .frm para a tabela de que preciso. Até agora, a recuperação falhou miseravelmente.
A tentativa de várias opções innodb_force_recovery
em combinação com lower_case_table_names
opções em cópias desses arquivos de dados não resolve o problema. Até mesmo um início normal usando cópias desses arquivos detecta inicialmente o travamento e o repara, e outras startups não apresentam erros. Excluir o ib_logfiles e fazer com que o Mysql os recriar no reinício não resolve o problema. Alterar o nome do arquivo .frm para todas as letras minúsculas e reiniciar não resolve o problema.
SHOW TABLES
query mostra a tabela, mas qualquer consulta na própria tabela falha com o erro 1146. Ao executar um innodb_table_monitor
, na saída eu posso ver claramente a definição da tabela (mais ou menos) e a contagem da linha. Visualizando o conteúdo do arquivo ibdata1, vejo todos os dados do registro em texto simples, mas não há nenhum padrão utilizável para analisá-lo.
Pelo que eu posso dizer, o problema parece se resumir a "erro 1146 - Tabela 'db.my_table' não existe" quando tento referenciar a tabela em qualquer comando ou consulta. Você vê, a tabela foi criada com caracteres maiúsculos no Mac e, de acordo com o MySQL, o Windows não consegue lidar com isso.
Alguém sabe de uma solução para extrair esses registros?