Zum Inhalt springen
Der Guide für ein smartes Leben.
Tolles aus der MySQL-Trickkiste

Teil 3: MySQL und phpMyAdmin

Autoren: Redaktion pcmagazin und Tobias Hauser • 12.11.2008 • ca. 2:20 Min

Kopieren per Dateisystem Das MySQL-Standard-Tabellenformat MyISAM speichert die Daten zu einer Datenbank in einem eigenen Verzeichnis. Dies lädt natürlich zum direkten Kopieren über das Dateisystem ein. Vorsichtig sein müssen Sie nur, wenn gerade Nutzer in die Tabellen schreiben oder schreiben...

Kopieren per Dateisystem

Das MySQL-Standard-Tabellenformat MyISAM speichert die Daten zu einer Datenbank in einem eigenen Verzeichnis. Dies lädt natürlich zum direkten Kopieren über das Dateisystem ein. Vorsichtig sein müssen Sie nur, wenn gerade Nutzer in die Tabellen schreiben oder schreiben könnten. In diesem Fall ist die Datenintegrität in Gefahr, da Sie dann eventuell zwei Stände haben. Bei mehreren Tabellen kann es dann sogar vorkommen, dass Referenzen scheitern. Deswegen können Sie mit dem SQL-Befehl LOCK TABLE eine Tabelle sperren. Hier reicht das Sperren für Schreibvorgänge:

Special MySQL und phpMyAdmin: MySQL
Hilfreich: Der SQL-Code kann als Vorlage dienen.
© Archiv

Zusätzlich ist es empfehlenswert, mit FLUSH noch den MySQL-internen Cache zu leeren. Ausführliche Informationen zum Thema erhalten Sie unter https://dev.mysql.com/doc/refman/5.1/de/backu p.html.

LOCK TABLE Tabellenname WRITE

Dumps per phpMyAdmin

In Shared-Hosting-Umgebungen und bei Webservern, die Sie nicht selbst unter Kontrolle haben, fehlt sowohl der Konsolenzugriff als auch die Möglichkeit, Daten aus dem Datenverzeichnis von MySQL direkt zu kopieren.

Dumps per Konsole

Das Erstellen von Dumps mit phpMyAdmin hängt von der PHP-Einstellung für Skript-Timeouts ab und muss immer manuell angestoßen werden. Insofern ist sie für regelmäßige Sicherungen nicht besonders praktikabel. Einfacher geht es über die Konsole beziehungsweise Eingabeaufforderung - wenn Sie einen solchen Zugriff haben. Mittels mysqldump können Sie schnell einen Dump anlegen:

Special MySQL und phpMyAdmin: MySQL
Beweglich: Auch Tabellen lassen sich kopieren.
© Archiv

Basis ist das Hilfsprogramm mysqldump. Vorsicht, hier handelt es sich nicht um die MySQL-Konsole, sondern um ein separates Programm, das in der Systemkonsole aufgerufen wird. Optional können Sie noch eine Liste der Tabellennamen hinter dem Datenbanknamen angeben. Und auch das Komprimieren des Dumps in einem Archiv erledigen Sie direkt in der Anweisung:

mysqldump --user=Benutzername --
password=Passwort Datenbankname >
dump.sql

Sie sollten beim Erstellen des Dumps die Tabellen sperren. Dazu können Sie einfach beim Aufruf die Option --lock-tables anfügen. Ansonsten kann es passieren, dass gerade von Nutzern in die Datenbank geschrieben wird, während Sie die Sicherung vornehmen. Dadurch sind unter Umständen einzelne Tabellen im Dump inkonsistent. Diese Gefahr ist vor allem bei Websites mit vielen Besuchern und häufiger Nutzerinteraktion hoch. Das Sperren und Sichern sollten Sie in diesem Fall aber in Zeiten machen, in denen die Site nicht stark frequentiert ist. Alle Optionen von mysqldump finden Sie unter https://dev.mysql.com/doc/refman/5.1/de/my sqldump.html. Um die Daten wieder einzuspielen, verwenden Sie folgende Zeile:

mysqldump --user=Benutzername --
password=Passwort Datenbankname
| gzip >dump.sql.gz

Die Datenbank muss in leerer Form schon vorliegen. Nach dem Passwort wird dann noch gefragt. Wenn Sie das Erstellen eines Dumps zum Sichern verwenden, sollten Sie ab und an eine manuelle Test-Wiedereinspielung vornehmen, um sicherzugehen, dass Ihre Dumps auch wirklich klappen. Die genannten Kommandozeilenaufrufe können Sie auf einem Linux- basierten Webserver mit einem Cronjob wiederholt ausführen. Windows bietet mit dem Systemdienst Schedule ähnliche Möglichkeiten. Die meisten Hoster besitzen in ihren Kundenmenüs Eingabemasken, um das Erstellen von Cronjobs zu erleichtern.

cat dump.sql | mysql --user=
Benutzername --password Datenbankname

Eine weitere Alternative zu mysqldump ist mysqlhotcopy. Es erstellt ein sehr schnelles Backup einer Datenbank und kopiert es einfach in ein angegebenes Verzeichnis:

Das Programm übernimmt dabei das Sperren der Tabellen. Es funktioniert allerdings nur mit dem Tabellenformat MyISAM und benötigt Perl. Eine umfangreiche Übersicht mit den Einstellungen finden Sie unter https://dev.mysql.com/doc/refman/5.1/en /mysqlhotcopy.html

mysqlhotcopy Datenbankname
Verzeichnis