Meu diretório WAMP foi excluído acidentalmente por outro usuário. Apenas a pasta de dados no MySQL está disponível. E, nessa apenas pastas de banco de dados (pastas em "\bin\mysql\mysql5.6.12\data\" com nome de bancos de dados) estão disponíveis. Todos os arquivos incluindo " ibdata1 " na raiz de "\bin\mysql\mysql5.6.12\data\" também são excluídos.
As pastas do banco de dados contêm apenas arquivos com as extensões abaixo.
*.frm, *.ibd
e arquivo "db.opt".
Como os bancos de dados podem ser recuperados?
Eu já tentei recuperar bdata1. Mas, incapaz de recuperá-lo. E, algum banco de dados contém MYISAM também.
MyISAM
Para uma tabela MyISAM mydb.mytable, você deve ter três arquivos
\bin\mysql\mysql5.6.12\data\mydb\mytable.frm
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYD
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYI
Eles já devem estar acessíveis como uma tabela, pois cada arquivo contém dados, metadados e informações de índice necessários. Coletivamente, eles formam a mesa. Não há mecanismos de mecanismo de armazenamento externo para acessar.
InnoDB
Dê uma olhada nesta representação pictórica do InnoDB
A única coisa que anexa ibdata1 aos
.ibd
arquivos é o dicionário de dados.Sua missão, caso decida aceitá-la, é criar cada mesa e trocar no
.ibd
Antes de fazer qualquer coisa, faça uma cópia completa de "\bin\mysql\mysql5.6.12\data" para outro
Aqui está uma amostra
Suponha que você tenha um banco de dados
mydb
com a tabelamytable
. Isso significa\bin\mysql\mysql5.6.12\data\mydb
mytable.frm
mytable.ibd
Você precisa do
.frm
. Se você olhar para o meu post Como extrair o esquema da tabela apenas do arquivo .frm? , você pode baixar um utilitário MySQL que pode gerar o SQL necessário para criar a tabela.Agora você deve fazer o seguinte
mytable.ibd
para\bin\mysql\mysql5.6.12\data
ALTER TABLE mydb.mytable DISCARD TABLESPACE;
(Isso excluirá\bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
)\bin\mysql\mysql5.6.12\data\mytable.ibd
em\bin\mysql\mysql5.6.12\data\mydb
ALTER TABLE mydb.mytable IMPORT TABLESPACE;
(isso será registrado\bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
no dicionário de dados)Depois disso, a tabela
mydb.mytable
deve estar totalmente acessível. Você pode testar essa acessibilidade simplesmente executando:De uma chance !!!
DRINK (recuperação de dados incorpora o conhecimento necessário) com responsabilidade