Automatisches Backup von MySQL-Datenbanken

Linux Automatisches Backup von MySQL-Datenbanken

Wer kennt das Problem nicht? Man hat eine gut gehende Website, die man über ein CMS pflegt, man hat ein Forum installiert, in dem sich bereits hunderte von Userbeiträgen befinden und all diese Anwendungen speichern ihre Daten in MySQL-Datenbanken. Man nimmt sich vor, diese Datenbanken regelmäßig zu sichern, um für dem Fall der Fälle vorzubeugen. Doch nach ein paar Tagen lässt diese Regelmäßigkeit bereits stark zu wünschen übrig. Und urplötzlich steht man nach einem Festplattencrash oder einem falschen Befehl ohne die Artikel aus dem CMS und die ohne die Forumsbeiträge vor einem inhaltlichen Neuanfang.

Um das oben geschilderte Szenario zu verhindern, bietet es sich an, das Backup der Datenbanken automatisiert durch ein Skript ablaufen zu lassen. Ein sehr gutes Skript für diesen Zweck ist das [LINK:START:356]MySQL Backup Script[LINK:END], welches derzeit in der Version 2.0 vorliegt. Es handelt sich bei dem Script um freie Software unter der GNU GPL.

Mit Hilfe des "MySQL Backup Script" können MySQL-Datenbanken täglich automatisiert gesichert werden. Daneben werden wöchentliche und monatliche Sicherungen durchgeführt, so dass man jederzeit auf einen aktuellen Stand und auf ältere Versionen der Datenbanken zurückgreifen kann.

 

Die Backup-Rotation erfolgt dabei nach folgenden Regeln:

  • tägliche Backups werden wöchentlich rotiert
  • wöchentliche Backups werden Samstags durchgeführt (konfigurierbar)und monatlich rotiert
  • monatliche Backups werden am 1. eines jeden Monats durchgeführt und werden NICHT ROTIERT

 

Im oberen Teil des Scriptes sind diverse Konfigurationsmöglichkeiten vorhanden, von denen hier lediglich die wesentlichen beschrieben werden.

 

# Username to access the MySQL server e.g. dbuser
USERNAME=dbuser

# Username to access the MySQL server e.g. password
PASSWORD=password

# Host name (or IP address) of MySQL server e.g localhost
DBHOST=localhost

# List of DBNAMES for Daily/Weekly Backup e.g. "DB1 DB2 DB3"
DBNAMES="DB1 DB2 DB3"

# Backup directory location e.g /backups
BACKUPDIR="/backups"

# Mail backup log? (yes or no)
MAILLOG=no

# Email Address to send log to? (user@domain.com)
MAILADDR="user@domain.com"

 

So sind der Benutzername und das Password für die MySQL-Datenbank und der Hostname (DBHOST)anzugeben. Der Hostname ist "localhost", wenn das Backup Script und die MySQL-Datenbank auf dem gleichen Rechner laufen, andernfalls ist die IP-Adresse oder der Hostname des entfernten Rechners anzugeben. Bei DBNAMES können entweder explizit die zu sichernden Datenbanken angegeben werden oder es kann "all" eingetragen werden, um alle Datenbanken zu sichern. Soll nach der erfolgreichen Datensicherung eine Logdatei per E-Mail an einen Serverbetreuer versendet werden, so ist MAILLOG=yes zu setzen und bei MAILADDR die entsprechende E-Mailadresse des Empfängers anzugeben. Durch die Angabe bei BACKUPDIR kann festgelegt werden, an welcher Stelle im Dateisystem das Backup Script die Sicherungsdateien ablegen soll. Weitere Detaileinstellungen sind unter den "Advanced Options" möglich.

Nach erfolgter Konfiguration muss das Script mit dem Befehl "chmod 700 automysqlbackup.sh" noch ausführbar gemacht werden. Es empfiehlt sich dann, das Script mit Hilfe eines Cronjobs (siehe Artikel "[DOC:START:45]Aufgaben automatisieren mit CRON[DOC:END]) täglich automatisiert ablaufen zu lassen, um an die Datensicherung keinen Gedanken mehr verschwenden zu müssen.

Um bei einem Totalausfall des Rechners noch auf die Backup-Dateien zurückgreifen zu können, ist es möglich, ein kurzes Script zu schreiben, welches die Datensicherungen per SCP (siehe Artikel "[DOC:START:233]Dateien mit SCP ohne Passworteingabe kopieren[DOC:END]") auf einen Backup-Server kopiert.

Sollte der Ernstfall tatsächlich einmal eintreten, so ist in der englischsprachigen Dokumentation des Scripts ein Absatz "RESTORING" vorhanden, der die Wiederherstellung der Datensicherungen ausführlich beschreibt.

Artikelbewertung: 
No votes yet
War dieser Artikel hilfreich?