antes de iniciar, procure realizar o passo a passo no mesmo versionamento do mysql
- no novo banco de dados, crie o mesmo
databasecom as mesmastabelas(IMPORTANTE! Se conseguir criar com o mesmo layout de colunas será ótimo, porque o.ibdvai recuperar a mesma ordem dos dados. Mais abaixo e explico melhor) - acesse a pasta
data - execute
ls -lae obtenha oownerdo diretório, creio que em servers sejamysql:mysql, aqui no meu caso aparece-rw-r----- 1 systemd-coredump systemd-coredump 486539264 abr 13 14:32 tbl_varejo_harmonizacao_vendas.ibd, logosystemd-coredump systemd-coredump(ou traduzindosystemd-coredump:systemd-coredump) é oownerdos meu diretórios - agora que identificamos, vamos aos
.ibds, então no diretóriodatavocê vai encontrar o diretório com o mesmo nome dodatabaseque criamos anteriormente. - execute
sudo rm -rf <nome_do_database> - copie o mesmo diretório do diretório que queremos recuperar
sudo cp -r diretorio_recuperar/data/<nome_do_database> . - agora aplique o
ownerque identificamos no passo 3,sudo chown systemd-coredump:systemd-coredump <nome_do_database> - acesse o diretório
cd <nome_do_database> - aplique também o
owneragora a todos os arquivos aqui dentrosudo chown systemd-coredump:systemd-coredump *.* - feito! reinicie o servidor
- depois de reiniciado acesse o seu front end (estou usando o dbeaver) e execute
use mysql; - agora você irá importar o
tablespacepara todas as tabelas do seu databasealter table <nome_da_tabela> import tablespace;
observações:
- eu tive alguns imports que alegaram
InnoDB: Tablespace is missing for table <nome_do_database>/<nome_da_tabela>.
InnoDB: IO Read error: (2, No such file or directory) Error opening './<nome_do_database>/<nome_da_tabela>.cfg', will attempt to import without schema verification
mas que no final, os dados foram importados com sucesso. Podendo, claro, estarem fora de layout que para corrigí-los explico logo abaixo.
- e tive outros casos que
[1808] Schema mismatch (Clustered index validation failed. Because the .cfg file is missing, table definition of the IBD file could be different. Or the data file itself is already corrupted.)
mas que no final ele importou, porém com os dados totalmentes deslocados.
O que identifiquei nestes, é que por exemplo meu layout da tabela está (nome, idade, nascimento) porém no .ibd está (nome, nascimento, idade). O que fiz foi, corrigir o layout da tabela para que ficasse idem ao do .ibd e repetir o processo de recuperação anteriormente explicado, somente para estas tabelas em específico.
Logo em seguida ao executar o comando de import tablespace alegou a divergência acima da falta do .cfg mas os dados foram apresentados de forma correta.
Ao final o que eu me aconselho!
- vou criar os
dumpsou arquivos deinserts - recriar todo o banco de dados
- e importar todos os dados da forma convencional
porque desta forma o servidor está totalmente limpo de manipulação e os dados serão importados de forma correta através do dump ou dos arquivos inserts