[Linux] Automatische MySQL Backup Lösung

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [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)

      Quellcode

      1. # Wechsel in das Root-Verzeichnis /root
      2. cd
      3. # Erstellen eines Script Verzeichnisses
      4. mkdir scripte
      5. # Erstellen eines Verzeichnisses wo die Backups landen
      6. mkdir mysqlb


      # Erstellen der Scriptdatei:

      Quellcode

      1. # Wechsel in das Script Verzeichnis
      2. cd scripte
      3. # Erstellen der Scriptdatei mysqlb.sh
      4. touch mysqlb.sh
      5. # Berechtigungen zum Ausführen und Bearbeiten setzen
      6. 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

      Quellcode

      1. # Öffnen der eben erstellten Datei
      2. 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:

      Quellcode

      1. # /root/scripte/mysqlb.sh
      2. # MySQL Backup Script by Tsakuya
      3. # Erstellungsdatum: 12.07.2009
      4. # Modifikationsdatum: 12.07.2009 14:06
      5. # Modifikation: Erstellung des Scripts
      6. # Erstellen des Backups in eine .sql Datei
      7. # Syntax: mysqldump --allow-keywords --opt -u $User -p $Passwort
      8. # $DatenbankName > $AusgabeDatei
      9. # Erstellen des MySQL Dumpfiles in /root/mysqlb
      10. mysqldump --allow-keywords --opt -u root -p hallowelt meinepserverdb > /root/mysqlb/`date +%d%m%y-%H%M`.sql
      Alles anzeigen


      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:

      Quellcode

      1. # Modifikationsdatum: 14:40
      2. # Modifikation: FTP-Übertragung einrichten
      3. # Starten des FTP Programms
      4. ftp -n <<EOF
      5. # Öffnen eines Servers
      6. # und übertragen der Userdaten
      7. open mein.ftp.server
      8. user mein_user
      9. password mein_passwort
      10. # Wechseln in ein FTP Verzeichnis eurer Wahl
      11. cd /backups/mysqlbackups/pserverdb
      12. # Hochladen der Datei
      13. put /root/mysqlb/`date +%d%m%y-%H%M`.sql
      14. # Beenden der FTP-Verbindung
      15. quit
      16. EOF
      Alles anzeigen


      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:

      Quellcode

      1. # Auflisten der Aktuellen Crontab
      2. crontab -l
      3. # Auflisten aller Cronjobs eines bestimmten Users
      4. crontab -l -u root
      5. # Editieren der Crontab
      6. crontab -e


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

      Quellcode

      1. # Jeden Tag um 22.00 h alles im Verzeichnis /public
      2. # incl. Unterverzeichnisse löschen:
      3. 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:

      Quellcode

      1. # Zu jeder vollen Stunde MySQL Dump > FTP
      2. 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
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )