Este é um tópico que em geral você nunca deveria ter que fazer ... Por quê? Porque você criou backups certos ... Você testou e sabe que os backups funcionam, então você pode simplesmente restaurar esses backups e obter seu esquema perdido e dados relacionados ...
No entanto, aquela instância no escritório de canto ... você nunca teve o tempo de configurar ... não é tão importante ... apenas travou e agora você percebe como realmente a usa ...
Nem tudo está perdido ..
O MySQL lanç seus utilitários MySQL há algum tempo e, desde então, foi substituído mais pelo MySQL Shell.
O
mysqlfrm ainda é muito útil quando precisa retirar o esquema de um
arquivo FRM em um comando rápido e simples e é uma instalação simples.
mysqlfrm --diagnostic city.frm
# WARNING: Cannot generate character set or collation names
without the --server option.
# CAUTION: The diagnostic mode is a best-effort parse of the
.frm file. As such, it may not identify all of the components of the
table correctly. This is especially true for damaged files. It will also
not read the default values for the columns and the resulting statement
may not be syntactically correct.
# Reading .frm file for city.frm:
# The .frm file is a TABLE.
# CREATE TABLE Statement:
CREATE TABLE `city` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(160) DEFAULT NULL,
`CountryCode` char(12) NOT NULL,
`District` char(80) NOT NULL,
`Population` int(11) NOT NULL,
PRIMARY KEY `PRIMARY` (`ID`),
KEY `CountryCode` (`CountryCode`),
KEY `popkey` (`Population`)
) ENGINE=InnoDB;
#...done.
Agora que você tem o esquema que perdeu ... reconstrua o banco de dados ou uma tabela. Por causa do exemplo, direi que acabamos de perder os dados da cidade do banco de dados mundial.
$ cp city.ibd / tmp /
$ cp city.ibd /tmp/
mysql> LOCK TABLES city WRITE;
mysql> ALTER TABLE city DISCARD TABLESPACE;
cp city.ibd /edb/local/mysql/data/rundeck/
chown tmdba:dba /edb/local/mysql/data/rundeck/city.ibd
mysql> ALTER TABLE city IMPORT TABLESPACE;
mysql> UNLOCK TABLES;
mysql> SELECT COUNT(*) FROM city;