MySQL-Datenbanken sichern
Vorsorge

Big DataData & StorageSicherheitSicherheitsmanagement

Datenverlust kann immer auftreten ? auch bei großen Webhostern. Daher sollte man von seiner MySQL-Datenbank Backups anlegen. Internet Professionell zeigt, wie es geht.

Dynamische Inhalte

MySQL-Datenbanken sichern

Das Internet wird immer dynamischer: Zahlreiche Webpräsenzen setzen mittlerweile auf dynamische Inhalte ? statische Websites haben ausgedient. Ob Content-Management-Systeme oder Foren und Gästebücher, eine Vielzahl von Seiten werden heutzutage bei ihrem Abruf dynamisch generiert. Zum Einsatz kommen hierfür meist Programmiersprachen wie Perl und PHP, als Datensilo eine MySQL-Datenbank.

Während sich von statischen Web-Inhalten wie HTML-Dateien und Bilder recht einfach Sicherheitskopien anfertigen lassen, ist dies bei dynamischen Inhalten nicht so einfach. Zwar lassen sich auch PHP-, Perl- und ASP-Skripts problemlos via FTP auf den lokalen Server kopieren. An die Inhalte einer MySQL-Datenbank kommt man jedoch nicht so leicht heran.

Im folgenden Beitrag zeigt Ihnen Internet Professionell, wie Sie die MySQL-Datenbank Ihrer Webpräsenz sichern und was es dabei zu beachten gilt.


Shared Hosting

MySQL-Datenbanken sichern

So mancher Kunde eines großen Webhosters wird sich fragen, wieso er sich überhaupt Gedanken um das Thema Backup machen sollte. In der Regel kümmert sich der Webhoster um die regelmäßige Sicherung der Daten auf den jeweiligen Kundenservern.

Als Mieter eine Shared-Hosting-Accounts oder eines Managed Servers haben Sie in der Tat diesbezüglich kaum Sorgen: Der Anbieter kümmert sich darum, dass sämtliche Daten regelmäßig gesichert werden, und spielt diese im Fall der Fälle zurück, falls doch einmal etwas schief läuft und zum Beispiel eine Festplatte den Geist aufgibt.

Dennoch sollte man auch als Shared-Hosting-Kunde das Thema Backup nicht auf die leichte Schulter nehmen: Auch bei einem Webhoster kann es einmal zu Datenverlust kommen, trotz regelmäßiger Backups. Dass dies durchaus der Fall sein kann, hat einer der großen Massenhosters bereits eindrucksvoll bewiesen. Zum anderen kann es auch Ihnen selbst passieren, dass Sie beispielsweise ein neues Skript installieren und Ihnen dieses eine MySQL-Datenbank überschreibt. Zwar bieten einige Webhoster die Möglichkeit, gegen einen Unkostenbeitrag ein vorhandenes Backup zurückzuspielen, aber wenn Sie in diesem Fall Ihr eigene Kopie haben und diese nicht zu alt ist, können Sie das Problem bequem selbst beheben.


Eigener Server

MySQL-Datenbanken sichern

Als Kunde eines dedizierten Webservers mit Root-Zugang oder eines V-Servers sind Sie allein für die Sicherung der Daten zuständig. In diesem Fall haben Sie keine Wahl, als sich selbst um regelmäßige Kopien der wichtigen Daten zu bemühen. Idealerweise stellt Ihnen der Anbieter für das Backup einen entsprechenden FTP-Speicherplatz zur Verfügung, so dass Sie sich ein Speichern auf dem lokalen Rechner ersparen können.

Ganz gleich welche Art von Webspace Sie Ihr Eigen nennen, ob eigener Server oder Shared-Hosting-Paket ? in jeden Fall sollten Sie sich um Backups Ihrer Webpräsenz kümmern. Auch wenn bei großen Webhostern die Gefahr eines Datenverlusts gering ist ? zumindest in den meisten Fällen ? schaden kann ein Backup in keinem Fall. Und mit den folgenden Tipps ist das Sichern Ihrer MySQL-Datenbank mit wenig Arbeit verbunden.


