In diesem Artikel zeige ich dir, wie du ein mysqldump Bash Script erstellst und einrichtest, das automatisch ein 7 Tage Backup aller deiner MySQL-Datenbanken erstellt. So bist du auf der sicheren Seite, falls mal etwas schiefgeht. Lass uns direkt loslegen.
Voraussetzungen
Bevor wir beginnen, solltest du sicherstellen, dass du die folgenden Voraussetzungen erfüllst:
- Ein Server oder Computer mit installiertem Linux-Betriebssystem
- Zugang zu einem MySQL-Server
- Grundlegende Kenntnisse in Bash-Scripting
- Einen Benutzer mit ausreichenden Rechten auf dem MySQL-Server
Bash Script erstellen
Öffne zunächst ein Terminal und erstelle eine neue Datei für das Script. Nennen wir es backup.sh
.
touch backup.sh
Öffne nun die Datei mit einem Texteditor deiner Wahl, zum Beispiel mit nano
:
nano backup.sh
Füge den folgenden Code in die Datei ein:
#!/bin/bash
# MySQL Benutzer und Passwort
MYSQL_USER="dein_benutzername"
MYSQL_PASSWORD="dein_passwort"
# Backup Verzeichnis
BACKUP_DIR="/pfad/zu/deinem/backup-verzeichnis"
TODAY=$(date +"%Y-%m-%d")
# Erstelle das Backup Verzeichnis falls es nicht existiert
mkdir -p ${BACKUP_DIR}/${TODAY}
# Alle Datenbanken auflisten
MYSQL=$(which mysql)
MYSQLDUMP=$(which mysqldump)
DATABASES=$(${MYSQL} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e "SHOW DATABASES;" | tr -d "| " | grep -v Database)
# Jede Datenbank sichern
for DB in $DATABASES; do
${MYSQLDUMP} -u${MYSQL_USER} -p${MYSQL_PASSWORD} --databases $DB > ${BACKUP_DIR}/${TODAY}/${DB}.sql
done
Speichere die Datei mit Strg+O
und schließe den Editor mit Strg+X
.
Backup Script ausführbar machen
Mache das Script ausführbar:
chmod +x backup.sh
Automatische Ausführung mit Cron
Um das Script täglich automatisch auszuführen, fügen wir es einem Cronjob hinzu. Öffne die Crontab:
crontab -e
Füge die folgende Zeile hinzu, um das Script jeden Tag um Mitternacht auszuführen:
0 0 * * * /pfad/zu/deinem/script/backup.sh
Speichere und schließe die Crontab.
Alte Backups löschen
Um sicherzustellen, dass nur Backups der letzten 7 Tage behalten werden, fügen wir eine Zeile in unser Script ein, die alte Backups löscht. Öffne backup.sh
erneut:
nano backup.sh
Füge nach dem TODAY=
Eintrag die folgende Zeile ein:
find ${BACKUP_DIR} -type d -mtime +7 -exec rm -rf {} \;
Das vollständige Script sieht nun so aus:
#!/bin/bash
# MySQL Benutzer und Passwort
MYSQL_USER="dein_benutzername"
MYSQL_PASSWORD="dein_passwort"
# Backup Verzeichnis
BACKUP_DIR="/pfad/zu/deinem/backup-verzeichnis"
TODAY=$(date +"%Y-%m-%d")
# Lösche Backups älter als 7 Tage
find ${BACKUP_DIR} -type d -mtime +7 -exec rm -rf {} \;
# Erstelle das Backup Verzeichnis falls es nicht existiert
mkdir -p ${BACKUP_DIR}/${TODAY}
# Alle Datenbanken auflisten
MYSQL=$(which mysql)
MYSQLDUMP=$(which mysqldump)
DATABASES=$(${MYSQL} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e "SHOW DATABASES;" | tr -d "| " | grep -v Database)
# Jede Datenbank sichern
for DB in $DATABASES; do
${MYSQLDUMP} -u${MYSQL_USER} -p${MYSQL_PASSWORD} --databases $DB > ${BACKUP_DIR}/${TODAY}/${DB}.sql
done
Mit diesem mysqldump Bash Script kannst du nun einfach und effizient regelmäßige Backups von all deinen MySQL-Datenbanken erstellen und alte Backups automatisch löschen.