[Linux] Automatische MySQL Backup Lösung

  • [SIZE="4"]Automatisches Backup von MySQL-Datenbanken[/SIZE]

    Getestet/Ausgeführt unter: Ubuntu 8.04 LTS Server
    MySQL System: LAMPP (Stable)

    Inhalt:

    - Vorwort / Anmerkungen
    - Erstellen eines MySQL Backups
    - Transferieren eines Backups zu FTP
    - Einrichten der Automatisierung

    Vorwort:

    Dieses Tutorial wurde von mir selbst geschrieben.
    Ich habe keinerlei Quellen benutzt, da ich die Befehle
    durch meinen Beruf größtenteils selbst kenne und
    weiss wie sie sich handlen lassen.

    Ich sehe leider immer wieder P-Server Projekte,
    denen der Erfolg durch irgendwelche Serverabstürze
    zu Nichte gemacht wird, weil sie kein Backup jeglicher
    Dateien gemacht haben. Mit dieser Variante des MySQL
    Backups kann man zumindest alle wichtigen Dateien
    die sich auf den Datenbanken befinden sichern.

    Als Konvention für die Codes gilt lediglich,
    dass Zeilen, die mit einem # beginnen Kommentare sind

    Erstellen eines MySQL Backups:

    Da wir zunächst einmal die Datei benötigen,
    die sich später dann wieder aufspielen lässt,
    müssen wir erst aus der Datenbank eine .sql
    Datei erstellen.

    In der Linux Konsole können wir das mit Hilfe
    eines einfachen Befehls vollziehen.

    Da wir diese Abläufe allerdings später automatisieren
    wollen, müssen wir diese zunächst in eine Scriptdatei speichern:

    Erstellen eines Scriptverzeichnisses
    unter /root: (Man muss als Root eingeloggt sein)

    Code
    # Wechsel in das Root-Verzeichnis /root
    cd
    
    
    # Erstellen eines Script Verzeichnisses
    mkdir scripte
    
    
    # Erstellen eines Verzeichnisses wo die Backups landen
    mkdir mysqlb

    # Erstellen der Scriptdatei:

    Code
    # Wechsel in das Script Verzeichnis
    cd scripte
    
    
    # Erstellen der Scriptdatei mysqlb.sh
    touch mysqlb.sh
    
    
    # Berechtigungen zum Ausführen und Bearbeiten setzen
    chmod 755 mysqlb.sh

    Falls ihr noch keinen Editor haben solltet,
    empfehle ich "Nano".

    Dieser kann über apt-get/yum/rpm install nano
    automatisiert installiert werden und ist damit einsatzbereit.

    Kommen wir also zur Bearbeitung der Scriptdatei

    Code
    # Öffnen der eben erstellten Datei
    nano mysqlb.sh

    Nun sollte sich Nano öffnen.
    Sein Äusseres erinnert ein wenig an die DOS-Variante
    eines Texteditors, er ist jedoch wie ein notepad
    relativ einfach zu bedienen.

    In die leere Textdatei die sich nun geöffnet hat,
    gehört folgendes rein:

    Damit wäre für's erste das Script zur erstellung eines MySQL Dumps
    fertig und bereit zur Benutzung.

    Anmerkung: Die Dateien die dort ausgegeben werden haben in diesem
    Fall zur Eindeutigen Unterscheidung die Konvention "TagMonatJahr-StundeMinute.sql"

    Transferieren auf einen FTP-Server

    Um Dateien über die Linux Shell auf einen FTP-Server
    zu übertragen und dies zu automatisieren,
    hängen wir an unser Script, welches wir vorher erstellt
    haben noch etwas an:

    Damit wäre dieser Vorgang bereits abgeschlossen
    und wir haben die Datei gleich als .sql auf unserem FTP
    (In diesem Falle im Verzeichnis /backups/mysqlbackups/pserverdb)

    Automatisierung:

    Für Automatisierungen unter Linux ist natürlich die CRONtab
    prädestiniert, da sie einfach zu bearbeiten ist.

    Aufgerufen werden kann die Crontab mit dem Befehl:

    Code
    # Auflisten der Aktuellen Crontab
    crontab -l
    
    
    # Auflisten aller Cronjobs eines bestimmten Users
    crontab -l -u root
    
    
    # Editieren der Crontab
    crontab -e

    Ein Eintrag in der Crontab könnte zB. so aussehen:

    Code
    # Jeden Tag um 22.00 h alles im Verzeichnis /public 
    # incl. Unterverzeichnisse löschen:
     0    22     *     *     *  root  rm -r /public/*

    Die Bedeutungen dieser Zahlen und Parameter von links nach rechts:
    Minute; Stunde; Tag; Monat; Tag einer Woche (1-7); User; Befehl

    Da wir nun also das Script beispielsweise alle 60 Minuten ausführen wollen,
    würde unser Cron eintrag wie folgt aussehen:

    Code
    # Zu jeder vollen Stunde MySQL Dump > FTP 
     0    *     *     *     *  root  /root/scripte/mysqlb.sh

    Fertig. Zur Kontrolle solltet ihr dann nochmal crontab -l
    aufrufen um sicherzugehen, dass euer Eintrag dort drin ist
    und schon habt ihr eine automatisierte Backup Lösung für
    eure MySQL Datenbanken unter Linux.

    Ich hoffe ich konnte euch helfen
    und wünsche noch ein schönes verbleibendes Restwochenende.

    Mfg,
    Tsakuya

    [CENTER][SIZE="1"]
    Netzwerkgrundlagen anhand Windows lernen zu
    wollen ist doch wie seine ersten sexuellen Erfahrungen mit einer
    Prostituierten zu sammlen: Die Leidenschaft fehlt, das wirklich
    wichtige lernt man dabei nicht, und die Chance sich einen
    Schadling einzufangen ist hoch.[/SIZE][/CENTER]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!