MySQL und Backups

MySQL-Datenbanken sichern

Grundsätzlich bietet MySQL zum Sichern von Datenbanken und Tabellen drei Möglichkeiten an: das Kopieren der Datenbankverzeichnisse und der enthaltenen Dateien ? die so genannte Hot Copy ?, die Verwendung von speziellen SQL-Kommandos sowie den Export der Daten in ein universelles Format.

Eine Hot Copy werden nur die Wenigsten durchführen können, da hierfür uneingeschränkter Lesezugriff auf die Verzeichnisstruktur des Servers benötigt wird, was bei Shared-Hosting-Accounts in der Regel nicht der Fall ist. Die Verwendung des entsprechenden SQL-Befehls BACKUP TABLE erfordert zudem Kenntnisse in SQL und der Verzeichnisstruktur. Der Export ist jedoch mit Hilfe von MySQL zu lösen, da die unterschiedlichsten Formate möglich sind.


PhpMyAdmin

MySQL-Datenbanken sichern

Eine einfache Möglichkeit zum Sichern von MySQL-Datenbanken bietet das Tool PhpMyAdmin. Zahlreiche Webhoster wie etwa 1&1 und Domainfactory stellen ihren Kunden das Tool bereits vorinstalliert und konfiguriert zur Verfügung, so dass Sie auf dieses ? meist über das Kundenmenü ? bequem zugreifen können. Bei anderen Anbietern, zum Beispiel bei Strato, müssen Sie PhpMyAdmin selbst installieren, was jedoch mit wenigen Handgriffen erledigt ist. So stellt Strato dafür in seinen Frequently Asked Questions eine übersichtliche Anleitung im Dokument Nummer 1370 zur Verfügung. Auch auf einem dedizierten Webserver ist das Tool in wenigen Minuten lauffähig.

Um eine Kopie einer Datenbank anzufertigen, klicken Sie in der Tabellenansicht von PhpMyAdmin auf den Reiter Exportieren. Als Formate für den Export eignen sich SQL, CSV-Daten und XML am besten.


Formatfrage

MySQL-Datenbanken sichern

Im SQL-Format exportiert PhpMyAdmin die Daten als SQL-Kommandodatei. Der Vorteil bei diesem Format ist, dass dabei alle Informationen zur Datenbank und den Tabellen sowie die Daten in ausführbare SQL-Kommandos umgewandelt werden. Ist irgendwann einmal eine Rücksicherung der Daten notwendig, müssen Sie diese Datei lediglich ausführen, und die Datenbank, die Tabelle sowie die Datensätze werden wiederhergestellt. Auf der anderen Seite kann dies unter Umständen jedoch dazu führen, dass diese Sicherung nur mit einem MySQL-Datenbanksystem kompatibel ist.

Bei Verwendung des CSV-Formats werden lediglich die Datensätze selbst gesichert. Für jeden Datensatz wird in der CSV-Datei eine neue Zeile eingefügt, die einzelnen Felder der Datensätze werden darin mit Strichpunkten (Semikolons) voneinander getrennt. Leider geht dabei die Struktur der Datenbank verloren.

Das XML-Format entspricht im Wesentlichen dem CSV-Format. Statt die Daten aber einfach in Zeilen und durch Semikolons zu trennen, wird dabei die Hierarchie beibehalten und die Daten werden in Form von Tags strukturiert. Auf diese Weise geht zwar die Struktur der Datenbank nicht verloren, dennoch fehlen wichtige Informationen zum Tabellenaufbau.


Komprimierung

MySQL-Datenbanken sichern

Es empfiehlt sich also, das SQL-Format zu verwenden. Damit ein reibungsloser Import möglich wird, aktivieren Sie unter Struktur die Einträge AUTO_INCREMENT-Wert hinzufügen sowie Tabellen- und Feldnamen in einfachen Anführungszeichen. Zusätzlich sollten Sie die Optionen Vollständige ?INSERT?s und Hexadezimalschreibweise für Binärfelder verwenden unter Daten aktivieren. Als Exporttyp verwenden Sie INSERT.

