Update Readme.md
This commit is contained in:
151
README.md
151
README.md
@@ -1,23 +1,152 @@
|
|||||||
# MySQL Backup Skript
|
<p align="center">
|
||||||
|
<a href="https://techniverse.net">
|
||||||
|
<img src="https://assets.techniverse.net/f1/git/graphics/repo-techniverse-logo.png" alt="Techniverse Community" height="70" />
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
Dieses Bash-Skript ermöglicht das automatische Erstellen und Verwalten von MySQL-Datenbank-Backups.
|
<h1 align="center">MySQL Backup Bash Script</h1>
|
||||||
|
|
||||||
## Verwendung
|
<h4 align="center">
|
||||||
|
Automatisches Erstellen und Verwalten von MySQL-Datenbank-Backups via Bash-Skript
|
||||||
|
</h4>
|
||||||
|
|
||||||
1. Passe die MySQL-Serverinformationen im Skript an, einschließlich Hostname/IP-Adresse, Benutzername, Passwort und Datenbankname.
|
<h6 align="center">
|
||||||
|
<a href="https://www.cleveradmin.de">🏰 Website</a>
|
||||||
|
·
|
||||||
|
<a href="https://techniverse.net">📰 Community</a>
|
||||||
|
·
|
||||||
|
<a href="https://social.techniverse.net/@donnerwolke">🐘 Mastodon</a>
|
||||||
|
·
|
||||||
|
<a href="https://matrix.to/#/#support:techniverse.net">💬 Support</a>
|
||||||
|
</h6>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
2. Konfiguriere das Backup-Verzeichnis und die maximale Anzahl von Backups im Skript.
|
## 📋 Übersicht
|
||||||
|
|
||||||
3. Führe das Skript aus, um ein Backup der angegebenen Datenbank zu erstellen.
|
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.
|
||||||
|
|
||||||
## Funktionen
|
## ✨ Funktionen
|
||||||
|
|
||||||
- Erstellt ein MySQL-Dump der angegebenen Datenbank und speichert es in einer Backup-Datei.
|
- 🗃️ 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
|
||||||
|
|
||||||
- Überprüft den Erfolg des Backup-Vorgangs und gibt entsprechende Meldungen aus.
|
## 🚀 Schnellstart
|
||||||
|
|
||||||
- Löscht ältere Backups, wenn die maximale Anzahl überschritten wird, um den Speicherplatz zu begrenzen.
|
### 1. Skript herunterladen
|
||||||
|
|
||||||
## Lizenz
|
Lade die neueste Version des Skripts herunter:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod +x mysql-backup.v1.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Backup ausführen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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](https://dev.mysql.com/doc/refman/8.0/en/option-files.html) (`.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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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](LICENSE).
|
Dieses Skript steht unter der [MIT-Lizenz](LICENSE).
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<sub>
|
||||||
|
© Patrick Asmus · Techniverse Network · <a href="./LICENSE">Lizenz</a>
|
||||||
|
</sub>
|
||||||
|
</p>
|
||||||
Reference in New Issue
Block a user