Wie wichtig die Sicherung einer MySQL-Datenbank ist, merkt man spätestens dann, wenn die Festplatte vom Server einen weg hat und die Daten verloren sind. Schon vorher sollte man sich darum kümmern, dass die Datenbank in regelmäßigen Abständen gesichert wird.
Ich möchte euch ein MySQL Backup Script der Datenbank vorstellen. Dieses Bash Script sichert alle MySQL-Datenbanken, komprimiert die Daten und sendet diese an einen FTP-Backup-Server voll automatisch. Ich übernehme keine Haftung für Schäden, die durch das Script entstehen. Es liegt also an euch dieses gegebenenfalls anzupassen.
Script zur Sicherung von MySQL-Datenbanken
{code}#!/bin/bash
echo „Alle MySQL-Datenbanken sichern:“
# Bereinigte Liste der Datenbanken erzeugen
# „MYSQLROOTPASSWORT“ ist das MySQL-Rootpasswort:
mysqlshow -uroot -pMYSQLROOTPASSWORT | awk ‚{print $2}‘ | grep -v Databases | sort >/tmp/dbaselist.txt
# Wohin sollen die ganzen Backups geschrieben werden?
cd /backup/DB
# Lösche alte Sicherungen
rm `date +%Y`* -R
mkdir -p `date +%Y%m%W`
cd `date +%Y%m%W`
for x in `cat /tmp/dbaselist.txt`; do
echo „Datenbank: $x sichern“;
mysqldump –opt -uroot -pMYSQLROOTPASSWORT $x >$x.sql;
done;
echo „Alte .gz-Dateien loeschen:“
rm *.gz
echo „Dateien zippen:“
gzip *
cd ..
echo „Alte Sicherung löschen:“
rm DB_server.tar.gz
echo „Alle Datenbanken zu einer Datei:“
tar cfvz /backup/DB/DB_server.tar.gz /backup/DB/`date +%Y%m%W`
echo „Verbindung zum Backup-Server herstellen:“
lftp -u USERNAME,PASSWORT SERVERADRESSE -e „cd DB && rm DB_server.tar.gz && put DB_server.tar.gz && quit“;
{/code}
Hinweise zum Backup-Script und Vorbereitungen
- Vorher müssen die Ordner /backup/DB auf dem eigenen Server und dem Backup-Server angelegt werden.
- Auf dem Backup-Server muss eine Datei „DB_server.tar.gz“ unter /backup/DB angelegt werden, da das Script sonst versucht diese nicht existierende Datei zu löschen und mit einer Fehlermeldung abbricht.
- lftp ist ein FTP-Client. Dieser muss vorher installiert werden (apt-get install lftp)
- Damit die Sicherungen regelmäßig durchgeführt werden, muss das MySQL Backup Script in eine Datei eingefügt werden und ein Cronjob eingerichtet werden, der dieses Bash Script regelmäßig aufruft. Die Rechte müssen für die Datei auf 777 gesetzt werden. (chmod 777 BACKUP-SCRIPT)
Vorschläge und Hinweise zum Backup Script der Datenbank nehme ich gerne an. Schreibt also ruhig Kommentare rein. Wie sichert ihr euren Server?
Stopp! Wetten, die Artikel interessieren dich auch?
Backup Strategien – inkrementell, differentiell und…
Testbericht: Wordpress-Blog beim Webhoster TecSpace…
Blog zu langsam? Umsteigen auf Root-, Virtual- oder…
Festplatte verkaufen – vorher Festplatte sicher…
Wordpress langsam: Tools und 5 Tipps zur Steigerung…
Android-Handy: Nützliche Apps zum Erstellen von Backups
4 Antworten zu "MySQL Backup Script der Datenbank (Bash Script)"
Magazin durchsuchen:
Neue Beiträge
- Ergonomischer Bürostuhl: Unser Review über den Flexispot BS14
- iMac 2024 mit M4: Evolution statt Revolution
- Mobile Gaming: Sicherheit in der Unterhaltung berücksichtigen
- Windows oder MacOS: Welches Betriebssystem eignet sich besser für die Aufgaben eines modernen Studierenden?
- ECM-Software und künstliche Intelligenz
Also es ist ein Bash-Script für einen Linux-Root oder?
@maTTes: Richtig, hatte ich jetzt nicht hingeschrieben – sorry.
Durchaus sinnvoll und vernünftig das Skript – allerdings denke ich eine Alternative für Windows würden auch viele User benötigen, denn mySQL ist auch in der Windowswelt sehr populär.
Wenn jemand daran Interesse hat veröffentliche ich gerne solch ein Skript
chmod 777 pauschal ist ein typischer admin fehler !!! deshalb funktionieren immer wieder einfachste hacks auf servern! solltest du z.B.ein multiuser system haben, dann kann jeder user das mysql passwort auslesen und na ja was dann passieren kann ist wohl klar. chmod 770 ist vollkommen ausreichend selbst 700 reicht wenn der owner des scripts der owner des cronjobs ist. dann gibt es immer noch su – user etc.
hängt natürlich letztlich alles davon ab, wie das verzeichnis in dem das script liegt, geschützt ist.