Questão Índice MySQL corrompido causou perda de dados! Como recuperar dados?


Introdução ao meu problema está seguindo.

Alguns dias atrás eu não pude iniciar o serviço MySQL no Wamp! Bem, eu estava pesquisando bastante para encontrar a solução por que ele não inicia e um cara sugeriu desligar o Wamp, remover um arquivo de índice e iniciar o Wamp novamente (para que o Wamp tente recriar o índice corrompido novamente, ou algo assim)

O arquivo que removi é este:

bin\mysql\mysql5.6.12\data\mysql-bin.index

OK, após o reinício, recebi novamente o ícone verde na tentativa do sistema e o serviço começou a funcionar normalmente.

Agora, esse arquivo de índice tem conteúdo como:

.\mysql-bin.000029
.\mysql-bin.000030
.\mysql-bin.000031

Antes desse erro, ele tem a mesma estrutura com números 000001-000028.

Estou usando o Wamp 2.4 (x86) com o Apache 2.4.4 / MySQL 5.6.12 / PHP 5.4.16.

Problema vem aqui.

Depois disso eu tentei acessar alguns dos meus mais recentes projetos php e com todos eles eu estou recebendo mensagem de erro semelhante no navegador.

Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dbname.tablename'
doesn't exist' in C:\wamp\www\... on line xxx

Eu comecei o Navicat Premium para ver o que está errado e, à primeira vista, todos os bancos de dados e tabelas estavam lá (e eles ainda estão). Nunca mudei nada com a instalação do Wamp, então o nome de usuário e a senha ainda são os mesmos ("root"/"").

Então percebi que as tabelas em bancos de dados são apenas nomes na lista. Quando eu tento abrir algum deles eu estou ficando erro 1146 - Table 'database_name.table_name' doesn't exist

enter image description here

Eu não tenho cópia de segurança!

Agora posso criar novos bancos de dados / tabelas e eles funcionam, mas não podem usar dbs / tbls antigos. Existe alguma coisa que eu possa fazer para recuperar esses bancos de dados / tabelas. Na verdade, apenas um banco de dados é importante porque não tenho backup para esse.

Eu tentei fazer mysql-bin.index arquivo manualmente, com todas as linhas (000001-000031), mas ainda não funciona. Eu tentei encontrar soluções em toda a web, incluindo StackOverflow e MySQL site oficial, mas não encontrei nada utilizável. Eu encontrei algumas dicas, mas nada resolveu o meu problema ou eu simplesmente não sabia como seguir as instruções.

Atualização 1

Download completo do diretório 'data' (1.2Mb)


1


origem


mysql-bin Os arquivos são arquivos de log binários dos eventos que aconteceram dentro do banco de dados. Seu banco de dados foi desligado incorretamente antes de você perceber esse problema? Isso pode causar problemas como este. Qual é o mecanismo de banco de dados para suas tabelas? Você verificou que existem arquivos correspondentes para o mecanismo de banco de dados no diretório de dados do MySQL? - Tero Kilkanen
@TeroKilkanen, Provavelmente isso aconteceu porque a eletricidade estava desligada enquanto o servidor estava funcionando, mas não posso ter certeza. O mecanismo de banco de dados é o InnoDB. Não sei quais arquivos procurar, mas se isso ajudar, posso exportar toda a árvore do diretório 'data' com nomes de arquivos. - Wh1T3h4Ck5
@TeroKilkanen, agora você pode ver o que eu tenho em data dir (atualização 1). - Wh1T3h4Ck5
Basta alcançar seus backups - Iain
@TeroKilkanen, há db.opt e monte de arquivos com nomes de tabelas (.frm e .ibd). Você pode baixar todo data diretório (há link na pergunta). Na verdade, não preciso de dados, preciso apenas de estrutura para poder recriar tabelas. - Wh1T3h4Ck5


Respostas: