it-swarm.com.de

Wiederherstellen der MySQL-Datenbank aus physischen Dateien

Ist es möglich, eine MySQL-Datenbank aus den physischen Datenbankdateien wiederherzustellen. Ich habe ein Verzeichnis mit folgenden Dateitypen:

client.frm
client.MYD
client.MYI 

aber für etwa 20 weitere Tische.

Normalerweise verwende ich mysqldump oder ein ähnliches Tool, um alles in einer SQL-Datei abzurufen. Was ist der Weg, um mit diesen Dateitypen umzugehen?

115
Abdullah Jibaly

Eine MySQL-MyISAM-Tabelle besteht aus drei Dateien:

  • Die FRM-Datei ist die Tabellendefinition.
  • In der MYD-Datei werden die tatsächlichen Daten gespeichert.
  • In der MYI-Datei werden die für die Tabelle erstellten Indizes gespeichert.

Sie sollten in der Lage sein, sie wiederherzustellen, indem Sie sie in Ihren Datenbankordner kopieren (in Linux ist der Standardspeicherort /var/lib/mysql/).

Sie sollten dies tun, wenn der Server nicht läuft.

116
Vincent

Aus der Antwort von @Vicent stelle ich die MySQL-Datenbank bereits wie folgt wieder her:

Schritt 1. Mysql-Server herunterfahren

Schritt 2. Kopieren Sie die Datenbank in Ihren Datenbankordner (in Linux ist/var/lib/mysql der Standardspeicherort). Behalten Sie den gleichen Namen der Datenbank und den gleichen Namen der Datenbank im Mysql-Modus.

Sudo cp -rf   /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/

Schritt 3: Ändern Sie den Ordner und ändern Sie den Modus:

Sudo chown -R mysql:mysql /var/lib/mysql/database1
Sudo chmod -R 660 /var/lib/mysql/database1
Sudo chown  mysql:mysql /var/lib/mysql/database1 
Sudo chmod 700 /var/lib/mysql/database1

Schritt 4: Kopieren Sie ibdata1 in Ihren Datenbankordner

Sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/

Sudo chown mysql:mysql /var/lib/mysql/ibdata1

Schritt 5: Kopieren Sie die Dateien ib_logfile0 und ib_logfile1 in Ihren Datenbankordner.

Sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/

Sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/

Erinnern Sie sich, dass Sie own und change root dieser Dateien ändern:

Sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0

Sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1

oder

Sudo chown -R mysql:mysql /var/lib/mysql

Schritt 6 (optional): Meine Site hat die Konfiguration, um Dateien an einem bestimmten Ort zu speichern. Dann kopiere ich sie genau an den entsprechenden Ort.

Schritt 7: Starten Sie Ihren MySQL-Server. Alles kommt zurück und genießt es.

Das ist es.

Weitere Informationen finden Sie unter: https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/

27
biolinh

Ich habe das gleiche Problem, konnte die Datenbank jedoch nicht erfolgreich anhand der obigen Anweisungen wiederherstellen. 

Ich habe nur wiederhergestellte MySQL-Datenbankordner von meinem Ubuntu-Betriebssystem erhalten. Mein Problem ist, wie ich meine Datenbank mit diesen unlesbaren Mysql-Datenordnern wiederherstellen kann. Jetzt wechsle ich wieder zu Win7 OS für die Entwicklungsumgebung.

* HINWEIS Ich habe einen vorhandenen Datenbankserver in win7 und brauche nur wenige Datenbankdateien, um die wiederhergestellten Dateien abzurufen. Um die Datenbankdateien von Ubuntu OS erfolgreich wiederherzustellen, muss ich neu installierte MySQL-Datenbankserver derselben Version von Ubuntu OS in meinem Win7-Betriebssystem installieren, um alles auf diesem alten Datenbankserver wiederherzustellen.

  1. Machen Sie aus einem anderen wiederhergestellten MySQL-Datenbankserver dieselbe Version aus den wiederhergestellten Dateien.

  2. Stoppen Sie den MySQL-Server

  3. kopieren Sie den wiederhergestellten Ordner und fügen Sie ihn in die mysql-Datenbank (C:\ProgramData\MySQL\MySQL Server 5.5\data) ein .

  4. kopieren Sie die Datei ibdata1 im installierten linux mysql-Ordner, und fügen Sie sie unter (C:\ProgramData\MySQL\MySQL Server 5.5\data) ein. Einfach über Das Vorhandene korrigieren oder vor dem Ersetzen ein Backup erstellen.

  5. starten Sie den MySQL-Server und prüfen Sie, ob Sie die Datenbankdateien erfolgreich wiederhergestellt haben.

  6. Um die wiederhergestellte Datenbank in meinem derzeit verwendeten MySQL-Server zu verwenden, exportieren Sie einfach die wiederhergestellte Datenbank und importieren Sie sie in meinen vorhandenen MySQL-Server.

Ich hoffe, das hilft, weil ich keine Lösung für mein Problem gefunden habe. 

8
Ivan Igniter

Wenn Sie den Ordner wiederherstellen, vergessen Sie nicht, die Dateien in mysql: mysql zu ändern 

chown -R mysql:mysql /var/lib/mysql-data

Andernfalls erhalten Sie Fehler, wenn Sie versuchen, eine Datenbank zu löschen oder eine neue Spalte hinzuzufügen.

und starten Sie MySQL neu

service mysql restart
7
Joel Davey

Mit MySql 5.1 (Win7). Um DBs (InnoDb) zu erstellen, habe ich den gesamten Inhalt der folgenden Verzeichnisse (my.ini-Parameter) ersetzt:

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"

Danach habe ich MySql Service gestartet und alles funktioniert gut.

2

Ja, so ist es! Fügen Sie sie einfach zu Ihrem Datenbankordner hinzu (je nach Betriebssystem) und führen Sie einen Befehl wie "MySQL Fix Permissions" aus. Dadurch wurde die Datenbank erneut gespeichert. Beachten Sie auch, dass die richtigen Berechtigungen auch für die Dateien festgelegt sind.

1
Filip Ekberg

In meinem Fall genügt es, das tc.log in/var/lib/mysql zu entfernen, um mariadb/mysql erneut zu starten.

0
SirJohnFranklin

Ich kopierte diese Dateien einmal in den Datenbankspeicherordner für eine funktionierende MySQL-Datenbank, startete die Datenbank und wartete darauf, dass die Dateien "repariert" wurden, und extrahierte sie dann mit Mysqldump.

0
Spikolynn