MyISAM
Für eine MyISAM-Tabelle mydb.mytable sollten Sie drei Dateien haben
\bin\mysql\mysql5.6.12\data\mydb\mytable.frm
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYD
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYI
Sie sollten bereits als Tabelle verfügbar sein, da jede Datei die erforderlichen Daten, Metadaten und Indexinformationen enthält. Zusammen bilden sie den Tisch. Es sind keine externen Speichermechanismen verfügbar.
InnoDB
Schauen Sie sich diese bildliche Darstellung von InnoDB an
Das einzige, was ibdata1 an die .ibd
Dateien anfügt, ist das Datenwörterbuch.
Ihre Mission, sollten Sie sich dafür entscheiden, es zu akzeptieren, ist es, jeden Tisch zu erstellen und in den zu tauschen .ibd
Bevor Sie etwas tun, erstellen Sie eine vollständige Kopie von "\ bin \ mysql \ mysql5.6.12 \ data" für eine andere
Hier ist ein Beispiel
Angenommen, Sie haben eine Datenbank mydb
mit der Tabelle mytable
. Das heisst
- Sie haben den Ordner
\bin\mysql\mysql5.6.12\data\mydb
- In diesem Ordner haben Sie
Du brauchst das .frm
. Wenn Sie sich meinen Beitrag ansehen Wie kann man das Tabellenschema nur aus der .frm-Datei extrahieren? können Sie ein MySQL-Dienstprogramm herunterladen, mit dem die zum Erstellen der Tabelle erforderliche SQL generiert werden kann.
Sie sollten jetzt Folgendes tun
- Bewegen Sie sich
mytable.ibd
zu\bin\mysql\mysql5.6.12\data
- Führen Sie die SQL aus, um die InnoDB-Tabelle zu erstellen
- Bei MySQL anmelden und ausführen
ALTER TABLE mydb.mytable DISCARD TABLESPACE;
(dies wird gelöscht \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
)
- Kopieren
\bin\mysql\mysql5.6.12\data\mytable.ibd
in\bin\mysql\mysql5.6.12\data\mydb
- Melden Sie sich bei MySQL an und führen Sie es aus
ALTER TABLE mydb.mytable IMPORT TABLESPACE;
(dies wird \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
im Datenwörterbuch registriert ).
Danach sollte die Tabelle mydb.mytable
vollständig zugänglich sein. Sie können diese Barrierefreiheit testen, indem Sie einfach Folgendes ausführen:
SELECT * FROM mydb.mytable LIMIT 10;
Versuche es !!!
DRINK (Data Recovery beinhaltet das notwendige Wissen) Verantwortungsbewusst
information_schema.key_column_usage
(wahrscheinlich auch anderen Tabellen) keine Daten zurück.select
Sie müssen also mindestens eine Abfrage ausführen und einige Sekunden warten, bis die nächste Abfrage ausgeführt werden kann. (mysql Ver 14.14 Distrib 5.7.19, für linux-glibc2.12 (x86_64) mit EditLine-Wrapper)