Active-Media-Production

Individual Web Development

MySQL mehrere Datenbanken sichern

Dieser Beitrag behandelt als Thema die komplette Sicherung einer MySQL-Datenbank. Vielen wird die Aufgabe vertraut sein, dass Sie mehrere Datenbanken in einem Rutsch sichern möchten. So ging es auch mir. Ich habe allerdings schon vor geraumer Zeit auf meinem Linux Server dafür einen Cron-Job eingerichtet, der täglich ein Backup der gesamten Datenbank erzeugt.

Nachdem ich allerdings meinen kompletten Produktions-Webserver aktualisieren mußte, hatte ich das Problem diese Sicherung wieder zurück zu spielen. Nach erfolgloser Suche im Internet zur Rücksicherung von MySQL-Daten, habe ich eine eigene Lösung ausprobiert, die ich euch auch nicht vorenthalten möchte.

Als erstes möchte ich den Weg für die Sicherung beschreiben.
Um eine Datenbank zu sichern, gibt es bei MySQL den Befehl mysqldump. Laut Referenzhandbuch von MySQL kann man damit einzelne Datenbanken als Textdatei sichern. Was allerdings nur schlecht oder gar nicht beschrieben ist, ist die Möglichkeit auch alle Datenbanken in eine Datei zu sichern. Daraus kann dann aber auch eine relativ große Textdatei entstehen. Und das ist nicht grade flexibel. Mir ging es allerdings um die reine Sicherung, als Vorbeugung gegen Defekt oder anderen Verlust. Mit der hier beschriebenen Methode hat man damit allerdings recht schnell den gesamten Server gesichert oder auf einen anderen Rechner übertragen.
Um die Befehle ausführen zu können sollten man vorher in das Verzeichnis "bin" von der MySQL-Installation wechseln.

Die Sicherung einzelner Datenbanken geschieht mit dem Befehl:
shell>mysqldump --databases -u Benutzer -p=Passwort DBName > /pfad/texdateiname.db

Die Rücksicherung erfolgt dementsprechend mit dem Befehl:
shell>mysql -u Benutzer -p=Passwort DBName < /pfad/dumpdateiname.db

Hierbei ist nur zu beachten, dass die Datenbank vorher existieren muss.

Um nur alle Datenbanken in eine Datei zu sicheren, kann man die gleichen Befehle verwenden, nur muss man hier die Option --ALL zufügen und den Namen der zu sichernden Datenbank weglassen.
shell>mysqldump --all-databases -u Benutzer -p=Passwort > /pfad/texdateiname.db

Und hier kommt der Teil, wo wir die Datenbanken wieder zurück sichern. Dabei ist zu beachten, dass bei der Sicherung wie zuvor beschrieben, auch die Datenbank mit den MySQL eigenen Benutzern gesichert wurde und somit auch automatisch wieder alle Benutzer hergestellt werden.
shell>mysql -u Benutzer -p=Passwort --all-databases < /pfad/dumpdateiname.db

Nach einigen Sekunden sollte dann der gesamte Datenbank-Server wieder seinen Datenbestand besitzen. Die automatische Sicherung kann man natürlich auch als Cron-Job einrichten.
Ich hoffe mit dieser Anleitung Einigen unter euch ein wenig geholfen zu haben.