PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql backup und Optimierung



cane
07.12.04, 12:52
Hallo @all,

wie sehen eure Scripte aus mit denen ihr eure mysql-DBs zur Laufzeit sichert und optimiert? Die Datenbank kann hierzu NICHT gestoppt werden...

Ich möchte ein Script schreiben und hoffe auf kreativen Input eurerseits. Die mysql-Doku ist mir bekannt und wird gerade gelesen :)

mfg
cane

$kuLL
07.12.04, 13:14
#!/bin/sh

DATE=`date -I`
TIME=`date | awk '{print $4}' | sed -e s/:/-/g`
MYSQLDUMP="/usr/local/bin/mysqldump"
BZIP2="/usr/bin/bzip2"
CHMOD="/bin/chmod"
NCFTPPUT="/usr/bin/ncftpput"
FTPCONF="/etc/ncftplogin.conf"
RFTPDIR="/mysql"
USER="xxx"
PASS="xxx"
DB="xxx"
BACKUPDIR="/dat1/backup/mysql/"
SUFFIX="sql.bz2"

### DO NOT EDIT BELOW ###

$MYSQLDUMP --user=$USER --password=$PASS --opt --databases $DB | $BZIP2 -c --best > $BACKUPDIR"$DATE"_"$TIME"_$DB.$SUFFIX
$CHMOD 700 $BACKUPDIR"$DATE"_"$TIME"_$DB.$SUFFIX
$NCFTPPUT -f $FTPCONF -V $RFTPDIR $BACKUPDIR"$DATE"_"$TIME"_$DB.$SUFFIX


Ganz simpel:
Dumpen - Komprimieren - lokal und auf Remote-FTP Server ablegen

PS: Eigentlich ein 3-Zeiler, aber da ich das Script für verschiedene DB's und auf verschieden Betriebsystemen verwende, hab ich lieber alles oben deklariert und kanns leicht anpassen.

cane
07.12.04, 13:30
Prima, das Anhängen eines Suffix der Datum und Zeit enthält ist schonmal nett beschrieben :)

mfg
cane

cane
08.12.04, 09:19
Hier ein sehr mächtiges Backupscript das unter GPL steht:

http://worldcommunity.com/opensource/utilities/mysql_backup.html

mfg
cane

www.borchi.de
01.01.05, 15:47
Ich habe $KULLs Script genomme. Es funktioniert super.

Ich würde aber gerne jede existierensw Datenbank in ein eigenes File sichern, nicht alle in eines.

Wie müsste ich das Script ändern?

$kuLL
01.01.05, 21:10
Das Script sichert immer nur eine Datenbank.
Diese wird bei DB="xxx" eingetragen.

Ich kopiere mir das Script dann immer und passe nur den DB Parameter an.
Das Script wird dann entsprechend der zu sichernden DB benannt.

Für mehere Datenbanken auf einer Maschine ist das Script sicherlich ungeeignet. Da wäre dann eine Liste + for-Schleife angebracht.

Aber wie gesagt, ich nutze das immer nur für eine DB auf unterschiedlichen Systemen.

netzmeister
01.01.05, 21:42
Hallo,

die von mir verwendetete Datensicherungslösung bietet hierzu eine
eigene Erweiterung. Sehr nützlich und professionell.

Viele Grüße

Eicke

aheinhold
01.01.05, 21:47
@netzmeister

Und wie sicherst du die Datenbanken?

netzmeister
01.01.05, 22:34
Hallo,

Einen Dump auf Platte als Datensicherung zu bezeichnen finde ich schon
ziemlich übertrieben. Das ist eher etwas für das Gewissen!

Ich habe das mit der echten Sicherung schon ein paar Mal beschrieben. Da ich von dem Unternehmen
nicht gesponsort werde, spare ich mir hier den Namen. Über die Suche im Forum
ist das bestimmt rauszufinden.

Alle professionellen Datensicherungslösungen bieten für verschiedenste
Datenbanken jeweils Clients an. Damit seid Ihr auf den sicheren Seite.

Die Sicherung erfolgt so direkt im laufenden Betrieb. Natürlich auf
externes Band bzw. Libary.

Da das alles sehr viel Geld kostet wäre es interessant zu wissen, wie wichtig
die daten denn wirklich sind?

