Page 1 of 1
DB sichern via cron und Datum
Posted: 2006-08-13 16:35
by ragey
Hallo,
ich möchte gerne eine Tägliche DB Sicherung durchführen.
Dazu verwende ich folgende Zeile und lege einen Cronjob an:
Code:
Code: Select all
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
Re: DB sichern via cron und Datum
Posted: 2006-08-13 17:13
by aubergine
Code: Select all
DATUM=`date +%d-%m-%y`
mysqldump --databases DBNAME -uroot -pPW -C -x -F --opt > /root/$DATUM.sql
Am nächsten Tag wird der Dump des Vortages überschrieben, oder?
JA
Kann ich das irgendwie ändern, das die Dateinamen als Datum gesichert wird?
Wie oben geschrieben, packen wäre sicherlich noch sinnvoll
Re: DB sichern via cron und Datum
Posted: 2006-08-13 17:22
by ragey
Vielen Dank schonmal.
Das ganze packe ich am besten in eine Datei.
Wie steht es dann um die Struktur?
Wenn ich alle Datenbanken auf einmal sichern möchte muss ich doch
--all-databeses eingeben oder?
Welchen user muss ich dann verwenden? root?
Und elches Passwort? Vom root?
Weil die Datenbanken haben ja nicht immer die gleichen Passwörter.
Re: DB sichern via cron und Datum
Posted: 2006-08-13 17:32
by aubergine
ragey wrote:
Das ganze packe ich am besten in eine Datei.
Wie steht es dann um die Struktur?
Wenn du --all-databases verwendest werden alle Datenbanken in eine .sql Datei geschrieben, von welcher aus du dann alle Datenbank mit der Struktur einspielen kannst.
ragey wrote:
Wenn ich alle Datenbanken auf einmal sichern möchte muss ich doch
--all-databeses eingeben oder?
Ja oder mit --databases die einzelnen DB's anwählen.
ragey wrote:
Welchen user muss ich dann verwenden? root?
Und elches Passwort? Vom root?
Weil die Datenbanken haben ja nicht immer die gleichen Passwörter.
Wenn du root verwendest wird das ohne Probleme funktionieren.
Mit anderen Usern kommt es auf die Rechtvergabe an
Re: DB sichern via cron und Datum
Posted: 2006-08-13 19:21
by daemotron
Ich würde für's Backup einen separaten User anlegen, der zwar alle Datenbanken lesen darf, aber keine Schreibrechte besitzt und erst recht keine GRANT-Berechtigung... Restore läuft dann natürlich nur über root, aber das muss man eh "manuell" machen. Ich hätte einfach Bauchschmerzen, das Passwort von root irgendwo im Klartext zu speichern...
Alternativ kannst Du auch ohne mysqldump arbeiten (und benötigst dafür auch keinen Datenbank-User), indem Du einmal täglich das data-Verzeichnis sicherst und dann je nach Transaktionsfrequenz (schreibend) Deiner Anwendungen das binlog in kürzeren Intervallen (siehe hierzu
http://www.rootforum.org/forum/viewtopic.php?t=39481)
Re: DB sichern via cron und Datum
Posted: 2006-08-14 20:19
by shapeshifta
mal ne doofe Frage: wie lege ich so einen neuen User an?
Vielleicht werd ich jetzt geflamed, aber mein Plesk will mich nicht lassen... :( Oder ich schau an der falschen Stelle...
Re: DB sichern via cron und Datum
Posted: 2006-08-14 21:23
by flo
Zur Not hilft das
Handbuch
flo.
Yet another mysql backup script
Posted: 2006-08-15 22:28
by jensj
Ich stell einfach mal meins hier rein, es sichert jede Tabelle einzeln in einem tgz Archiv mit FTP Upload Möglichkeit:
Code: Select all
#!/bin/bash
#
# Allgemeines
#
FILENAME="mysqldump_all_$(date +%Y%m%d)_$(date +%H%M)_$HOSTNAME.tar.gz"
DIRNAME="mysqldump_all_$(date +%Y%m%d)"
BACKUP="/backup"
DATABASES="datenbankliste.txt"
#
# MySQL Setup
#
DBHOST="localhost"
DBUSER="***"
DBPASS="***"
#
# FTP Setup
#
USEFTP=1
FTPHOST="backup.serverkompetenz.de"
FTPUSER="***"
FTPPASS="***"
FTPBACKUPDIR="mysql"
#
###################################################################################################
echo "MySQL-Datenbanken werden gesichert:"
#
# Temporäres Verzeichnis erstellen
#
mkdir -p $BACKUP/$DIRNAME
cd $BACKUP
#
# Bereinigte Liste der Datenbanken erzeugen
#
mysqlshow -h$DBHOST -u$DBUSER -p$DBPASS | awk '{print $2}' | grep -v Databases | sort > $BACKUP/$DIRNAME/$DATABASES
#
# Wohin sollen die ganzen Backups geschrieben werden?
#
for x in `cat $BACKUP/$DIRNAME/$DATABASES`; do
echo -n "Datenbank $x wird gesichert... ";
mysqldump --opt --add-drop-database -h$DBHOST -u$DBUSER -p$DBPASS --databases $x | gzip -q -f -5 > $BACKUP/$DIRNAME/$x.sql.gz ;
echo "done.";
done;
#
# Gesamtarchiv erzeugen (Dateien werden nach Archivierung gelöscht)
#
tar -c -z --directory=$BACKUP --remove-files -f $FILENAME $DIRNAME/*.gz $DIRNAME/$DATABASES
#
# Temporäres Verzeichnis löschen
#
rmdir $BACKUP/$DIRNAME
echo "$FILENAME wurde erstellt."
#
# FTP Transaktion
#
if test $USEFTP -eq 1; then
echo ""
echo "$FILENAME wird auf den Backup FTP Server hochgeladen... "
ftp -in <<EOF
open $FTPHOST
user $FTPUSER $FTPPASS
bin
cd $FTPBACKUPDIR
put $FILENAME
exit
EOF
fi
cd -
Grüsse
jens
Re: DB sichern via cron und Datum
Posted: 2006-08-15 23:37
by tha_specializt
shapeshifta wrote:mal ne doofe Frage: wie lege ich so einen neuen User an?
phpMyadmin ist jedermanns Freund.. man muss nicht unbedingt MySQL-Syntax lernen solange man keine komplexen Aufgaben damit zu erledigen hat, MySQL is eher ein Mittel zum Zweck...
Re: DB sichern via cron und Datum
Posted: 2006-08-16 19:52
by debianfan
Code: Select all
#!/bin/sh
datum=`date +%Y%m%d`
mkdir /backup
cd /backup
mkdir /backup/${datum}
cd /backup/${datum}
/opt/lampp/bin/mysqldump --opt --all-databases > ${datum}_komplett_server_datenbanken.sql
zip -P "PASSWORTZURVERSCHLÜSSELUNGDERGEDUMPTENDATENBANK" /backup/${datum}/${datum}_komplett_server_datenbanken /backup/${datum}/${datum}_komplett_server_datenbanken.sql
maildatum=`date +%d%m%Y`
echo "${maildatum} Sicherung MySql Server " | mutt -s "Database Backup ${datum}" -a ${datum}_komplett_server_datenbanken.zip "meinemailadresse@irgendwas.de
Re: DB sichern via cron und Datum
Posted: 2006-09-09 13:34
by shapeshifta
Manchmal ist nicht die eigene Dummheit schuld:
Wer sich wundert, dass phpmyadmin im Plesk backend nicht läuft und einen popupblocker wie zb beim Firefox benutzt: einfach ausschalten bzw erlauben und dann geht es.
8)