MySQL-Backups beim Webhoster

Kürzlich zeigte ich, wie man bequem an tägliche MySQL-Backups kommt. Dafür verwendete ich einen Cronjob, der auf dem heimischen System lief. Doch nicht jeder Webhoster erlaubt es Kunden (oder auch Hackern) von „zuhause aus“ auf seinen Datenbank-Server zuzugreifen – so auch meiner seit einigen Tagen.

Dafür bieten viele Hoster jedoch ihren Kunden ebenfalls Cronjobs auf ihren Servern an. In meinem Fall ist ein Cronjob, der alle 24 Stunden ausgeführt wird und den Prozessor maximal eine eine Minute lang foltert, sogar kostenlos und Bash-Skripte sind neben PHP auch erlaubt.

1.) Datenbank-Backup auf dem Server erstellen

Unseren alten Bash-Zweizeiler kann man mit minimalen Änderungen per FTP hochladen. So könnte er aussehen:

#!/bin/bash
mysqldump -hdatenbank.meinhoster.example -ubenutzername-pgeheimespasswort -C --all-databases > MeineDatenbank.sql

Wichtiger Hinweis: Achte unbedingt darauf, dieses Skript an eine Stelle hochzuladen, an die niemand ohne Passwort per http kommen kann! Damit meine ich: Wenn jemand einfach über http://www.meineseite.de/mysqlsicherung.sh o.ä. an das Skript kommt (in dem deine Datenbank-Zugangsdaten im Klartext stehen) ist Holland in Not!

Die Bash-Datei muss man jetzt noch im Administrations-Backend bei seinem Hoster als Cronjob einrichten. Daraufhin wird bspw. alle 24 Stunden eine Datei MeineDatenbank.sql erzeugt (die alte Datei wird jeweils überschrieben).

2.) Das Backup auf den heimischen PC übertragen

Jetzt müssen wir das Backup nur noch nachhause holen. Linux-Nutzer erledigen das wieder ganz bequem mit einem Skript, das auf dem heimischen Rechner z.B. unter /etc/cron.daily/ abgespeichert ist. Dort wird es täglich automatisch ausgeführt und lädt z.B. per wget den tagesaktuellen Datenbank-Dump herunter. Hier ein primitives Beispiel:

#!/bin/bash

cd /home/benutzername/Backups/Datenbank
wget ftp://benutzername:passwort@ftp.meinhoster.de/MeineDatenbank.sql
mv MeineDatenbank.sql `date +"%Y-%m-%d"`.sql

Nicht elegant, aber zur Veranschaulichung genügt es. Der Dump wird im Ordner Backups/Datenbank abgelegt und nach Datum umbenannt. Heute würde zum Beispiel die Datei Backups/Datenbank/2010-02-26.sql angelegt.

Abschließende Betrachtungen

Beachte, dass die Code-Beispiele bewusst simpel gehalten sind und in Sachen Sicherheit eine mittelschwere Katastrophe auslösen können. Ich möchte nur die Möglichkeit dieser Vorgehensweise erläutern und Raum für deine eigene Ideen und Optimierungen lassen (Rückmeldungen willkommen!). Denkbar wäre z.B. die Möglichkeit, den Webmaster per E-Mail über fehlgeschlagene Backups zu informieren.

Ein weiterer Punkt, an den man ansetzen kann: Die gezeigte Backup-Lösung ist für die Katz, wenn dein Rechner nicht wenigstens alle paar Tage läuft, um sich das neue Backup herunterzuladen.

Es sei außerdem daran gedacht, dass ein Hacker, der sich Zugriff auf deinen FTP-Server verschafft hat, jetzt auch an deine Datenbank-Zugangsdaten kommen kann. Das Sicherheitsprinzip, für FTP und Datenbank verschiedene Passwörter zu verwenden, ist damit ausgehebelt.

Wohl also denen, die sich lieber einen Server mieten und damit volle Kontrolle und nahezu unbegrenzte Möglichkeiten für ihre Backup-Konzepte haben (doch mit großer Macht kommt auch große Verantwortung; außerdem passt gemieteter Webspace deutlich besser ins Budget eines Studenten ;-)).

Andwils Avatar

~andwil

Geek aus Kiel. Tobt sich hier vor allem über den Open-Source-Kosmos im Allgemeinen (und Linux im Speziellen) sowie Heavy Metal aus.