antes de iniciar, procure realizar o passo a passo no mesmo versionamento do mysql
- no novo banco de dados, crie o mesmo
database
com as mesmastabelas
(IMPORTANTE! Se conseguir criar com o mesmo layout de colunas será ótimo, porque o.ibd
vai recuperar a mesma ordem dos dados. Mais abaixo e explico melhor) - acesse a pasta
data
- execute
ls -la
e obtenha oowner
do 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
) é oowner
dos meu diretórios - agora que identificamos, vamos aos
.ibd
s, então no diretóriodata
você vai encontrar o diretório com o mesmo nome dodatabase
que 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
owner
que 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
owner
agora 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
tablespace
para 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
dumps
ou 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