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.shFü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
doneSpeichere 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.shAutomatische Ausführung mit Cron
Um das Script täglich automatisch auszuführen, fügen wir es einem Cronjob hinzu. Öffne die Crontab:
crontab -eFüge die folgende Zeile hinzu, um das Script jeden Tag um Mitternacht auszuführen:
0 0 * * * /pfad/zu/deinem/script/backup.shSpeichere 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.shFü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
doneMit 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.