MySQL Backup Bash Script
Automatisches Erstellen und Verwalten von MySQL-Datenbank-Backups via Bash-Skript
🏰 Website · 📰 Community · 🐘 Mastodon · 💬 Support
📋 Übersicht
Dieses Bash-Skript automatisiert das Erstellen und Verwalten von MySQL-Datenbank-Backups. Es erstellt einen Dump der konfigurierten Datenbank, speichert ihn mit einem Zeitstempel im Dateisystem und räumt automatisch alte Backups auf, um Speicherplatz zu sparen.
📖 Weiterlesen
- Automatisches MySQL-Backup per Script – Detaillierter Blog-Artikel auf CleverAdmin
✨ Funktionen
- 🗃️ Erstellt einen vollständigen MySQL-Dump der konfigurierten Datenbank
- ✅ Überprüft den Erfolg des Backup-Vorgangs und gibt statusmeldungen aus
- 🧹 Automatisches Bereinigen älterer Backups basierend auf einem konfigurierbaren Limit
- 📅 Zeitgestützte Dateinamen für einfache Identifizierung und Sortierung
- 🔧 Einfache Konfiguration direkt im Skript
🚀 Schnellstart
1. Skript herunterladen
Lade die neueste Version des Skripts herunter:
curl -O https://git.techniverse.net/scriptos/mysql-backup-bash-script/src/branch/main/mysql-backup.v1.sh
2. Konfiguration anpassen
Öffne das Skript und passe die folgenden Werte an:
# MySQL-Server Informationen
DB_HOST="dein-mysql-host" # Hostname oder IP-Adresse
DB_USER="dein-benutzername" # MySQL-Benutzername
DB_PASS="dein-passwort" # MySQL-Passwort
DB_NAME="deine-datenbank" # Name der Datenbank
# Backup-Einstellungen
BACKUP_DIR="/pfad/zum/backup" # Zielverzeichnis für Backups
MAX_BACKUPS=5 # Maximale Anzahl aufbewahrter Backups
3. Skript ausführbar machen
chmod +x mysql-backup.v1.sh
4. Backup ausführen
# Manuell
./mysql-backup.v1.sh
# Oder mit bash
bash ./mysql-backup.v1.sh
⚙️ Konfiguration
| Variable | Beschreibung | Standardwert |
|---|---|---|
DB_HOST |
MySQL-Server Hostname/IP | mysql-host |
DB_USER |
MySQL-Benutzername | mysqlbackup |
DB_PASS |
MySQL-Passwort | passwd |
DB_NAME |
Datenbankname | db |
BACKUP_DIR |
Backup-Zielverzeichnis | /home/backup/mysql |
MAX_BACKUPS |
Maximale Backup-Anzahl | 5 |
🕐 Automatisierung mit Cron
Füge das Skript zur Crontabelle hinzu, um regelmäßige Backups zu erstellen:
# Täglich um 2:00 Uhr
0 2 * * * /bin/bash /pfad/zum/mysql-backup.v1.sh >> /var/log/mysql-backup.log 2>&1
# Wöchentlich jeden Sonntag um 3:00 Uhr
0 3 * * 0 /bin/bash /pfad/zum/mysql-backup.v1.sh >> /var/log/mysql-backup.log 2>&1
📁 Backup-Dateien
Backups werden im konfigurierten BACKUP_DIR mit folgendem Namensschema gespeichert:
<DB_NAME>-<YYYY-MM-DD_HH-MM-SS>.sql
Beispiel: meine-datenbank-2023-07-15_02-00-00.sql
🔒 Sicherheitshinweise
- 🔑 Speichere Zugangsdaten niemals unverschlüsselt im Skript – verwende stattdessen eine MySQL-Option-Datei (
.my.cnf) - 📂 Beschränke den Zugriff auf das Backup-Verzeichnis (
chmod 700) - 🛡️ Verwende einen dedizierten Backup-Benutzer mit minimalen Berechtigungen
- 💾 Speichere Backups niemals nur lokal – nutze zusätzliche externe Speicherorte
🧪 Testen
Du kannst das Skript mit einem Test-MySQL-Container ausprobieren:
# MySQL Test-Container starten
docker run --name mysql-test -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=testdb -p 3306:3306 -d mysql:latest
# Skript anpassen und testen
# DB_HOST="localhost"
# DB_USER="root"
# DB_PASS="root"
# DB_NAME="testdb"
# Backup ausführen
./mysql-backup.v1.sh
# Container aufräumen
docker rm -f mysql-test
📜 Lizenz
Dieses Skript steht unter der MIT-Lizenz.
© Patrick Asmus · Techniverse Network · Lizenz
Languages
Shell
100%