Restore MySQL

Lumio

Lumio

Tripel-As
Hi,
ich hoffe, das aktuelle backup passt... ansonsten könnte ich mich in den allerwertesten beissen.

Da mein server abgekratzt ist wollte ich eine datenbanksicherung wiederherstellen... dazu habe ich einfach die /var/lib/mysql hergenommen und diese immer gesichert. Allerdings werden die Schemen scheinbar auch noch wo anders gespeichert.

Ich sollte eigentlich alles haben, um das wieder hinzubiegen. Kann mir jemand erklären, ob ich meine alten Datenbanktabellen wieder hinbekomme, und vorallem wie :)

wär mir echt eine grosse Hilfe
Liebe Grüsse
 
Wenn du nur das Datadir gesichert hast, musst du eine absolut identische MySQL-Version verwenden um es weiterbenutzen zu können. Leider klappt dies aber auch nicht immer. Genau deswegen gibt es Programme wie mysqldump um Datenbanken zu sichern. Datadir sichern reicht _niemals_ als Backup bei einer MySQL aus.
 
autsch! gibt es keine möglichkeit iwie was damit anzufangen? ausser die daten selber zu klamüsern - wird aber glaub ich auch nicht langen.
 
Sofern du die Tabellen und Datenbanken in der MySQL noch sehen kannst und lediglich Zugriffe darauf nur bedingt möglich sind, hilft manchmal ein 'repair table' auf alle Tabellen weiter. Also...

- wenigstens eine zur alten MySQL versionsidentische MySQL installieren
- Datenverzeichnis mit dem Backup ersetzen
- MySQL hochfahren und versuchen darauf mit dem alten MySQL-root-Login einzuloggen
- schauen ob du die Datenbanken und Tabellen noch sehen kannst und wenn ja, vor dem ersten Zugriff darauf ein 'repair table' über sämtliche Tabellen laufen lassen

Wenn das nicht hilft, wirst du meines Wissens nach kaum einen anderen Weg finden wieder an die Daten zu kommen, es sei denn du findest irgendwo Tools um die Daten-Dateien in Formate wie CSV o.ä. umzuwandeln, die sich dann wiederum in MySQL importieren lassen. Hab sowas bisher nie benötigt, da ich Dumps als Backups nutze, und kann dir daher diesbezüglich keinen Tipp geben. Google is your friend. ;)
 
Tja, deshalb heisst es schliesslich auch immer, ein Backup, das man nicht mindestens einmal auch zurückgespielt hat, um es zu testen, ist kein Backup :-) Obwohl das hier wahrscheinlich nicht geholfen hätte, da von einer MySQL zur gleichen zurück getestet worden wäre. Lumio, hast du denn den MySQL wenigstens immer gestoppt vor dem Sichern? Oder LVM Snapshots genutzt? Oder hast du während der MySQL munter weiter geschrieben hat gesichert? Fanden Schreibzugriffe auf die Datenbank während der Sicherungszeiten statt?

Kannst du die Sicherung zur Verfügung stellen, damit man mal damit probieren kann? (eher nicht, oder?) Ich hoffe da hängt jetzt kein monetärer Verlust für dich dran..
 
das is ziemlich... naja nicht so fein.

das einzig ärgerliche ist, dass die db von meinem bro somit weg ist, denn dort befand sich die Struktur der Fotogalerie mit weit über tausend Bilder :D
Ich probier, ob ich ne alte Version von mysql bekomm... meld mich dann wieder

Ansonsten Danke :)
 
Du bekommst sämtliche alten Versionen eigentlich noch auf den Mirrors von dev.mysql.com.
 
hallelulja ich seh die datenbanken! und es klappt alles. Super!
 
Na dann merke dir für die Zukunft, dass du besser mysqldump für Backups nutzt. Die Dumps lassen sich im Normalfall auch in neuere MySQL-Versionen einspielen. Und wie saeckereier schon schrieb, sollte man regelmässig versuchen Backups irgendwo zurückzuspielen um sicherzustellen, dass sie auch wirklich funktionieren.
 
ok... ich hab mal mysqldump probiert... das schreibt mir im grunde ja nur ne sql-datei, oder?
Hab mir jetz noch nicht wirklich die Manual durchgelesen, aber mal schaun wie dann das zurückspielen funktioniert :)
Danke jedenfalls.
 
Dump zurückspielen:

Code:
mysql -u root -p meinedatenbank < dumpdatei.sql
 
Aber beim Testen dran denken am besten mit einem anderen User zurückspielen, der deine Original-Daten nicht zerschiessen kann. Noch besser natürlich ein anderer Rechner. Mysqldump erstellt im Prinzip eine SQL-Datei, mit allen Anweisungen, die unter MySQL nötig wären, um die Datenbank neu zu erstellen. Die manpage solltest du auf jeden Fall lesen. Es gibt ein paar interessante Optionen. Wenn du das automatisiert lösen willst, solltest du einen extra-User für das Backup erstellen, der nur lesend auf die Datenbank zugreifen kann. Das Passwort kannst du dann in eine my.cnf im Homeverzeichnis des Users legen.

Die Sicherung des datadirs ist übrigens auch eine Variante, die durchaus praktiziert wird. Mysqldump wird irgendwann einfach zu langsam, sowohl beim Sichern als auch beim Zurückspielen. Dabei muss man dann aber eben immer ein Image des Systems haben mit der gleichen MySQL-Version. Und der DB-Server muss gestoppt werden, damit die Dateien einen konsistenten Zustand haben. Das geht zum Beispiel bei einem Slave recht problemlos. Ein Szenario hierfür wäre:
1. Stoppen des Slaves
2. LVM Snapshot erstellen
3. Slave wieder anlaufen lassen.
4. Daten vom Snapshot sichern
5. Snapshot wieder freigeben.

All das schützt natürlich nicht davor, dass eine Anwendung vielleicht gerade schreibt und keine Transaktionen verwendet. Dann kann es zu Inkonsistenzen kommen, diese werden aber in der Regel eher isoliert sein. Für meinen Root-server nutze ich auch mysqldump, die DB ist noch recht klein.. Das einzige, wo ich noch keinen Ansatz für gesehen habe ist eine inkrementelle Sicherung.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

bitmuncher: root.. Böse :-)
 
Zuletzt bearbeitet:
bitmuncher: root.. Böse :-)

Per Default existiert kein anderer User, der alle Datenbanken inkl. 'mysql' und 'information_schema' sichern und zurückspielen könnte. Und auf die Details von MySQL-Backups wollte ich jetzt nicht unbedingt eingehen. Dafür gibt's genug Dokus.
 

Ähnliche Themen

Problem mit Apache2 + MySQL Server

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

Zurück
Oben