MySQL-Backups beim Webhoster

26. Februar 2010 | #linux #mysql #backup #webhosting

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.

Durchführung

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

Aufgepasst: Achte darauf, dieses Skript unbedingt in einen Ordner außerhalb deiner Internetseite hochzuladen, damit niemand über seinen Browser auf deine Zugangsdaten stoßen kann!

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 beispielsweise 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 (muss vorab angelegt werden!) 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.

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 ;-)).