Mysqldump Bash Script: 7 Tage Backup aller Datenbanken

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert