ibdata1 wiederherstellen?

ibdata1 wiederherstellen?

am 19.07.2007 23:24:21 von Christian Franzen

Hi!

Hab ein riesen Problem. Gestern ist die Festplatte meines Servers gecrasht,
so das meine MySQL Installation damit jetzt auch weg ist. Die Datenbanken
lagen aber auf einer externen Festplatte. D.h. ich habe jetzt einen neue
MySQL Installation und eine Datei ibdata1 und ich möchte natürlich das mein
Server mit dieser Datei jetzt wieder arbeitet. Aber so einfach wie ich mir
das dachte (einfach rüberkopieren) ist das ganze nicht. Könnt ihr mir sagen
ob und wie ich meinen Datenbanken jetzt wiederherstellen kann?

mfg Xion

Re: ibdata1 wiederherstellen?

am 20.07.2007 00:50:32 von Axel Schwenke

"Christian Franzen" wrote:
>
> Hab ein riesen Problem. Gestern ist die Festplatte meines Servers gecrasht,
> so das meine MySQL Installation damit jetzt auch weg ist. Die Datenbanken
> lagen aber auf einer externen Festplatte. D.h. ich habe jetzt einen neue
> MySQL Installation und eine Datei ibdata1 und ich möchte natürlich das mein
> Server mit dieser Datei jetzt wieder arbeitet. Aber so einfach wie ich mir
> das dachte (einfach rüberkopieren) ist das ganze nicht. Könnt ihr mir sagen
> ob und wie ich meinen Datenbanken jetzt wiederherstellen kann?

Zu ibdata1 gehören noch ib_logfile0 und ib_logfile1. Außerdem brauchst
du zu jeder Tabelle noch das .frm. Kurz gesagt: du brauchst das gesamte
datadir der alten MySQL-Installation. Hast du das?


XL

Re: ibdata1 wiederherstellen?

am 20.07.2007 10:26:47 von Christian Franzen

> Zu ibdata1 gehören noch ib_logfile0 und ib_logfile1. Außerdem brauchst
> du zu jeder Tabelle noch das .frm. Kurz gesagt: du brauchst das gesamte
> datadir der alten MySQL-Installation. Hast du das?

Nein leider nicht. Weiß auch nicht wo die anderen Dateien hin sind.
Eigentlich hatte ich das gesamte datadir auf externe Festplatte ausgelagert
(also in der Configuration des MySQL Servers) aber nachdem die Systemplatte
dann gecrasht war hab ich gesehen dass nur diese eine Datei in dem Ordner
war. Gibt es noch Hoffung oder sidn meine Daten jetzt futsch?

mfg Xion

Re: ibdata1 wiederherstellen?

am 20.07.2007 10:30:13 von Christian Franzen

> Zu ibdata1 gehören noch ib_logfile0 und ib_logfile1. Außerdem brauchst
> du zu jeder Tabelle noch das .frm. Kurz gesagt: du brauchst das gesamte
> datadir der alten MySQL-Installation. Hast du das?

Achja ich hab das Design der Datenbank als Dump falls das hilft. Es fehlen
also nur noch die Daten in den Tabellen.

mfg Xion

Re: ibdata1 wiederherstellen?

am 20.07.2007 11:13:31 von Axel Schwenke

"Christian Franzen" wrote:
>> Zu ibdata1 gehören noch ib_logfile0 und ib_logfile1. Außerdem brauchst
>> du zu jeder Tabelle noch das .frm. Kurz gesagt: du brauchst das gesamte
>> datadir der alten MySQL-Installation. Hast du das?
>
> Achja ich hab das Design der Datenbank als Dump falls das hilft. Es fehlen
> also nur noch die Daten in den Tabellen.

Das würde in der Tat helfen und es besteht eine gewisse Chance,
daß du deine Daten noch wiederbekommst. Was du machen mußt:

1. Das ibdata1 File an einen sicheren Ort kopieren.
2. Ein neues MySQL installieren. Wenn möglich, exakt die gleiche
Version wie vorher.
3. Deinen Dump einspielen. Jetzt sollten alle Tabellen da sein.
4. MySQL runterfahren. ibdata1, ib_logfile0 und ib_logfile1 löschen
und dein altes ibdata1 statt dessen hinkopieren.
5. In my.cnf in Sektion [mysqld] folgende Zeile einfügen:
innodb_force_recovery=1
6. MySQL wieder starten. Jetzt sollten alle Tabellen mit Daten
wieder da sein.
7. Sofort mit mysqldump einen kompletten Dump deiner Daten machen.
8. Wieder eine neue MySQL Installation aufsetzen. Daran denken,
das innodb_force_recovery aus my.cnf zu entfernen.
9. Deinen Dump von 7. einspielen

Viel Erfolg!


XL

Re: ibdata1 wiederherstellen?

am 20.07.2007 12:09:27 von Christian Franzen

> Viel Erfolg!

Du bist mein Held des Tages. Hat super funktioniert. Hab leider gesehen das
ein paar meiner Tabellen MyISAM waren. Die sind dann jetzt wohl weg. Naja,
wenigstens ist der größte Teil gerettet. Danke!

mfg Xion

Re: ibdata1 wiederherstellen?

am 20.07.2007 18:21:22 von Norbert Tretkowski

Am Fri, 20 Jul 2007 00:50:32 +0200 schrieb Axel Schwenke:
> Zu ibdata1 gehören noch ib_logfile0 und ib_logfile1.

Letztere beiden werden von MySQL neu angelegt, falls sie nicht vorhanden
sind.

Norbert

Re: ibdata1 wiederherstellen?

am 21.07.2007 01:52:29 von Axel Schwenke

Norbert Tretkowski wrote:
> Am Fri, 20 Jul 2007 00:50:32 +0200 schrieb Axel Schwenke:

>> Zu ibdata1 gehören noch ib_logfile0 und ib_logfile1.
>
> Letztere beiden werden von MySQL neu angelegt, falls sie nicht vorhanden
> sind.

Das ist wohl wahr. Aber es geht auch weniger um die Existenz der Files
als um deren Inhalt. Wenn die Datenbank nicht sauber heruntergefahren
wurde (bei einem Plattenschaden kann man davon wohl ausgehen) benutzt
InnoDB diese Logfiles, um die letzten aufgezeichneten Transaktionen
nachzuziehen und so wieder einen konsistenten Zustand der Datenbank
sicherzustellen.

Wenn man aber nur die Wahl zwischen "keine Daten" und "evtl. inkonsi-
stente Daten" hat, dann ist letzteres klar das kleinere Übel.


XL