Wie einer meiner MySQL - Datenbanken wiederherstellen aus .myd
, .myi
, .frm
Dateien?
Wie einer meiner MySQL - Datenbanken wiederherstellen aus .myd
, .myi
, .frm
Dateien?
Antworten:
Wenn es sich um MyISAM-Tabellen handelt, wird diese Tabelle durch Ablegen der Dateien .FRM, .MYD und .MYI in ein Datenbankverzeichnis (z. B. /var/lib/mysql/dbname
) verfügbar gemacht. Es muss nicht dieselbe Datenbank sein, von der sie stammen, denselben Server, dieselbe MySQL-Version oder dieselbe Architektur. Möglicherweise müssen Sie auch den Besitz des Ordners ändern (z. B. chown -R mysql:mysql /var/lib/mysql/dbname
)
Beachten Sie, dass Berechtigungen ( GRANT
usw.) Teil der mysql
Datenbank sind. Sie werden also nicht zusammen mit den Tabellen wiederhergestellt. Möglicherweise müssen Sie die entsprechenden GRANT
Anweisungen ausführen , um Benutzer zu erstellen, Zugriff zu gewähren usw. (Das Wiederherstellen der mysql
Datenbank ist möglich, Sie müssen jedoch mit MySQL-Versionen und allen erforderlichen Ausführungen des mysql_upgrade
Dienstprogramms vorsichtig sein .)
Eigentlich brauchen Sie wahrscheinlich nur .FRM (Tabellenstruktur) und .MYD (Tabellendaten), aber Sie müssen die Tabelle reparieren, um die .MYI (Indizes) neu zu erstellen.
Die einzige Einschränkung besteht darin, dass Sie beim Downgrade am besten die Versionshinweise überprüfen (und wahrscheinlich die Reparaturtabelle ausführen). Neuere MySQL-Versionen bieten natürlich Funktionen.
[Obwohl es offensichtlich sein sollte, wenn Sie Tabellen mischen und abgleichen, ist die Integrität der Beziehungen zwischen diesen Tabellen Ihr Problem. MySQL ist das egal, aber Ihre Anwendung und Ihre Benutzer können es. Außerdem funktioniert diese Methode für InnoDB-Tabellen überhaupt nicht. Nur MyISAM, aber angesichts der Dateien, die Sie haben, haben Sie MyISAM]
check table sometable;
auszuführen : und dann die Reparatur auszuführen (nur bei Bedarf): repair table sometable;
Ich habe gerade eine Lösung dafür gefunden. Ich verwende MySQL 5.1 oder 5.6 unter Windows 7.
Für diese Wiederherstellung müssen Sie die Dateien .MYI und .MYD nicht suchen.
innodb_force_recovery = 4
Level (nicht sicher, ob dies in diesem Fall erforderlich war). Gott sei Dank!
ibdata1
ist InnoDB, nicht MyISAM.
Eines ist zu beachten:
Die .FRM-Datei enthält Ihre Tabellenstruktur und ist spezifisch für Ihre MySQL-Version.
Die .MYD-Datei ist NICHT versionsspezifisch, zumindest nicht für kleinere Versionen.
Die .MYI-Datei ist spezifisch, kann jedoch weggelassen und neu generiert werden, REPAIR TABLE
wie in den anderen Antworten angegeben.
Mit dieser Antwort möchten wir Sie darüber informieren, dass Sie mit einem Schema-Dump Ihrer Tabellen die Tabellenstruktur generieren, diese .MYD-Dateien durch Ihre Sicherungen ersetzen, die MYI-Dateien löschen und reparieren können alles. Auf diese Weise können Sie Ihre Backups auf eine andere MySQL-Version zurücksetzen oder Ihre Datenbank ganz ohne Verwendung verschieben mysqldump
. Ich fand das super hilfreich beim Verschieben großer Datenbanken.
Einfach! Erstellen Sie eine Dummy-Datenbank (sagen wir abc)
Kopieren Sie alle diese .myd-, .myi- und .frm-Dateien nach mysql \ data \ abc, wobei mysql \ data \ der Ort ist, an dem .myd, .myi, .frm für alle Datenbanken gespeichert sind.
Gehen Sie dann zu phpMyadmin, gehen Sie zu db abc und Sie finden Ihre Datenbank.
Ich denke .myi können Sie aus MySQL reparieren.
Wenn Sie diese Art von Fehlermeldungen von MySQL sehen: Datenbank konnte Abfrage (Abfrage) nicht ausführen 1016: Datei kann nicht geöffnet werden: 'sometable.MYI'. (errno: 145) Fehlermeldung: 1034: Falsche Schlüsseldatei für Tabelle: 'sometable'. Versuchen Sie es zu reparieren, wenn Sie wahrscheinlich eine abgestürzte oder beschädigte Tabelle haben.
Sie können die Tabelle über eine MySQL-Eingabeaufforderung wie folgt überprüfen und reparieren:
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
und jetzt sollte dein Tisch in Ordnung sein:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
Ich habe eine Lösung zum Konvertieren der Dateien in eine .sql
Datei gefunden (Sie können die .sql
Datei dann auf einen Server importieren und die Datenbank wiederherstellen), ohne auf das /var
Verzeichnis zugreifen zu müssen. Daher müssen Sie auch kein Serveradministrator sein, um dies zu tun.
Auf Ihrem Computer muss XAMPP oder MAMP installiert sein.
C:\XAMPP
) und zum Unterverzeichnis mysql\data
. Der vollständige Pfad sollte seinC:\XAMPP\mysql\data
Im Inneren sehen Sie Ordner aller anderen von Ihnen erstellten Datenbanken. Einfügen Kopieren und den Ordner voll .myd
, .myi
und .frm
Dateien in es. Der Pfad zu diesem Ordner sollte sein
C:\XAMPP\mysql\data\foldername\.mydfiles
Dann besuchen Sie localhost/phpmyadmin
in einem Browser. Wählen Sie die Datenbank aus, die Sie gerade in den mysql\data
Ordner eingefügt haben , und klicken Sie in der Navigationsleiste auf Exportieren. Wählt den Export als .sql
Datei. Daraufhin wird gefragt, wo die Datei gespeichert werden soll
Und das ist alles! Sie (sollten) haben jetzt eine .sql
Datei mit der Datenbank , die ursprünglich war .myd
, .myi
und .frm
Dateien. Sie können es dann über phpMyAdmin auf einen anderen Server importieren, indem Sie eine neue Datenbank erstellen, in der Navigationsleiste auf "Importieren" klicken und dann die Schritte zum Importieren ausführen
Sie können die Dateien in ein entsprechend benanntes Unterverzeichnis des Datenordners kopieren, sofern es sich um genau dieselbe Version von mySQL handelt und Sie alle zugehörigen Dateien in diesem Verzeichnis beibehalten haben. Wenn Sie nicht alle Dateien haben, sind Sie sich ziemlich sicher, dass Sie Probleme haben werden.
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
Es heißt, die ib_ * -Dateien umzubenennen. Ich habe es getan und es gab mir die Datenbank zurück.
Die obige Beschreibung reichte nicht aus, um die Dinge für mich zum Laufen zu bringen (wahrscheinlich dicht oder faul), also habe ich dieses Skript erstellt, sobald ich die Antwort gefunden habe, um mir in Zukunft zu helfen. Hoffe es hilft anderen
vim fixperms.sh
#!/bin/sh
for D in `find . -type d`
do
echo $D;
chown -R mysql:mysql $D;
chmod -R 660 $D;
chown mysql:mysql $D;
chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
Für Benutzer mit Windows XP und installiertem MySQL Server 5.5 lautet der Speicherort für die Datenbank C: \ Dokumente und Einstellungen \ Alle Benutzer \ Anwendungsdaten \ MySQL \ MySQL Server 5.5 \ data, es sei denn, Sie haben den Speicherort in der MySql Workbench-Installation geändert GUI.