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
mysqlfrmkommando i kommandotolken (cmd). -
För det andra, hämta SQL-frågorna från
.frmfiler medmysqlfrmkommando: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.