MySQL ist durch vollgelaufene Platte beschädigt

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

MySQL ist durch vollgelaufene Platte beschädigt

Beitrag von bombaclaude » 27.03.2008 21:04:25

Bei mir war /var/lib/mysql wegen einer vollen Partition nicht mehr beschreibbar. Das hat die bei mir installierte MySQL in Mitleidenschaft gezogen. Soweit ich sehe sind alle Datenbanken und alle Tabellen zumindest physikalisch noch auf der Platte vorhanden. Rufe ich phpmyadmin auf, dann wir mir zum Beispiel für die Datenbank Mediawiki folgendes angezeigt:

Mediawiki (48 )

Wenn ich die Datenbank aufrufe zeigt mir phpmyadmin allerdings nur 4 Tabellen an. Die Tabellen selber sind im Verzeichnis /var/lib/mysql/mediawiki vorhanden. Ich zähle 48 *.frm Dateien und noch einige andere.

Wie kann ich die verlorenen Tabellen zurückholen?

P.S.: Ich weiss nicht ob es mir einer erklären kann, aber warum sind die Tabellen zwar auf der Platte vorhanden, aber für die MySQL quasi unsichtbar?

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 28.03.2008 08:48:21

du meinst sie sind für phpmyadmin unsichtbar....


geh auf die mysql console und schau dir das ganze dort an!

Code: Alles auswählen

list tables;
wenn ich mich nicht allzusehr irre... mein mysql ist schon paar jahre alt
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 28.03.2008 08:55:13

log dich als root per mysql ein ("mysql").
mit "show databases;" zeigst du dir die DBs an, die mysql kennt.

mit "use <db_name>;" kannst du eine DB anwählen.

mit "show tables;" zeigst du dir die verfügbaren Tabellen an.

mit "repair table <tabellenname>;" kannst du einzelne Tabellen versuchen zu reparieren.

SICHERE vorher unbedingt die db-files in /var/lib/mysql/* weg, falls was schiefgeht!
Schau auch mal ins mysql-log, da stehen vielleicht wertvolle Hinweise.
Perl macht Spass.

Benutzeravatar
MarkusF
Beiträge: 361
Registriert: 04.06.2007 12:45:22

Re: MySQL ist durch vollgelaufene Platte beschädigt

Beitrag von MarkusF » 28.03.2008 09:29:22

bombaclaude hat geschrieben:Bei mir war /var/lib/mysql wegen einer vollen Partition nicht mehr beschreibbar. Das hat die bei mir installierte MySQL in Mitleidenschaft gezogen. Soweit ich sehe sind alle Datenbanken und alle Tabellen zumindest physikalisch noch auf der Platte vorhanden. Rufe ich phpmyadmin auf, dann wir mir zum Beispiel für die Datenbank Mediawiki folgendes angezeigt:
Wenn ich die Datenbank aufrufe zeigt mir phpmyadmin allerdings nur 4 Tabellen an. Die Tabellen selber sind im Verzeichnis /var/lib/mysql/mediawiki vorhanden. Ich zähle 48 *.frm Dateien und noch einige andere.

Wie kann ich die verlorenen Tabellen zurückholen?
...und sollten die DB's doch größer beschädigt sein, kann ich dir den Befehl mysqlbinlog ans Herz legen.
Also z.B. das (veraltete) Backup auf ner Spiel-DB einspielen und mit

Code: Alles auswählen

mysqlbinlog /var/log/mysql/mysql-bin.000xxx > ~`/mysql-bin-000xxx..txt
erzeugst du eine Datei, die du per Texteditor anschauen kannst und erhälst evtl. schon Aufschlüsse über den Crash. Die Datei kannst du bearbeiten oder per

Code: Alles auswählen

mysql -u ... <~/mysql-bin-000xxx.txt 
deiner Sicherung zufügen. Alternativ kannst du auch direkt die binäre Datei bis zum Crashzeitpunkt nachlegen.

Code: Alles auswählen

mysqlbinlog --stop-date=”2008-03-28 15:30:00" /var/log/mysql/bin.000xxx mysql -u root -ppassword  ...
Wie weit die logs zurückgreifen siehst du in der /etc/mysql/my.cnf unter

Code: Alles auswählen

expire_logs_days	= 10
max_binlog_size         = 100M
bombaclaude hat geschrieben: P.S.: Ich weiss nicht ob es mir einer erklären kann, aber warum sind die Tabellen zwar auf der Platte vorhanden, aber für die MySQL quasi unsichtbar?
Weil MySQL seine Informationen ja auch aus Verwaltungstabellen bezieht. Diese sind evt. nicht mehr konsistent. Aber da würde ich mich ebenfalls, wie die Vorposter, nicht auf PHPMyadmin alleine verlassen...

Grüße, Markus

bombaclaude
Beiträge: 320
Registriert: 01.01.2007 13:19:34

Beitrag von bombaclaude » 28.03.2008 11:26:36

Danke für die Antworten. Werde das heute Abend in aller Ruhe angehen. Obwohl ich mittlerweile davon ausgehe das die Inhalte der MySQL gelöscht sind. Es gibt wie gesagt jede Menge FRM Dateien, aber kaum welche von den anderen beiden Dateitypen, in denen die Inhalte gespeichert sind.

Was mich aber interessiert ist, warum verschwinden diese Tabellen? Zum Zeitpunkt des Überlaufs habe ich am Layout eines Wordpress themes gearbeitet und Wordpress dabei zu Kontrollzwecken aufgerufen. Ich habe also nur Daten aus der MySQL abgerufen, aber keine reingestellt. Die styles Datei liegt ja bei Wordpress nicht in der MySQL sondern als Datei auf der Platte. Die betreffende Mediawiki database hatte ich nicht in Arbeit. Trotzdem ist nur die Mediawiki database kaputt. Das irritiert mich etwas!

Benutzeravatar
MarkusF
Beiträge: 361
Registriert: 04.06.2007 12:45:22

Beitrag von MarkusF » 28.03.2008 11:42:03

bombaclaude hat geschrieben:Was mich aber interessiert ist, warum verschwinden diese Tabellen? Zum Zeitpunkt des Überlaufs habe ich am Layout eines Wordpress themes gearbeitet und Wordpress dabei zu Kontrollzwecken aufgerufen. Ich habe also nur Daten aus der MySQL abgerufen, aber keine reingestellt. Die styles Datei liegt ja bei Wordpress nicht in der MySQL sondern als Datei auf der Platte. Die betreffende Mediawiki database hatte ich nicht in Arbeit. Trotzdem ist nur die Mediawiki database kaputt. Das irritiert mich etwas!
das kann dir hier ohne Glaskugel vermutlich keiner konkret beantworten. Aber dafür sind die logs ja da. 8)
Grüße, Markus

Antworten