Je nach Größe der Tabelle ist es sinnvoll, die zu exportierenden Daten zu komprimieren. So sparen sich sich unter anderem Download-Traffic. Wählen Sie hierfür unter Kompression eine der Optionen keine, Zip-komprimiert (für Windows-Nutzer zu empfehlen) oder GZip-komprimiert. Um die gesamte Datenbank zu sichern, wählen Sie diese auf der linken Seite aus und klicken Sie in der Datenbankansicht auf den Reiter Exportieren.


Restore mit PhpMyAdmin

MySQL-Datenbanken sichern

So einfach das Sichern der MySQL-Datenbank mit PhpMyAdmin funktioniert, so simpel ist auch das Zurückspielen derselben. Möchten Sie Daten aus einer CSV-Datei in eine Datenbank beziehungsweise Tabelle importieren, scrollen Sie in der Tabellenübersicht ganz nach unten. Klicken Sie auf den Link Textdatei in Tabelle einfügen. In der sich öffnenden Ansicht können Sie nun eine CSV-Datei auf Ihrem Rechner auswählen und die Parameter für den Import festlegen.

In der Regel sind bei CSV-Dateien die Felder eines Datensatzes durch Semikolons und Datensätze durch Zeilenum
brüche getrennt. Möchten Sie hingegen eine so genannte TSV-Datei (Tabulator Separated Values) importieren, tragen Sie in das Feld Felder getrennt mit einfach einen Backslash gefolgt von einem T ein ? also \t. Sollte die CSV- oder TSV-Datei, die Sie importieren möchten, nicht durch die unter Windows übliche Zeichenfolge \r\n (Wagenrücklauf und Zeilenumbruch), sondern durch die unter Linux typische Zeichenfolge \n (Zeilenumbruch) getrennt sein, passen Sie dies in dem Feld Zeilen getrennt mit an.

Finden sich in der zu importierenden Datei nicht zu jeder Spalte der MySQL-Tabelle entsprechende Felder in den neuen Datensätzen, dann können Sie die Reihenfolge und Zuordnung in dem Feld Spaltennamen festlegen. Trennen Sie dazu die MySQL-Tabellenspalten durch Kommas voneinander, zum Beispiel id, title, pages.

Sollte Ihnen bei dem Import der Daten von MySQL eine Fehlermeldung geliefert werden, dann wechseln Sie die LOAD-Methode von DATA LOCAL auf DATA. Damit ist das Problem oftmals gelöst.


Backup per Hand

MySQL-Datenbanken sichern

Bei Shared-Hosting-Accounts sowie Managed Servern kommt man bei Backups meist nicht um die Nutzung von PhpMyAdmin herum. Können Sie einen dedizierten Webserver mit Root-Zugang Ihr Eigen nennen oder haben Sie einen Shell-Zugang zum Shared-Hosting-Account, können Sie Backups direkt über die entsprechenden SQL-Anweisungen erstellen. Dies ist anzuraten, wenn die Datenbank eine gewisse Größe erreicht hat ? etwa bei über 100000 Datensätzen oder einer Größe im zweistelligen MByte-Bereich. In diesem Fall sollten Daten auf der Kommandozeile gesichert werden.


Kommandozeile

MySQL-Datenbanken sichern

Für ein Backup über die Kommandozeile loggen Sie sich als User root auf Ihrem Server ein und wechseln auf diesem in ein Verzeichnis, auf das Sie auch per FTP Zugriff haben. Über den folgenden Befehl erstellen Sie ein Backup der MySQL-Datenbank:

mysqldump ?user=USER ?password=PASSWORD DATABASE> backup.sql

