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).
|
||||
|
||||
<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