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:
- Das Script erstellt das Backup-Verzeichnis, falls es nicht vorhanden ist.
- Es generiert einen eindeutigen Dateinamen für das aktuelle Backup, basierend auf Datum und Uhrzeit.
- Mithilfe des Befehls
mysqldump
wird ein Dump der angegebenen Datenbank erstellt und in die Backup-Datei geschrieben. - Das Script überprüft, ob das Backup erfolgreich erstellt wurde, und gibt entsprechende Meldungen aus.
- 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