MySQL mehrere Datenbanken sichern

Dez 23, 2008 | Server, Tutorial | 0 Kommentare

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.

MySQL Datenbanken sichern

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:

./mysqldump --databases -u Benutzer -p=Passwort DBName > /pfad/texdateiname.db

Die Rücksicherung erfolgt dementsprechend mit dem Befehl:

./mysql -u Benutzer -p=Passwort DBName < /pfad/dumpdateiname.db

Hierbei ist nur zu beachten, dass die Datenbank vorher existieren muss. Diese kann aber mit dem Befehl „createdatabase“ angelegt werden.

Sicherung aller MySQL Datenbanken auf einmal

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.

./mysqldump --all-databases -u Benutzer -p=Passwort > /pfad/texdateiname.db

 

Alle MySQL Datenbanken zurücksichern

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.

./mysql -u Benutzer -p=Passwort < /pfad/dumpdateiname.db

Um eventuell auftretende Fehler zu ignorieren, kann zusätzlich der Parameter –force eingesetzt werden. Damit wird dann der Import nach Auftreten eines Fehlers nicht abgebrochen. Bei mir gab es des öfteren das Problem mit „Duplicate Entry“ und doppelten Primär-Keys.

Nach einigen Sekunden sollte dann der gesamte Datenbank-Server wieder seinen Datenbestand besitzen. Die Zeit ist von der Anzahl und der Größe der einzelnen Datenbanken abhängig. Bei mir hat eine Rücksicherung aller Datenbanken ca. 48min gedauert. Die Sicherungsdatei war 330MB groß. Das ganze ließ sich dadurch beschleunigen, das ich vorher alle vorhandenen Datenbanken per PHPMyAdmin gelöscht habe. Hierbei muss man aufpassen, die Datenbank „mysql“ nicht zu löschen. Diese enthält alle Benutzer des Datenbankservers und man würde dann nicht mehr importiert bekommen.

Die automatische Sicherung kann man natürlich auch als Cron-Job einrichten. Dazu muss nur der Exportbefehl in die Crontab eingetragen werden.

Ich hoffe mit dieser Anleitung Einigen unter euch ein wenig geholfen zu haben.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert