Grundlagen
Bevor wir uns mit dem Skript befassen, wollen wir zunächst die grundlegenden Komponenten skizzieren:
Datenbank-Anmeldedaten:
DB_USER: Dein MySQL/MariaDB-Benutzername.
DB_PASSWORD: Dein MySQL/MariaDB-Passwort.
DB_NAME: Der Name der Datenbank, die du sichern möchtst.
Sicherungsverzeichnis
BACKUP_DIR: Das Verzeichnis, in dem deine Sicherungen gespeichert werden.
Zeitstempel
TIMESTAMP: Ein Zeitstempel, der an den Namen der Sicherungsdatei angehängt wird, um die Eindeutigkeit zu gewährleisten.
#!/bin/bash
# Zugangsdaten zur Datenbank
DB_USER="Dein_Benutzername"
DB_PASSWORD="Dein_Passwort"
DB_NAME="Der_Name_deiner_Datenbank"
# Verzeichnis für die Sicherungskopien der Datanbak
BACKUP_DIR="/var/backup"
# Meine Datenschutzeinstellungen
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
# Ein Sicherungsverzeichnis erstellen, falls es noch nicht vorhanden ist.
mkdir -p $BACKUP_DIR
# Datenbank sichern
mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql
# Sicherungskopie Komprimieren
gzip $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql
# Optional kannst du Sicherungen entfernen, die älter als ein bestimmter Zeitraum sind.
# find $BACKUP_DIR -type f -name "*.gz" -mtime +7 -exec rm {} \;
echo "Sicherung abgeschlossen: $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql.gz"
Erläuterung zum Script
Einrichten der Datenbank-Anmeldedaten und des Sicherungsverzeichnisses:
Ersetze „Dein_Benutzername“, „Dein_Passwort“ und „Der_Name_deiner_Datenbank“ durch deine tatsächlichen MySQL-Anmeldedaten.
Lege mit dem Wert für BACKUP_DIR dein bevorzugtes Sicherungsverzeichnis fest.
Erstellen eines Zeitstempels
Die Variable $TIMESTAMP wird mit dem Befehl date generiert, um eindeutige Sicherungsdateinamen zu gewährleisten.
Erstellen des Sicherungsverzeichnisses
Das Skript überprüft, ob das Sicherungsverzeichnis vorhanden ist. Ist dies nicht der Fall, wird es erstellt.
Sichern der MySQL-Datenbank
Der Befehl mysqldump exportiert die angegebene MySQL-Datenbank in eine SQL-Datei.
Komprimierung
Die Sicherungsdatei wird anschließend mit gzip komprimiert, um Speicherplatz zu sparen.
Optional: Ältere Sicherungen entfernen
Entferne die Auskommentierung des Befehls find, wenn Du Sicherungen entfernen möchtest, die älter als ein bestimmter Zeitraum sind.
Abschlussmeldung
Das Skript beendet sich mit einer Abschlussmeldung, die den Pfad der Sicherungsdatei enthält.
Automatisierung und Zeitplanung
Um dieses Skript zu automatisieren, kannst du Tools wie Cron auf Unix-ähnlichen Systemen verwenden. Um beispielsweise eine tägliche Sicherung zu planen, füge die folgende Zeile mit dem Befehl
crontab -e
zu deinem Crontab hinzu:
0 0 * * * /pfad/zu/deinem/script.sh
Diese Zeile plant die Ausführung des Skripts für jeden Tag um Mitternacht.
Kürzer geht es mit Drsush
Druipal hauseigenes Kommandozeilenwerkzug bringt natürlich auch einen Befehl mit, um diese Aufgabe zu erledigen. Wer sich nicht extra ein Script schreben will, sichert seine Datenbank einfach mit Drush:
drush sql-dump --gzip > ${PWD##*/}-$(date +%Y-%m-%d\-%H-%M).sql
Erstelle Backups weider einspielen
Natürlich bringt die schönste Automatisierung nichts, wenn du im Fehlerfall nicht in der Lage bist, dein Dataenbunkbackup wieder einzuspielen.
Unser Script oder der oben gezeigte Drush-Befehl erstellen Dateien, deren namen ungefägr so aussehen:
db-2025-05-18-13-29.sql.gz
Um diese Datei nun im Fehlerfall wieder in deine Datenbak zu bekommen musst du folgenden Befehl verwenden:
zcat db-2025-05-18-13-29.sql.gz | mysql -u deinbenutzername -p namederdatenbank
Fazit
Mit diesem Bash-Skript hast du eine robuste Lösung für die Automatisierung von MySQL-Datenbank-Backups eingerichtet. Die regelmäßige Sicherung deiner Datenbank ist ein wichtiger Aspekt der Datenverwaltung, damit Du bei unvorhergesehenen Ereignissen schnell wieder arbeiten kannst. Implementiere dieses Skript, passe es an deine Bedürfnisse an und genieße die Sicherheit, die automatisierte Datenbank-Backups bieten.