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
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
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.
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) !!!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.