Obnovil jsem tabulku pouze z .frm
a .idb
soubory.
Získejte dotaz SQL pro vytvoření tabulek
Pokud již znáte schéma svých tabulek, můžete tento krok přeskočit.
-
Nejprve nainstalujte Utility MySQL .Potom můžete použít
mysqlfrm
příkaz v příkazovém řádku (cmd). -
Za druhé, získejte dotazy SQL z
.frm
soubory pomocímysqlfrm
příkaz:mysqlfrm --diagnostic <path>/example_table.frm
Pak můžete získat SQL dotaz k vytvoření stejné strukturované tabulky. Jako toto:
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;
Vytvořte tabulky
Vytvořte tabulku(y) pomocí výše uvedeného SQL dotazu.
Pokud stará data stále existují, možná budete muset nejprve zrušit příslušnou databázi a tabulky. Ujistěte se, že máte zálohu datových souborů.
Obnovte data
Spuštěním tohoto dotazu odstraníte nová data tabulky:
ALTER TABLE example_table DISCARD TABLESPACE;
Tím se odstraní spojení mezi novým .frm
a (nový, prázdný) .idb
soubor. Odstraňte také .idb
soubor ve složce.
Poté vložte starý .idb
soubor do nové složky, např.:
cp backup/example_table.ibd <path>/example_table.idb
Ujistěte se, že .ibd
soubory lze číst pomocí mysql
uživatel, např. spuštěním chown -R mysql:mysql *.ibd
ve složce.
Chcete-li importovat stará data, spusťte tento dotaz:
ALTER TABLE example_table IMPORT TABLESPACE;
Tím se importují data z .idb
soubor a obnoví data.