Ich habe ein System, das ich in Java Spring entwickelt habe und das Daten in einer MySQL-Datenbank speichert, die lokal unter Windows 10 ausgeführt wird.
Gestern habe ich das neueste Windows-Update ausgeführt und nach 2 Stunden mühseligem Herumtrödeln ist mein Computer abgestürzt... und seitdem will Windows nicht mehr starten und gibt mir die Option, Windows neu zu installieren, mit der Möglichkeit, meine persönlichen Daten zu behalten. Ich glaube jedoch, dass dadurch MySQL und alle gespeicherten Daten gelöscht werden.
Auf derselben Maschine läuft Linux, und deshalb versuche ich, über Linux auf die Datenbank zuzugreifen und sie mit mysqldump zu sichern.
Zu diesem Zweck habe ich versucht, das Verzeichnis, in dem die Daten unter Windows gespeichert sind, mit dem folgenden Befehl in das Linux-Verzeichnis einzubinden:
sudo mount --bind '/media/guillaume/Windows/ProgramData/MySQL/MySQL Server 5.7/Data' /var/lib/mysql
Anschließend habe ich den MySQL-Server neu gestartet und eine SQL-Konsole geöffnet. Ich konnte mich mit dem Windows-Passwort (es unterscheidet sich vom SQL-Passwort unter Linux) bei der SQL-Konsole anmelden und alle auf meinem Windows-Rechner gespeicherten Datenbanken auflisten.
Hier wird es komplizierter. Die SQL-Konsole kann alle Tabellen in der Datenbank auflisten, die mich interessieren, aber aus irgendeinem Grund kann sie den Inhalt der Tabellen nicht abfragen. Ich kann alle Tabellen auflisten, aber ich kann die Tabellen nicht abfragen. SQL sagt mir, dass eine solche Tabelle nicht existiert, obwohl sie gerade aufgelistet wurde.
Ich habe einen Screenshot davon, da ist kein Tippfehler, aber die Site lässt mich kein Bild posten ...
Wie kann ich dieses Problem lösen? Oder gibt es eine intelligentere Möglichkeit, einen Dump vom Windows-Speicherort zu erstellen, auch wenn Windows nicht startet?
Ich danke Ihnen für Ihre Hilfe !
Antwort1
Der Grund, warum es nicht funktionierte, lag darin, dass ich die Datenbank in Windows in „database_W“ umbenannt hatte, um sie von der anderen Datenbank in Linux zu unterscheiden, die denselben Namen hatte und die ich aus einer Sicherungskopie wiederhergestellt hatte, die ich vor zwei Wochen erstellt hatte.
Ich hatte die Windows-ProgramData-Datei auf eine externe Festplatte kopiert und diese Sicherungskopie der Datenbank in meinen Zielordner kopiert. Anschließend konnten die SQL-Konsole und meine IDE diese Originaldatenbank, alle ihre Tabellen und alle Daten sehen. Ich habe meine IDE verwendet, um eine Sicherungsdatei (Dump) zu erstellen.
Wie Rinzwind betonte, ist es wichtig, die Daten regelmäßig zu sichern, insbesondere vor Windows-Updates … Lektion gelernt!
Um die Daten wiederherzustellen, habe ich Folgendes getan:
- Verwenden Sie Linux, um auf die Windows-Daten zuzugreifen und alle Ihre Daten zu sichern
- Um SQL-Daten wiederherzustellen, sind Sie am folgenden Speicherort interessiert:
'/media/guillaume/Windows/ProgramData/MySQL/MySQL Server 5.7/Data'
. ÄNDERN SIE DORT KEINEN NAMEN! - Verwenden Sie den folgenden Befehl, um Ihre Windows-ProgramData-Datei im entsprechenden Linux-Verzeichnis bereitzustellen:
sudo mount --bind '/media/guillaume/Windows/ProgramData/MySQL/MySQL Server 5.7/Data' /var/lib/mysql
- Starten Sie Ihren SQL-Dienst neu (ich habe diesen Befehl verwendet: service mysql restart)
- Überprüfen Sie mit Ihrer SQL-Konsole im Linux-Terminal, ob Sie die Windows-Datenbanken unter Linux sehen und auf die Daten zugreifen können (mit einer Anweisung vom Typ „select * from table“).
- Stellen Sie über Ihre IDE eine Verbindung zu dieser Datenbank her (mit den Windows-Anmeldeinformationen), um eine Dump-Datei aus der IDE zu erstellen.