Shorty1968 hat geschrieben:Ja ich habe Root Rechte auf dem Server,das wäre nett wenn das machbar wäre danke.
Ich verwende drei Scripts, die ich hier mal vorstelle.
1. Dumpfile (dbdump.sh)
Das erste Script verwende ich für automatische Dumps. Das Script wird per Cronjob (bei mir alle 3 Stunden) aufgerufen. Dafür solltest du das Dumpdir (/root/dbdump/) erstellen und es mit entsprechenden Rechten (rwx) ausstatten. Es werden Files geschrieben, verpackt und nach drei Tagen automatisch gelöscht. Kannst aber selbst einstellen, wie lange die Dateien vorrätig bleiben sollen.
Ist kein Gzip auf dem Server verfügbar, kommentiere die Zeile "gzip $DBASEFILE" einfach aus.
Der folgenden Code, liegt dann im Rootverzeichnis und muss ebenfalls mit Rechten zum Lesen und Ausführen ausgestattet sein. Die Datei kannst du z.b. dbdump.sh nennen.
Code: Alles auswählen
#!/bin/sh
#Variablen definieren
DATUM=`date +%y%m%d%H`
#Hier das Dump-Verzeichnis angeben
DUMPDIR=/root/dbdump/
#Hier den DB-Benutzernamen (admin) angeben.
DBUSER=Benutzer
#Hier das DB-Passwort des DB-Benutzers angeben.
DBPASS=Passwort
#Hier alle Datenbanken (durch ein Leerzeichen getrennt) eintragen, von denen ein Dump erstellt werden soll.
DBLIST='Datenbankname1 Datenbankname2 Datenbankname3 Datenbankname4'
#Nichts aendern
for DB in $DBLIST
{
DBASEFILE=$DUMPDIR$DB$DATUM.sql
# Datenbank speichern
mysqldump -u $DBUSER -p$DBPASS $DB > $DBASEFILE
# Gespeicherte Datei ausfuehrbar machen
chmod u=rwx,g+rwx,o+rwx $DBASEFILE
# Gespeicherte Datei komprimieren
gzip $DBASEFILE
}
# Zuletzt die Dateien loeschen, die aelter als 3 Tage sind
find $DUMPDIR -mtime +3 -exec rm {} \;
# Script beenden
exit 0;
2. Datenbanken automatisch neu aufsetzen (dbreset.sh)
Für Datenbanken, die leicht fragmentieren können, setze ich folgendes Script ein, um Datenbanken zu dumpen und dann neu aufzusetzen. Die Dateien werden nach dem Reset wieder gelöscht. Ich lasse es einmal am Tag, durch einen Cronjob ausführen. Auch hier benötigt das Verzeichnis (/root/dbreset/) entsprechende Rechte zum Lesen, Schreiben und Ausführen. Ebenso muss das Script (dbreset.sh) selbst, welches wieder im Rootverzeichnis liegt, mit Rechten zum Lesen und Ausführen versehen sein.
Code: Alles auswählen
#!/bin/sh
# Variablen definieren
#Hier das Dump-Verzeichnis angeben
RESETDIR=/root/dbreset/
#Hier den DB-Benutzernamen (admin) angeben.
DBUSER=Benutzer
#Hier das DB-Passwort des DB-Benutzers angeben.
DBPASS=Passwort
#Hier alle Datenbanken (durch ein Leerzeichen getrennt) eintragen, welche neu aufgesetzt werden sollen.
DBLIST='Datenbankname1 Datenbankname2 Datenbankname3 Datenbankname4'
# Pfade suchen
MYSQL=$(which mysql)
AWK=$(which awk)
GREP=$(which grep)
for DB in $DBLIST
{
DBASEFILE=$RESETDIR$DB.sql
# Datenbank speichern
mysqldump -u $DBUSER -p$DBPASS $DB > $DBASEFILE
# Gespeicherte Datei ausfuehrbar machen
chmod u=rwx,g-rwx,o+rwx $DBASEFILE
# Alle Tabellen der Datenbank loeschen
TABLES=$($MYSQL -u $DBUSER -p$DBPASS $DB -e 'show tables' | $AWK '{ print $1}' | $GREP -v '^Tables' )
for t in $TABLES
do
$MYSQL -u $DBUSER -p$DBPASS $DB -e "drop table $t"
done
# Datenbank wiederherstellen
$MYSQL -u $DBUSER -p$DBPASS $DB < $DBASEFILE
}
# Gespeicherte Dateien loeschen
find $RESETDIR -exec rm {} \;
exit 0;
3. Email für die Sicherungen (email.sh)
Klein aber wichtig! Einmal in der Woche, lasse ich mich daran erinnern, mir einen kompletten Dump auf meinen Heimrechner zu kopieren. Falls mein Server doch mal gehackt wird, kann ich die Datenbanken zumindest annähernd wieder herstellen. Auch hier benötigt das Script (email.sh) Rechte zum Lesen und Ausführen.
Code: Alles auswählen
#!/bin/sh
#Hier deine Mailadresse eintragen
MAILADR=Mailadresse
mail -s "DBDump" $MAILADR
exit 0;
Wie gesagt, brauchst du im Prinzip zwei Verzeichnisse(/root/dbdump/ und /root/dbreset/) im Root-Verzeichnis mit entsprechenden Rechten anlegen , diese drei Scripts (dbdump.sh, dbreset.sh, email.sh inkl.Rechte) im Root-Verzeichnis speichern. Vorher natürlich noch die Variablen 'DB-Benutzer/Passwort/Datenbanken' anpassen und dazu jeweils einen Cronjob anlegen. Dann läuft alles automatisch. Die Dumps und die Resets dauern so keine 3 Sekunden. Und die Datenbanken bleiben durch das dbreset unfragmentiert und schnell.
