sql >> Databasteknik >  >> RDS >> Mysql

Återställ tabellstruktur från frm- och ibd-filer

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.

  1. Installera först MySQL Utilities .Då kan du använda mysqlfrm kommando i kommandotolken (cmd).

  2. För det andra, hämta SQL-frågorna från .frm filer med mysqlfrm 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.



  1. Skillnad mellan Oracles plus (+) notation och ansi JOIN notation?

  2. CAST vs ssis dataflöde implicit konverteringsskillnad

  3. SQL Server Databas Snapshots -3

  4. Hur man skapar utländsk nyckelbegränsning med PÅ UPPDATERING CASCADE i SQL Server - SQL Server / TSQL Handledning Del 79