Automatisches MySQL-Backup per Script

heute möchte ich dir ein nützliches Bash-Script vorstellen, das dich dabei unterstützt, automatische Backups deiner MySQL-Datenbanken zu erstellen. Das Script habe ich für meine persönlichen Bedürfnisse geschrieben. Jedoch möchte ich es gerne mit dir teilen.

Es bietet eine einfache Möglichkeit, regelmäßige Sicherungskopien eurer Datenbanken anzulegen, um im Falle eines Datenverlusts schnell wiederherstellen zu können.

#!/bin/bash
##########################################################################
# Letzte Anpassung: 24.05.2023
# Version 1.0
##########################################################################
# mysql-backup-1.0.sh
##########################################################################
# MySQL-Server Informationen
DB_HOST="mysql-host"    # Hostname oder IP-Adresse des MySQL-Servers
DB_USER="mysqlbackup"    # MySQL-Benutzername
DB_PASS="passwd"    # MySQL-Passwort
DB_NAME="db"    # Name der zu sichernden Datenbank
# Backup-Verzeichnis
BACKUP_DIR="/home/backup/mysql"
MAX_BACKUPS=5
# Erstelle das Backup-Verzeichnis, wenn es nicht vorhanden ist
mkdir -p "$BACKUP_DIR"
# Erstelle den Dateinamen für das aktuelle Backup
CURRENT_DATE=$(date +"%Y-%m-%d_%H-%M-%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$CURRENT_DATE.sql"
# Erstelle den MySQL-Dump
mysqldump --column-statistics=0 -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_FILE"
# Überprüfe, ob das Backup erfolgreich erstellt wurde
if [ $? -eq 0 ]; then
    echo "Das Backup wurde erfolgreich erstellt: $BACKUP_FILE"
else
    echo "Fehler beim Erstellen des Backups."
    exit 1
fi
# Lösche ältere Backups, wenn die Anzahl der Backups die Maximalanzahl überschreitet
BACKUP_COUNT=$(ls -1 "$BACKUP_DIR/$DB_NAME-"*.sql | wc -l)
if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then
    DELETE_COUNT=$((BACKUP_COUNT - MAX_BACKUPS))
    OLDEST_BACKUPS=$(ls -1t "$BACKUP_DIR/$DB_NAME-"*.sql | tail -n $DELETE_COUNT)
    echo "Lösche ältere Backups: $OLDEST_BACKUPS"
    rm $OLDEST_BACKUPS
fi

Um das Script nutzen zu können, müssen einige Anpassungen vorgenommen werden. Lass uns die einzelnen Schritte genauer betrachten:

MySQL-Server Informationen

Zunächst musst du die Informationen zu deinem MySQL-Server angeben. Dazu gehören der Hostname oder die IP-Adresse des Servers, der Benutzername und das Passwort für den Zugriff sowie der Name der zu sichernden Datenbank. Ersetze die Platzhalterwerte in den Variablen DB_HOST, DB_USER, DB_PASS und DB_NAME durch eigene Informationen.

Backup-Verzeichnis

Das Script legt die Backups in einem bestimmten Verzeichnis ab. Ihr könnt den Pfad zu diesem Verzeichnis in der Variablen BACKUP_DIR festlegen. Stellt sicher, dass das Verzeichnis existiert, indem ihr den Befehl mkdir -p "$BACKUP_DIR" ausführt.

Maximale Anzahl von Backups

Du kannst auch die maximale Anzahl von Backups festlegen, die aufbewahrt werden sollen. Die Variable MAX_BACKUPS definiert diese Anzahl. Wenn die Anzahl der Backups diese Grenze überschreitet, werden die ältesten Backups gelöscht, um Platz für neue zu machen.

Script ausführbar machen

chmod 700 mysql-backup-1.0.sh

Nachdem du diese Anpassungen vorgenommen hast, kannst du das Script verwenden, um ein Backup deiner MySQL-Datenbank zu erstellen. Hier ist eine kurze Zusammenfassung der Funktionalität des Scripts:

  1. Das Script erstellt das Backup-Verzeichnis, falls es nicht vorhanden ist.
  2. Es generiert einen eindeutigen Dateinamen für das aktuelle Backup, basierend auf Datum und Uhrzeit.
  3. Mithilfe des Befehls mysqldump wird ein Dump der angegebenen Datenbank erstellt und in die Backup-Datei geschrieben.
  4. Das Script überprüft, ob das Backup erfolgreich erstellt wurde, und gibt entsprechende Meldungen aus.
  5. Wenn die Anzahl der Backups die maximale Anzahl überschreitet, werden die ältesten Backups gelöscht, um Platz für neue zu schaffen.

Es ist empfehlenswert, das Script in regelmäßigen Abständen über einen Cron-Job oder eine ähnliche Aufgabenplanung zu starten, um automatische Backups gemäß deiner Anforderungen zu erstellen.
Der Cronjob dazu könnte folgendermaßen aussehen:

@daily /home/scripts/backup/mysql-backup-1.0.sh > /dev/null 2>&1

Das MySQL-Backup-Script bietet eine einfache und effektive Lösung für das regelmäßige Erstellen von MySQL-Backups. Es ist wichtig, regelmäßige Backups von Datenbanken durchzuführen, um sicherzustellen, dass im Notfall auf eine zuverlässige Sicherungskopie zurückgegriffen werden kann. Mit diesem Script kannst du diesen Prozess automatisieren und dich um andere wichtige Aufgaben kümmern.

Dieses Script stelle ich ausserdem auch auf meinem Git-Repository zu Verfügung: git.techniverse.net

📑 Ähnliche Beiträge
Vergrößern einer Partition in Ubuntu

Stell dir vor, deine Ubuntu-Installation braucht einfach mehr „Luft zum Atmen“. Angenommen, du hast eine 100GB-SSD, auf der 30GB für Read more

Asciinema 3: Installation der neuesten Version des Terminal Session Recorder

Asciinema hat sich als das Tool der Wahl für das Aufzeichnen und Teilen von Terminal-Sessions etabliert. In der kommenden Version Read more

Fritz!Box per Bash-Script neustarten

Heute möchte ich dir ein nützliches Bash-Script vorstellen, das mir persönlich sehr geholfen hat. Es handelt sich um ein "Fritz!Box Read more

Linux: Einfach E-Mails versenden mit msmtp

Oft ist es sinnvoll, wenn man sich von seinem Linux System Benachrichtigungsmails versenden lassen kann. Anwendungsbeispiele wären zum Beispiel der Read more

OwnCloud: Den Footer im Login-Screen bearbeiten

In diesem Beitrag möchte ich den Footer der OwnCloud anpassen. Das bearbeiten des Footers geht ziemlich einfach und schnell. Ich Read more

Vielen Dank fürs Teilen!