So erstellst du automatisch regelmäßige Datenbank-Backups

10 Januar 2025

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.

Tags