DB sichern via cron und Datum

ragey

Registered User
Hallo,
ich möchte gerne eine Tägliche DB Sicherung durchführen.
Dazu verwende ich folgende Zeile und lege einen Cronjob an:
Code:
mysqldump -uNAME -pPASSWORT DB_NAME > /tmp/backup/db_backup.sql
Wird bei der Zeile die korrekte Struktur beibehalten?
Am nächsten Tag wird der Dump des Vortages überschrieben, oder?
Kann ich das irgendwie ändern, das die Dateinamen als Datum gesichert wird?
13082006.sql

Mfg Ragey
 
Hi!

Ich hab das Skipt vom Huschi genommen und ein wenig "überarbeitet" weil es nicht mit dem Datum so lief:

Code:
#!/bin/sh

dbpassword="PASSWORT"

DATUM=$(date +"%Y-%m-%d")
mysqlcheck --all-databases --auto-repair --extended --optimize \
           -uadmin -p$dbpassword >/var/log/mysqlcheck-$DATUM.log
	   mysqldump --all-databases -uadmin -p$dbpassword --opt \
	              | gzip -c > /root/bin/backup/databasebackup-$DATUM.sql.gz

Einfach ne mysqlbackup.sh machen und diese mit den Rechten 700 unter /root/bin ablegen. Dann noch ein Verzeichnis backup unter /root/bin anlegen und das war es ;)

Dieses Skript backupped und optimiert die komplette Datenbank!
 
Und wie steht es um das DB Passwort?
Die DB haben nicht immer das gleiche Passwort wird Sichern aber alle auf einmal mit dem Script. Kommt dann das Passwort vom Plesk "Admin" rein?

Und wie gehe ich vor wenn mittels dem Script das Backup direkt auf einen Backupserver übertragen werden soll, es also anstatt /root/bin/backup/databasebackup-$DATUM.sql.gz auf einem Server per FTP übertragen werden soll?
 
Tägliches Mysql Backup:

Erstmal legen wir die Verzeichnis /var/backup und /home/www/web1/html/Backup/logs an. Man kann auch andere verwenden, dann muss man jedoch das script anpassen.

passwort muss durch das mysql-root passwort ersetzten werden. Das script kann man dann z.B. als /usr/local/bin/mysqlbackup speichern. Man sollte es auf jedenfall chmod 700 setzten, damit niemand das root passwort lesen kann.

Hier das Script:

Code:
#!/bin/sh

date=`date -I`

mysqlcheck --all-databases --auto-repair --extended --optimize -uroot -ppasswort
>/home/www/web1/html/Backup/logs/mysqlcheck-$date.log
mysqldump --all-databases -uroot -ppasswort --opt | bzip2 -c > /home/www/web1/html/Backup/databasebackup-$date.sql.bz2

rm /home/www/web1/html/Backup/databasebackup-current.sql.bz2
rm /home/www/web1/html/Backup/logs/mysqlcheck-current.log

ln -s /home/www/web1/html/Backup/databasebackup-$date.sql.bz2 /home/www/web1/html/Backup/databasebackup-current.sql.bz2
ln -s /home/www/web1/html/Backup/logs/mysqlcheck-$date.log /home/www/web1/html/Backup/logs/mysqlcheck-current.log



dazu fehlt noch der cronjob. Hier wird er jeden Tag um 3:00 ausgeführt: 

0 3 * * * /usr/local/bin/mysqlbackup



Jetzt kann man noch /var/backup per ftp oder www (.htaccess?) erreichbar machen. Dann richtet man zu Hause oder auf einem anderen Server einen cronjob ein, der jeden Tag databasebackup-current.sql.bz2 lädt. 
Unter /home/www/web1/html/Backup/logs kann man die logs von mysqlcheck einsehen. 

Fertig ist das automatische tägliche Backup. Ohne Zusatzkosten, es fällt nur Traffic an. 

Wenn man das Backup rückspielen möchte kann man folgenden Befehl benutzen: 

bzcat databasebackup-current.sql.bz2 | mysql -uroot -ppasswort
 
Back
Top