Forum: PC Hard- und Software MySQL: Datenbank-Files "unterschieben"?


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ich habe aus der Datenrettung eines gecrashten PC lediglich den 
Datenbank-Ordner unterhalb des "data"-Ordner einer MySQL-Datenbank. Die 
Dateiendungen pro Tabelle lauten "*.frm" und "*.idb" - es handelt sich 
wohl um Tabellen im Format InnoDB.

Wie bekomme ich die Datenbank wieder zum laufen, wenigstens soweit, dass 
ich sie mittels mysqldump in das *.sql-Format exportieren kann?

Einfach in den data-Ordner einer anderen MySQL-installation kopieren, 
klappt leider nicht. Ich kann dann zwar z.B. "use dbname" und "show 
tables" ausfühen, aber bei jedem Zugriffsversuch auf eine der Tabellen 
z.B. mit "select count ... from xyz" erhalte ich immer nur "... table 
xyz not exists", obwohl sie natürlich existiert.

Bei einer XAMPP-Installation und dem Öffnen der MySQL-Datenbank mittels 
PHPMyAdmin, der ich einen solchen Ordner untergeschoben hatte, führt das 
sogar dazu, dass die vorher vorhandenen und korrekt zugreifbaren 
Datenbanken wie "test" und "mysql" nicht mehr angezeigt werden.

Gibts irgend ein Tool, was *.idb-Files importieren kann? Danke für Tips.

: Bearbeitet durch User
von Anfänger (Gast)


Lesenswert?

Was hast du denn sonst noch probiert?

Hier scheint jemand das gleiche zu Problem zu haben. hilft das vllt 
weiter?

http://dba.stackexchange.com/questions/16875/mysql-how-to-restore-table-stored-in-a-frm-and-a-ibd-file

von Axel S. (a-za-z0-9)


Lesenswert?

Frank E. schrieb:
> Ich habe aus der Datenrettung eines gecrashten PC lediglich den
> Datenbank-Ordner unterhalb des "data"-Ordner einer MySQL-Datenbank. Die
> Dateiendungen pro Tabelle lauten "*.frm" und "*.idb" - es handelt sich
> wohl um Tabellen im Format InnoDB.

Yep.

> Einfach in den data-Ordner einer anderen MySQL-installation kopieren,
> klappt leider nicht. Ich kann dann zwar z.B. "use dbname" und "show
> tables" ausfühen, aber bei jedem Zugriffsversuch auf eine der Tabellen
> z.B. mit "select count ... from xyz" erhalte ich immer nur "... table
> xyz not exists", obwohl sie natürlich existiert.

Das liegt daran, daß InnoDB ein eigenes data dictionary hat, das im 
globalen Tablespace (typisch: ibdata1) liegt. Ohne das kennt es die 
Tabellen nicht. SHOW TABLES sucht (und findet) nur .frm Files.

> Gibts irgend ein Tool, was *.idb-Files importieren kann? Danke für Tips.

Google-Suche nach "recover InnoDB table from ibd file" liefert etliche 
Treffer. Ich würde mit dem Lesen aber nicht bei Stackexchange anfangen, 
sondern bei den Profis:

http://www.chriscalender.com/recovering-an-innodb-table-from-only-an-ibd-file/
https://www.percona.com/blog/2013/11/05/how-to-recover-an-orphaned-ibd-file-with-mysql-5-6/

Bei hinreichend neuer MySQL-Version könnte es sogar reichen, eine 
gleiche Tabelle (SHOW CREATE TABLE mit dem existierenden .frm File) 
anzulegen und dann mit DISCARD/IMPORT TABLESPACE das alte .ibd File 
unterzuschieben.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Es ist mir gelungen, die Daten mittels PHPMyadmin zu exportieren und in 
eine neu angelegte DB zu importieren. Für Alle, die das gleiche Problem 
haben, hier die Kurzanleitung:

1. im my.ini bzw. my.cnf (je nach System) innerhalb des Bereiches 
[mysqld] hinzufügen:"innodb_force_recovery = 7"

2. in PHPMyadmin den Home-Bereich wählen (Häuschen-Symbol) und auf 
"Export" gehen. Keine spezielle Datenbank wählen, sondern alle, 
ansonsten gab es bei mir sofort wieder Fehlermeldungen. Alles im 
"SQL"-Format und ohne Kompression exportieren

3. In der exportierten Datei (reiner Text) den Bereich für die gesuchte 
Datenbank stehen lassen, den Rest löschen. Die Bereiche sind durch 
Kommentare kenntlich gemacht.

4. neue leere DB anlegen und per Import die bearbeitete SQL-Datei 
imporieren

Täräh! Alles wider da und fehlerfrei nutzbar (zumindest bei mir) !!!

von Peter II (Gast)


Lesenswert?

Frank E. schrieb:
> Für Alle, die das gleiche Problem
> haben, hier die Kurzanleitung:

nur würde ich solche Dinge vermutlich gleich alles im mysql Client 
machen. Dafür braucht man doch kein PHPMyadmin.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Peter II schrieb:
> Frank E. schrieb:
>> Für Alle, die das gleiche Problem
>> haben, hier die Kurzanleitung:
>
> nur würde ich solche Dinge vermutlich gleich alles im mysql Client
> machen. Dafür braucht man doch kein PHPMyadmin.

Ja, ist natürlich richtig, der war aber da und damit "bequemer".

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.