Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Stellen Sie die Tabellenstruktur aus frm- und ibd-Dateien wieder her

Ich habe die Tabelle nur aus .frm wiederhergestellt und .idb Dateien.

Holen Sie sich die SQL-Abfrage, um die Tabellen zu erstellen

Wenn Sie das Schema Ihrer Tabellen bereits kennen, können Sie diesen Schritt überspringen.

  1. Installieren Sie zuerst MySQL Utilities .Dann können Sie mysqlfrm verwenden Befehl in der Eingabeaufforderung (cmd).

  2. Zweitens holen Sie sich die SQL-Abfragen aus .frm Dateien mit mysqlfrm Befehl:

    mysqlfrm --diagnostic <path>/example_table.frm
    

Dann können Sie die SQL-Abfrage dazu bringen, dieselbe strukturierte Tabelle zu erstellen. So:

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;

Erstellen Sie die Tabellen

Erstellen Sie die Tabelle(n) mit der obigen SQL-Abfrage.

Wenn die alten Daten noch vorhanden sind, müssen Sie möglicherweise zuerst die entsprechende Datenbank und die entsprechenden Tabellen löschen. Stellen Sie sicher, dass Sie eine Sicherungskopie der Datendateien haben.

Daten wiederherstellen

Führen Sie diese Abfrage aus, um neue Tabellendaten zu entfernen:

ALTER TABLE example_table DISCARD TABLESPACE;

Dadurch werden Verbindungen zwischen der neuen .frm entfernt Datei und die (neue, leere) .idb Datei. Entfernen Sie auch die .idb Datei im Ordner.

Legen Sie dann die alte .idb ab Datei in den neuen Ordner, z. B.:

cp backup/example_table.ibd <path>/example_table.idb

Stellen Sie sicher, dass die Datei .ibd Dateien können von mysql gelesen werden Benutzer, z. indem Sie chown -R mysql:mysql *.ibd ausführen im Ordner.

Führen Sie diese Abfrage aus, um alte Daten zu importieren:

ALTER TABLE example_table IMPORT TABLESPACE;

Dies importiert Daten aus der .idb Datei und stellt die Daten wieder her.