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)