Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Restaurar a estrutura da tabela de arquivos frm e ibd


Eu restaurei a tabela apenas de .frm e .idb arquivos.

Obtenha a consulta SQL para criar as tabelas


Se você já conhece o esquema de suas tabelas, pode pular esta etapa.

  1. Primeiro, instale os Utilitários MySQL .Então você pode usar mysqlfrm comando no prompt de comando (cmd).

  2. Segundo, obtenha as consultas SQL de .frm arquivos usando mysqlfrm comando:
    mysqlfrm --diagnostic <path>/example_table.frm
    

Então você pode obter a consulta SQL para criar a mesma tabela estruturada.
CREATE TABLE `example_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(150) NOT NULL,
  `photo_url` varchar(150) NOT NULL,
  `password` varchar(600) NOT NULL,
  `active` smallint(6) NOT NULL,
  `plan` int(11) NOT NULL,
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;

Crie as tabelas


Crie a(s) tabela(s) usando a consulta SQL acima.

Se os dados antigos ainda existirem, talvez seja necessário descartar primeiro o respectivo banco de dados e tabelas. Certifique-se de ter um backup dos arquivos de dados.

Restaurar os dados


Execute esta consulta para remover novos dados da tabela:
ALTER TABLE example_table DISCARD TABLESPACE;

Isso remove as conexões entre o novo .frm arquivo e o (novo, vazio) .idb Arquivo. Além disso, remova o .idb arquivo na pasta.

Em seguida, coloque o antigo .idb arquivo para a nova pasta, por exemplo:
cp backup/example_table.ibd <path>/example_table.idb

Certifique-se de que o .ibd arquivos podem ser lidos pelo mysql usuário, por exemplo executando chown -R mysql:mysql *.ibd na pasta.

Execute esta consulta para importar dados antigos:
ALTER TABLE example_table IMPORT TABLESPACE;

Isso importa dados do .idb arquivo e irá restaurar os dados.