Mysql Backup auf Hosteurope FTP-Space

Jeder sollte regelmäßig Backups vom Webspace und der Datenbank machen, weil wenn es auf einmal dazu kommt, dass ein Server physikalisch abraucht, ist man froh, wenn man nur wenige Daten verloren hat (noch besser gar keine). Dies ist aber z.B. bei einem Forum nicht immer möglich, da es hoch dynamisch ist. Deshalb sollte jede Nacht, ein Datenbankbackup gemacht werden und für den Webspace ein inkrementelles.

Nachdem ich für ein Forum diesen Vorschlag gemacht hatte, entschied sich der Besitzer des Forum für ein externes FTP Backup bei Hosteurope (HE), bei dem auch das Forum auf einem VServer gehostet wird. Bei HE stehen verschiedene Varianten eines FTP Speicherplatzes zur Verfügung. Für die einfachen Sachen reicht ein Angebot mit 5GB Speicherplatz und 2 FTP Benutzern. Weitere Angebote mit mehr Speicher und Benutzern gibt es hier. Zum jetzigen Zeitpunkt, Dezember 2008, stehen folgende Möglichkeiten zur Verfügung:

    • – FTP Backup S – 5GB / 2 User 0,75 Euro
    • – FTP Backup M – 10GB / 5 User 1,40Euro
    • – FTP Backup L – 25GB / 10 User 3,25 Euro
    • – FTP Backup XL – 50GB / 15 User 6,00 Euro
    • – FTP Backup XLL – 100GB / 20 User 10,00 Euro

Benutzer sind dabei stehts auf ein Verzeichnis gebunden und auf eine IP, damit man mit dem „billigen“ Space keinen Datenaustauschplatz für illegale Aktivitäten nutzt. Einfache aber effektive Möglichkeit des Providers Filesharing zu unterbinden.

Nun zum eigentlichen Backup. Dafür wurde ein Mysql-Backupscript geschrieben, dass den vielen vielen Beispielskripten aus dem Netz ähnelt. Man kann es auch einzeln ausführen, um ein Backup zu erhalten, solange man die letzte Zeile weglässt, die für den abschließende Upload zuständig ist.

#############################
# MYSQL-Backupscript
# by Benjamin Schrödl
# schroedl@dev-tec.de
#############################
#! /bin/sh
# backup mysql
mysqldump --add-drop-table --allow-keywords -Q --user=MYSQLUSER --password=PASSWORD --databases DATABASE  > /tmp/mysql-backup.sql
sleep 5
cd /tmp/
rm -f /tmp/mysql-backup.tar.gz
tar -czvf mysql-backup.tar.gz mysql-backup.sql
rm -f /tmp/mysql-backup.sql
chmod 600 /tmp/mysql-backup.tar.gz
# now upload
/root/backup/backup-ftp.sh

Dabei müssen MYSQLUSER, PASSWORD und DATABASE entsprechend angepasst werden. Am Anfang wird ein Mysqldump erstellt, der gepackt wird und vom Script backup-ftp.sh auf dem Backupspace hochgeladen wird. Wer den Dump anders haben will, z.B. keine erweiterten Inserts, der kann es entsprechend abändern.

Beim FTP-Upload-Script kommt das Unixkommande „ftp“ zum Einsatz. Hier muss IPofFTPSERVER gegen die IP des Server oder den DNS ausgetauscht werden.

#!/bin/bash
#############################
# FTP-Backupscript
# by Benjamin Schrödl
# schroedl@dev-tec.de
#############################

cd /tmp/

/usr/bin/ftp -i -v IPofFTPSERVER <<EOF
binary
del mysql-backup3.tar.gz
ren mysql-backup2.tar.gz mysql-backup3.tar.gz
ren mysql-backup1.tar.gz mysql-backup2.tar.gz
ren mysql-backup.tar.gz  mysql-backup1.tar.gz
put mysql-backup.tar.gz
quit
EOF

Damit der Upload automatisch und ohne Abfrage des Passworts funktioniert, muss im Homeverzeichnis, bei dem das Script ausgeführt wird die Datei .netrc angelegt werden, mit folgendem Inhalt:

machine IPofFTPSERVER login FTPUSER password FTPPASSWORD

IPofFTPSERVER, FTPUSER und FTPPASSWORD müssen entsprechend den Einstellungen des HE-Backends eingestellt werden. Ein

/usr/bin/ftp -i -v IPofFTPSERVER

sollte vom VServer aus ohne Fehlermeldungen funktionieren und man sollte sich auf dem FTP-Server wiederfinden. Mit „quit“ gehts zurück zur Bash. Jetzt fehlt nur noch ein Cronjob, der täglich dieses Script ausführt. Das Anlegen bzw. Ändern geschieht mit:

crontab -e

Als Eintrag fügt man zum Beispiel folgenden Code hinzu, der das Script um 3:45 morgens ausführt und die Ausgabe (Status und ähnliches) ins Nirvana (/dev/null) schickt.

45      3       *       *       *       /root/backup/backup-mysql.sh > /dev/null

Das wars im großen und Ganzen. Wer Lust und Laune hat, kann sich bei einem Fehler eine Mail senden lassen, was bei mir bis jetzt nicht vorgekommen ist. Dies funktioniert jetzt schon eine Ganze weile ohne Probleme und die Backups werden 4 Tage aufgehoben, weil das Backup ein ganzes Gigabyte hat. Zusätzlich liegt der letzte Snapshot des Forums auf dem Server. Somit wäre ein weiterer Schritt in Richtung Sicherheit getan – mit der Hoffnung, dass man dieses Backup nie braucht.

Update 09.06.2009: Mysql Backup auf Hosteurope FTP-Space (PHP-Version)

Leave a comment

Your comment