mysql datenbanken sichern, ohne zugriff bzw. laufendes phpmyadmin

debianer2

New Member
Wie kann ich meine mysql datenbanken sichern, ohne zugriff bzw. laufendes phpmyadmin? Ich habe eine rootserver, der leider nicht mehr so rund lief und ich irgendetwas zerschossen habe, nun bin ich im rescuesystem, ich habe festplatte gemountet und bin nun am dateien retten/sichern.

Nun, wie kann ich meine mysql datenbanken sichern? sind die in irgendeinem speziellen ordner auf dem server gespeichert? Wenn ja, wo?

Danke schonmal
 
Bitte bedenkt dabei dass die Daten in /var/lib/mysql/ im MySQL-Binär-Format vorliegen. Sie sind nicht zwangsweise kompatibel mit einer anderen MySQL-Installation/-Version.
Sauberer ist ein SQL-Dump. Dies wäre die sicherere Alternative.
Code:
man mysqldump

huschi.
 
Sauberer ist ein SQL-Dump. Dies wäre die sicherere Alternative.
Code:
man mysqldump
Aber auch nur, wenn er entsprechende root-Zugangsdaten hat (kam für mich so rüber als wäre das nciht der Fall ;)). Zusätzlich muss der MySQL-Server laufen, was eventuell auch ein Problem ist, wenn es z.B. von den Libs her was zerschossen hat.

Ich habe teilweise auch schon ganze Server migriert indem ich wirklich nur alles in /var/lib/mysql rüberkopiert hab, weils einfach super schnell geht.
Ist im Prinzip auch eine sehr simple Methode um die komplette Datenbank zu backuppen.
Allerdings muss ich dir Recht geben, dass das nur klappt, wenn die MySQL-Versionen zueinander binär kompatibel sind. :)
 
Du wirst aber mit z.B. InnoDb Dein blaues Wunder erleben, wenn Du diese in offenen Transaktionen kopierst speziell wenn File per Table als Option gesetzt ist.:

Also merke:
Willst Du konsistenten Daten, kopiere Datenfiles nur bei herunter gefahrener DB oder verwende geeignete Tools um Datenbanken zu sichern.

Ein Einzeiler löst das Problem relativ einfach:
for i in `echo show databases | mysql -u root -N |grep -v -e information_schema`; do echo Dumping DB $i; START=`date +%s` ; mysqldump -u root --database $i >/dumps/$i.dump ; STOP=`date +%s`; echo "Duration of Backup for DB $i took `expr $STOP - $START ` Seconds" ; done

Aber bitte ggf. noch die Optionen für write lock und was man sonst noch haben möchte setzen.
Obiges Beispiel ist aber für die tägliche Sicherung per mysqldump in einem cronjob für reine MyIsam Tabellen ausreichend.

Für alles andere lässt es sich mit eine wenig Phantasie und Scripting Kenntnisse anpassen.
 
Du wirst aber mit z.B. InnoDb Dein blaues Wunder erleben, wenn Du diese in offenen Transaktionen kopierst speziell wenn File per Table als Option gesetzt ist.:

Also merke:
Willst Du konsistenten Daten, kopiere Datenfiles nur bei herunter gefahrener DB oder verwende geeignete Tools um Datenbanken zu sichern.
Das sehe ich mal als Voraussetzung für das Ganze an. Er befindet sich schließlich im Rescue-System, also wird der DB-Server wohl auch abgeschalten sein. ;)
 
Das sehe ich mal als Voraussetzung für das Ganze an. Er befindet sich schließlich im Rescue-System, also wird der DB-Server wohl auch abgeschalten sein. ;)

Meine Aussage bezog sich im besonderen, auf Deine Anmerkung, das sei ein simples Verfahren um eine DB zu sichern.
Wer aber eine DB betreibt, will i.d.R. keine Downtime fürs Backup.
Und die "Datenfiles" zu sichern, dafür gibt es zuverlässigere Methoden wie z.B. ein LVM Snapshot.
 
Last edited by a moderator:
Back
Top