PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL - backup Cronjob (Tägliche sicherung)


Specialist
18.06.2005, 11:16
Hi@All.
Dieser Cronjob macht eine Tägliche sicherung der mysql-datenbank.
Der Cron legt für alle Tage in der Woche 1-7 eine Datei an.
DIe Tabellenstruktur & Daten werden getrennt.
##!/usr/bin/ksh
# Erstellt ein Backup der mySQL Datenbanken
# die dann später mal wieder importiert werden können
# (Dieses script wird automatisch täglich durch crontab ausgeführt!
#

# Aktuelles Datum für Dateinamen setzen
# (Wochentag --> 1=Mo, 7=So, d.h. 7 Backups pro Woche, danach wird wieder überschrieben)
date=`date +%u`

#
# Backup Database: (only tables)
mysqldump -d --add-drop-table --user=MYSQLUSER --password=KENNWORT DB >/home/www/web/backup/tables_$date.sql

#
# Backup Database: (only data)
mysqldump -t -a -C -c --user=MYSQLUSER --password=KENNWORT DB >/home/www/web/backup/data_$date.sql


Die werte MYSQLUSER , KENNWORT, DB sind zu ersetzen.:rolleyes:

Stan Melony
26.09.2005, 15:29
So etwas suche ich. Wenn ich das korrekt verstehe, ist das eine Skript zur automatischen DB Sicherung.

Kann mir jemand erklären wie ich das jetzt genau einbaue. Ich denke mal als "Zeitgesteuerte Aufgabe" anlegen, den Quelltext z.B als "cronDBsave.php" sichern und dann sollte das laufen :confused:

Bin für jede Hilfe dankbar.

StGaensler
26.09.2005, 16:47
Ja, fast. Das ist kein php-Script, sondern ein KShell(?)-Script, du brauchst also Shell-Zugang zu deinem Server, um das ausführen zu können.

Stan Melony
29.09.2005, 17:04
Gibt es denn eine Version für PHP oder kann ich die Cron Jobs nur über die Shell ausführen?
Ich würde gerne unsere DB automatisch jeden zweiten Tag sichern und die alte Sicherung überschreiben.

Man ich check mal wieder nichts, mit den Cron Jobs kennt sich nur unser Admin aus, aber mit dem habe ich Stress :)

ugr|dual
07.10.2005, 22:57
die cronjobs legst du in der datei /etc/crontab an. lies dir aber erstmal durch was da wie eingetragen wird. evtl. steht oben in der datei auch ne anleitung.

hier hast du ein skript für die bash shell:


#!/bin/bash
#
# this script can be run as often as you want
#

unset mv
unset cp
unset rm

# anzahl sicherungen die aufgehoben werden sollen
KEEP="2"
BACKUPS=`find /www/backup -name "datenbank_sqldump-*.gz" | wc -l | sed 's/\ //g'`

while expr $BACKUPS \> $KEEP &>/dev/null
do
ls -tr1 /www/backup/datenbank_sqldump-*.gz | head -n 1 | xargs rm -f
BACKUPS=`expr $BACKUPS - 1`

# wenn mail erwuenscht ist das hier aktivieren:
# echo Altes Backup geloescht
done

DATE=`date -d yesterday +%Y%m%d%H%M%S`

rm -f /www/backup/.datenbank_sqldump-${DATE}.gz_INPROGRESS
nice -n 19 mysqldump -u user -pPASSWORT -a -e --add-drop-table datenbank | nice -n 19 gzip -c -9 > /www/backup/.datenbank_sqldump-${DATE}.gz_INPROGRESS
mv -f /www/backup/.datenbank_sqldump-${DATE}.gz_INPROGRESS /www/backup/datenbank_sqldump-${DATE}.gz

# falls sicherung spezielle rechte bekommen soll, hier setzen:
# chown -f user:group /www/backup/datenbank_sqldump-${DATE}.gz

exit 0


verzeichnis, datenbankname, user, passwort anpassen und in crontab eintragen z.b. so das es jeden tag um 04:00 uhr mit dem user root läuft:


0 4 * * * root bash /www/scripts/sites_backup.sh


das ganze kann man natürlich schön nach bedarf ausbauen...

hope it helps.

h75
08.10.2005, 22:48
Coool. Danke dafür. Das probiere ich doch gleich mal aus. :)