Viele Grüße

Eicke

$kuLL
01.01.05, 22:59
Hehe, eigentlich ging es doch nur um einen kreativen Anstoß für Cane's Script ;)

www.borchi.de
02.01.05, 12:26
Ich hab das Script mal ein wenig umgebaut. Eigentlich hab ich von diesem Shell Kram gar keine Ahnung, aber Google ist mein Freund :D


#!/bin/sh

DATE=`date -I`
TIME=`date | awk '{print $4}' | sed -e s/:/-/g`
MYSQLDUMP="/usr/bin/mysqldump"
BZIP2="/usr/bin/bzip2"
CHMOD="/bin/chmod"
USER="darthvader"
PASS="darksiderulez"
BACKUPDIR="/home/backups"
SUFFIX="sql.bz2"

echo
echo Backup vom "$DATE" um "$TIME"


mkdir $BACKUPDIR/backup_"$DATE"
mkdir $BACKUPDIR/backup_"$DATE"/sqldumps

echo Verzeichniss $BACKUPDIR/backup_"$DATE" wird erstellt...
echo
echo Verzeichniss $BACKUPDIR/backup_"$DATE"/sqldumps wird erstellt...
echo
echo gesichert werden:
echo
echo Paketliste
#
dpkg --get-selections "*" | $BZIP2 -c --best > $BACKUPDIR/backup_"$DATE"/paketliste_"$DATE"_"$TIME".txt.bz2

echo
echo MySql Datenbanken
#
$MYSQLDUMP --user=$USER --password=$PASS --opt --database mysql | $BZIP2 -c --best > $BACKUPDIR/backup_"$DATE"/sqldumps/mysql_"$
DATE"_"$TIME".sql.bz2
$MYSQLDUMP --user=$USER --password=$PASS --opt --database ps_stats | $BZIP2 -c --best > $BACKUPDIR/backup_"$DATE"/sqldumps/ps_st
ats_"$DATE"_"$TIME".sql.bz2
$MYSQLDUMP --user=$USER --password=$PASS --opt --database phpkit | $BZIP2 -c --best > $BACKUPDIR//backup_"$DATE"/sqldumps/phpkit
_"$DATE"_"$TIME".sql.bz2

echo
echo /scripte
#
tar zcf /tmp/scripte_"$DATE"_"$TIME".tgz /scripte && mv /tmp/scripte_* $BACKUPDIR/backup_"$DATE"

echo
echo /etc
#
#tar zcf /tmp/etc_"$DATE"_"$TIME".tgz /etc && mv /tmp/etc_* $BACKUPDIR/backup_"$DATE"

echo
echo /programme
#
#tar zcf /tmp/programme_"$DATE"_"$TIME".tgz /programme && mv /tmp/programme_* $BACKUPDIR/backup_"$DATE"
echo
echo /var/log
#
#tar zcf /tmp/var_log_"$DATE"_"$TIME".tgz /var/log && mv /tmp/var_log_* $BACKUPDIR/backup_"$DATE"

echo
echo /var/mail
#
#tar zcf /tmp/var_mail_"$DATE"_"$TIME".tgz /var/mail && mv /tmp/var_mail_* $BACKUPDIR/backup_"$DATE"

echo
echo /var/spool
#
#tar zcf /tmp/var_spool_"$DATE"_"$TIME".tgz /var/spool && mv /tmp/var_spool_* $BACKUPDIR/backup_"$DATE"

echo
echo /home/spitfire/Maildir
#
#tar zcf /tmp/maildir_spitfire_"$DATE"_"$TIME".tgz /home/spitfire/Maildir && mv /tmp/maildir_spitfire_* $BACKUPDIR/backup_"$DATE
"

echo
echo Folgende Dateien wurden nach $BACKUPDIR/backup_"$DATE" gesichert:
echo
dir -R -g $BACKUPDIR/backup_"$DATE"

Ich will jeden Freitag eine Sicherung machen und was jetzt noch fehlt ist eine Funktion, die alte Backups löscht, die älter als 1 Monat sind. Wie mache ich sowas? Die Sicherung erfolgt nur lokal und wird dann mit einigen anderen Sachen monatlich per rsync auf einen anderen Rechner übertragen.