In der Datei backup.sql finden Sie nun sämtliche SQL-Befehle zum Erzeugen der Tabellen und ihrer Inhalte. Vergessen Sie dabei nicht, in der obigen Codezeile Datenbank, Benutzer sowie Passwort Ihrem Server entsprechend anzupassen.

Um Speicherplatz zu sparen und den Download der Datei zu beschleunigen, sollten Sie diese zudem mit folgendem Kommando komprimieren:

gzip backup.sql

Nun können Sie mit einem FTP-Client auf den Server zugreifen und die Backup-Datei downloaden. Nach dem Packen heißt die Datei backup.sql.gz.

Um die Datei zurückzuspielen, wird diese nach dem Kopieren auf den Server im ersten Schritt wieder entpackt:

gzip ?d backup.sql.gz

Nun befindet sich die Datei wieder mit dem ursprünglichen Namen backup.sql im Verzeichnis. Zum Zurückspielen des Backups in die Datenbank führen Sie folgenden Befehl aus:

mysqldump ?user=USER ?password=PASSWORD

Sollte das Login mit den alten Benutzerdaten scheitern, legen Sie mit Tools wie Plesk eine neue Datenbank an und vergeben neue Zugangsdaten. Öffnen Sie dann diese Datenbank mit use DATABASE und laden die Datenbank über source backup.sql.


Tools bei Webhostern

MySQL-Datenbanken sichern

Das Problem bei zahlreichen Shared-Hosting-Angeboten: Auf Grund der beschränkten Skriptlaufzeiten kann in vielen Fällen kein Backup der Datenbank gezogen werden, weil die Skripts abbrechen, bevor sie fertig sind. Einige Webhoster bieten Ihren Kunden daher eigene Skripts an, die von den Laufzeitbeschränkungen ausgenommen sind.

Ein Beispiel ist der Münchener Webhoster Domainfactory. Kunden können über den URL http://example.com/system-cgi/db_dump/ auf ein Skript zugreifen, das im Handumdrehen eine Kopie der Datenbank anlegt. Weitere Informationen hierzu finden Sie unter cms.domainfactory.de/Datenbanken.732.0.html.

Einen anderen Weg geht Strato mit der MySQL Backup-Control. Das Tool stellt konsistente Sicherheitskopien der MySQL-Datenbanken zur Verfügung. Kunden mit Premium-Paketen haben so jederzeit individuellen Zugriff auf Sicherheitskopien ihrer Website und MySQL-Datenbanken. So stehen neben mehreren aktuellen stündlichen Backups auch tägliche und wöchentliche Kopien zur Wiederherstellung zur Verfügung. Eine Rücksicherung der Daten ist problemlos möglich, nicht zuletzt auch wegen des vollen Lesezugriffs auf Datenbanken mit SQL-Befehlen.


Follow up

MySQL-Datenbanken sichern

Wie der Titel des Beitrags bereits sagt ? Backups der MySQL-Datenbank sind in der Tat nicht nur etwas für ängstliche Weicheier: Jederzeit kann ein Server den Geist aufgeben und im schlimmsten Fall sind darauf abgelegte Daten nicht mehr lesbar.

Bei einem Shared-Hosting-Account können Sie zwar in der Regel davon ausgehen, dass sich der Webhoster darum kümmert, dass ein zumeist vorhandenes und nicht zu altes Backup eingespielt wird, doch hundertprozentig verlassen sollten Sie sich darauf nicht.

Bei einem dedizierten Server oder einem V-Server sind Sie als Mieter ohnehin komplett eigenverantwortlich, so dass Sie hierbei ohnehin nicht um eigene Backups herumkommen.

Welche Serverlösung Sie auch immer einsetzen: Backups sind ein Muss und sollten regelmäßig angefertigt werden. Mit den oben beschriebenen Schritten kommen Sie schnell und ohne Aufwand zur eigenen Sicherheitskopie und können Sie bequem zurücklehnen. Falls doch einmal etwas schief läuft, spielen Sie einfach Ihr Backup zurück und der Schaden hält sich in Grenzen.