Por alguma razão, quando eu tento abrir meus tabelas que estão armazenadas no .frm
e .ibd
arquivos (seja em MySQL ou phpmyadmin) dá-me um erro de sintaxe, ou ele diz que não existe.
Eu li o outro post que teve um problema semelhante a este, mas não sei como verificar se innodb_file_per_table
está ativado, e no geral estou realmente muito confuso. Também converti uma cópia do meu mysql-bin.000002
arquivo em um arquivo txt, para ver que os dados do meu banco de dados não estão completamente perdidos.
O banco de dados foi criado no ano passado. Eu tenho 6 desses mysql-bin.00000
arquivos, mas por algum motivo o .000002
é o maior. No momento, tenho os arquivos .ibd
e .frm
para todos os meus bancos de dados, mas não sei como restaurá-lo no MySQL, ou pelo menos em algo que possa ler.
Estou usando o WampServer 2.4 e o MySQL 5.6.12 no Windows 2003 Server. Além disso, devo baixar um plugin no InnoDB?
Respostas:
Finalmente descobri e resolvi meu problema através de várias tentativas e erros. Para aqueles que não possuem o arquivo ibdata1 original e apenas os arquivos .frm e .ibd, veja como restaurei meus dados.
Espero que isso tenha ajudado e deixe-me saber se você tiver quaisquer perguntas ou comentários! Além disso, consulte http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file para obter mais detalhes.
fonte
Got error -1 from storage engine
ao executarIMPORT TABLESPACE
. Mas, para mim, o MySQL 5.6 funcionou para tabelas criadas com o MySQL 5.5, então tudo é bom;). Se você está com o 5.5, siga as instruções no link chriscalender que você colocou.innodb_file_per_table
ativou.O principal arquivo de dados do InnoDB - geralmente chamado
ibdata
- é essencial para que o MySQL possa entender seus arquivos .ibd.Se você precisar mover dados entre servidores usando os arquivos binários, pare o MySQL de maneira limpa e depois mova todos os arquivos de dados, incluindo o (s) arquivo (s) ibdata , entre os diretórios.
Um mecanismo mais confiável de mover dados entre servidores no Windows seria usar (
mysqldump
) ou uma exportação de banco de dados do PHPMyAdmin (ou uma ferramenta semelhante).Se o log binário tiver sido ativado o tempo todo em que o servidor estiver em execução (com base nos comentários, isso pode não ser o caso), você também poderá
mysqlbinlog
recuperar todas as instruções SQL executadas no servidor a partir dos arquivos mysql-bin e recrie o banco de dados dessa maneira. Deve haver registros de data e hora unix nos arquivos mysql-bin que ajudam a determinar até que ponto eles voltam.Se você perdeu os arquivos originais do banco de dados e tudo o que resta são os arquivos .ibd individuais, pode ser necessário recorrer à recuperação dos dados conforme as sugestões de akuzminsky nos comentários.
O MySQL 5.6 possui alguns novos recursos para mover arquivos de dados .ibd do InnoDB ( espaços de tabela transportáveis ), mas isso exige algum esforço e, para um banco de dados suficientemente pequeno, será muito mais fácil transferir dados usando
mysqldump
.fonte
Resposta do Wiki gerada a partir de comentários de perguntas de akuzminsky
Se você ver
*.ibd
os arquivos, em seguida,innodb_file_per_table
éON
, caso contrário, todas as tabelas estaria emibdata1
.Se indicar que uma tabela não existe, ela estará ausente no dicionário InnoDB. Tente despejar todas as tabelas em despejos sql separados (uma tabela - um arquivo). As tabelas que você não pode despejar, podem restaurar com o kit de ferramentas de recuperação TwinDB .
Ainda não há pacotes binários. Você precisa obter o código fonte do GitHub e compilá-lo. Veja as instruções no dicionário Recuperar InnoDB . É bem direto:
e depois
fonte