Jag återställde tabellen från endast .frm
och .idb
filer.
Hämta SQL-frågan för att skapa tabellerna
Om du redan känner till schemat för dina tabeller kan du hoppa över det här steget.
-
Installera först MySQL Utilities .Då kan du använda
mysqlfrm
kommando i kommandotolken (cmd). -
För det andra, hämta SQL-frågorna från
.frm
filer medmysqlfrm
kommando:mysqlfrm --diagnostic <path>/example_table.frm
Sedan kan du få SQL-frågan för att skapa samma strukturerade tabell. Så här:
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;
Skapa tabellerna
Skapa tabellen/tabellerna med ovanstående SQL-fråga.
Om de gamla uppgifterna fortfarande finns kvar kan du behöva släppa respektive databas och tabeller först. Se till att du har en säkerhetskopia av datafilerna.
Återställ data
Kör den här frågan för att ta bort ny tabelldata:
ALTER TABLE example_table DISCARD TABLESPACE;
Detta tar bort kopplingar mellan den nya .frm
filen och (ny, tom) .idb
fil. Ta också bort .idb
filen i mappen.
Lägg sedan in den gamla .idb
fil till den nya mappen, t.ex.:
cp backup/example_table.ibd <path>/example_table.idb
Se till att .ibd
filer kan läsas av mysql
användare, t.ex. genom att köra chown -R mysql:mysql *.ibd
i mappen.
Kör den här frågan för att importera gamla data:
ALTER TABLE example_table IMPORT TABLESPACE;
Detta importerar data från .idb
fil och kommer att återställa data.