Wenn ich versuche, meine in .frm
und in .ibd
Dateien gespeicherten Tabellen (ob unter MySQL oder phpmyadmin) zu öffnen, wird aus irgendeinem Grund ein Syntaxfehler angezeigt oder es wird angegeben, dass er nicht vorhanden ist.
Ich habe den anderen Beitrag gelesen, der ein ähnliches Problem hatte, aber ich weiß nicht, wie ich überprüfen soll, ob er innodb_file_per_table
aktiviert ist, und insgesamt bin ich nur sehr verwirrt. Ich habe auch eine Kopie meiner mysql-bin.000002
Datei in eine txt-Datei konvertiert, damit ich sehe, dass die Daten aus meiner Datenbank nicht vollständig verloren gehen.
Die Datenbank wurde letztes Jahr erstellt. Ich habe 6 dieser mysql-bin.00000
Dateien, aber aus irgendeinem Grund .000002
ist die größte. Im Moment habe ich die .ibd
und .frm
-Dateien für alle meine Datenbanken, aber ich weiß nicht, wie ich sie wieder in MySQL oder zumindest in etwas wiederherstellen kann, das ich lesen kann.
Ich verwende WampServer 2.4 und MySQL 5.6.12 unter Windows 2003 Server. Soll ich auch ein Plugin in InnoDB herunterladen?
Antworten:
Ich habe es endlich herausgefunden und mein Problem durch viel Ausprobieren gelöst. Für diejenigen, die nicht über ihre ursprüngliche ibdata1-Datei verfügen und nur über ihre .frm- und .ibd-Dateien verfügen, habe ich meine Daten wie folgt wiederhergestellt.
Ich hoffe das hat geholfen und lass es mich wissen, wenn du Fragen oder Kommentare hast! Weitere Informationen finden Sie unter http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file .
quelle
Got error -1 from storage engine
beim Ausführen der Fehler angezeigtIMPORT TABLESPACE
. Aber für mich hat MySQL 5.6 für Tabellen funktioniert, die mit MySQL 5.5 erstellt wurden, also ist alles gut;). Wenn Sie mit 5.5 nicht weiterkommen , müssen Sie den Anweisungen im von Ihnen gestellten Chriscalender-Link folgen .innodb_file_per_table
aktiviert haben.Die Haupt-InnoDB-
ibdata
Datendatei - normalerweise benannt - ist für MySQL unerlässlich, um Ihre .ibd-Dateien verstehen zu können.Wenn Sie Daten mithilfe der Binärdateien zwischen Servern verschieben müssen, sollten Sie MySQL sauber stoppen und dann alle Datendateien, einschließlich der ibdata-Datei (en) , zwischen Verzeichnissen verschieben.
Ein zuverlässigerer Mechanismus zum Verschieben von Daten zwischen Servern unter Windows wäre die Verwendung von (
mysqldump
) oder eines Datenbankexports von PHPMyAdmin (oder einem ähnlichen Tool).Wenn die binäre Protokollierung während der gesamten Laufzeit Ihres Servers aktiviert wurde (basierend auf den Kommentaren ist dies möglicherweise nicht der Fall), können Sie auch
mysqlbinlog
jede SQL-Anweisung, die Sie auf dem Server ausgeführt haben, aus den mysql-bin-Dateien wiederherstellen und erstellen Sie die Datenbank auf diese Weise neu. Die mysql-bin-Dateien sollten Unix-Zeitstempel enthalten , mit denen Sie feststellen können, wie weit sie zurückreichen.Wenn Sie Ihre ursprünglichen Datenbankdateien verloren haben und nur noch die einzelnen .ibd-Dateien übrig sind, müssen Sie möglicherweise die Daten gemäß den Vorschlägen von akuzminsky in den Kommentaren wiederherstellen.
MySQL 5.6 verfügt über einige neue Funktionen zum Verschieben von InnoDB .ibd-Datendateien ( transportable Tablespaces ). Diese erfordern jedoch einige Anstrengungen und für eine ausreichend kleine Datenbank wird es viel einfacher sein, Daten mit zu übertragen
mysqldump
.quelle
Wiki-Antwort generiert aus Fragekommentaren von akuzminsky
Wenn Sie
*.ibd
Dateien sehen , danninnodb_file_per_table
istON
, sonst wären alle Tabellen inibdata1
.Wenn eine Tabelle nicht vorhanden ist, fehlt sie im InnoDB-Wörterbuch. Versuchen Sie, alle Tabellen in separate SQL-Dumps (eine Tabelle - eine Datei) zu sichern. Die Tabellen, die Sie nicht sichern können, können Sie mit dem TwinDB Recovery Toolkit wiederherstellen .
Es gibt noch keine Binärpakete. Sie müssen den Quellcode von GitHub abrufen und kompilieren. Siehe Anweisungen im Recover InnoDB-Wörterbuch . Es ist ziemlich einfach:
und dann
quelle