Wie MySQL-Datenbank mit Dateien auf Datenordner wiederherstellen?

4

Ich kann mein mysql seit gestern nicht mehr ausführen und kann nicht mehr darauf zugreifen. Deshalb habe ich beschlossen, es neu zu installieren. Ich habe den Datenordner gesichert, der vermutlich alles enthält, was ich brauche, um die Datenbank nach der Neuinstallation von mysql wiederherzustellen.

Ich habe den alten Datenordner kopiert, eingefügt und mit der Sicherung überschrieben, aber es wird ein Fehler ausgegeben, der verhindert, dass MySQL geladen wird.

Ich habe nur den Ordner mit dem gleichen Namen wie meine Datenbank kopiert (sagen wir mal meineDatenbank ), und es läuft gut, aber die Datenbank selbst konnte nicht geladen werden. Wenn ich versuche, mit SQLyog auf die Datenbank zuzugreifen, wirft jede Tabelle die Meldung "Datei kann nicht geöffnet werden tablename.ibd "

Wie kann ich meine Datenbank richtig wiederherstellen?

Ich benutze MySQL 4.1 und Windows 7.

Vylix
quelle

Antworten:

1

Wiederherstellen von MySQL InnoDB-Dateien unter Windows

Die InnoDB-Dateien waren eine schwierigere Aufgabe, und das bin ich auch   schreibe diesen Beitrag. Es fiel mir schwer herauszufinden, wie ich es machen sollte, aber ich   genügend Informationen zusammengestellt, um die Aufgabe zu erfüllen. Nun, in einem   Ich werde Ihnen genau erklären, was ich getan habe, um es zu bekommen   restauriert.

In unseren Backups hatten wir folgende Dateien:

\MySQL\MySQL Server 4.1\data\ibdata1
\MySQL\MySQL Server 4.1\data\ib_logfile0
\MySQL\MySQL Server 4.1\data\ib_logfile1

Außerdem befand sich im Datenordner ein Ordner mit dem Namen des   Datenbank, die ich wiederherstellte, enthielt *.frm Dateien   ( table_name.frm ).

Ich habe die Wiederherstellung auf meinem Entwicklungscomputer durchgeführt und nicht auf dem eigentlichen   Server, weil ich nicht vermasseln wollte, was auf dem Server lief   Server. Ich hatte bereits MySQL von einer XAMPP-Installation installiert. (Meine   Entwicklungsbox läuft unter Windows XP SP2). XAMPP installiert MySQL a   etwas anders als die reguläre MySQL-Installation, also wenn es hilft   Folgen Sie dem, was ich hier gemacht habe. Vielleicht möchten Sie es installieren.

Ich habe meinen MySQL-Dienst zuerst über die XAMPP-Systemsteuerung gestoppt.

Ich habe die oben aufgelisteten Dateien verschoben ( ib* Dateien und den Ordner mit   das *.frm Dateien) in den lokalen MySQL-Datenordner ( C:\Program Files\xampp\mysql\data ).

Ich habe dann bearbeitet my.cnf (gelegen in C:\Program Files\xampp\mysql\bin )   und nahm die folgenden Änderungen vor (beginnend mit Zeile 66 für mich):

ALT:

skip-innodb
#innodb_data_home_dir = C:/Program Files/xampp/mysql/data/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = C:/Program Files/xampp/mysql/data/
#innodb_log_arch_dir = C:/Program Files/xampp/mysql/data/
#set-variable = innodb_buffer_pool_size=16M
#set-variable = innodb_additional_mem_pool_size=2M
#set-variable = innodb_log_file_size=5M
#set-variable = innodb_log_buffer_size=8M
#innodb_flush_log_at_trx_commit=1
#set-variable = innodb_lock_wait_timeout=5

NEU:

#skip-innodb
innodb_data_home_dir = C:/Program Files/xampp/mysql/data/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = C:/Program Files/xampp/mysql/data/
innodb_log_arch_dir = C:/Program Files/xampp/mysql/data/
set-variable = innodb_buffer_pool_size=16M
set-variable = innodb_additional_mem_pool_size=2M
set-variable = innodb_log_file_size=170M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
set-variable = innodb_lock_wait_timeout=50

(Ich musste innodb_log_file_size auf die tatsächliche Größe meiner Protokolldatei einstellen.)

Ich habe dann die XAMPP-Batchdatei bearbeitet, mit der der MySQL-Dienst gestartet wird   ( C:\Program Files\xampp\mysql_start.bat ). Ich fügte hinzu –innodb_force_recovery=6 bis zum Ende des Aufrufs an mysqld. Also Zeile 8   von dieser Datei lesen Sie jetzt:

mysql\bin\mysqld –defaults-file=mysql\bin\my.cnf –standalone –console –innodb_force_recovery=6

Das hat den Trick gemacht! Meine Datenbanken wurden auf meinem Computer wiederhergestellt. ich benutzte SQLyog einen SQL-Dump machen   der Datenbank, um es auf unserem Produktionsserver wiederherzustellen.

Quelle


Weitere Ressourcen

Pimp Juice IT
quelle
0

Eine Abstimmung und danke an Pimp Juice IT für eine gute Antwort. Ich habe ein ähnliches Problem mit Hilfe seiner Antwort gelöst, aber ein bisschen anders, also dachte ich, ich würde teilen.

Ich habe auf eine neuere Version von XAMPP aktualisiert. Ich benutze das Installationsprogramm nicht. Ich lade es einfach als neues Zip herunter und stoße dabei auf Probleme.

  1. Zuerst habe ich mysql gestoppt (ich starte es lokal mit XAMPP)
  2. Als nächstes öffnete ich die my.ini Datei befindet sich in / xampp / mysql / bin / Datei - für mich begannen meine Änderungen um #skip-innoodb (Linie 136). Ihre Zeilennummer kann variieren.

Folgendes habe ich ursprünglich gefunden:

#... omitted lines above ...
#skip-innodb
innodb_data_home_dir = "/xampp/mysql/data"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "/xampp/mysql/data"
#innodb_log_arch_dir = "/xampp/mysql/data"
#... omitted lines below ...

Das Problem scheint hier die relativen Pfade zu sein; beachte die fehlenden C: in den Verzeichnissen oben. Die Wege absolut zu machen, war mein erster Schritt.

#skip-innodb
innodb_data_home_dir = "C:/xampp/mysql/data"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "C:/xampp/mysql/data"
#innodb_log_arch_dir = "C:/xampp/mysql/data"
  1. In der neuen Version von XAMPP möchte ich Folgendes verwenden:
    • Im / xampp / mysql / Ich habe umbenannt Daten zu data_old
    • Dann immer noch im selben Verzeichnis / xampp / mysql / Ich habe das kopiert Daten Verzeichnis von meinem alten XAMPP.
  2. Dann habe ich meinen MySQL-Server hochgefahren und alles war gut zu gehen

Hoffe das hilft jemandem!

Anovative
quelle