| | | |  |  | |  |
10.09.2004, 16:18
|
#1 (permalink)
| | Expert Mamber
Join Date: Apr 2004 Location: Germany
Posts: 475
| Automatisches Backup der Datenbanken Hallo,
ich habe für meinen Server ein kleines Backup-Shellscript geschrieben (bzw. ein vorhandenes Script erweitert). Das Script kann in die Crontab eingebunden werden und erstellt dann in dem gewählten Abstand Backups von beliebig vielen Datenbanken. Dabei wird immer zuerst versucht die Tabellen zu sperren und dann ein Backup zu erstellen, hat der User nicht die entsprechenden Rechte wird dennoch ein Backup erstellt. Den Zeitpunkt für das Backup sollte man so wählen, dass möglichst wenig Anwender gerade schreibend auf die DB zugreifen. Ich mache das bei mir z.B. immer um 1:00, aber das muss jeder selber wissen. Das Script löscht nach einer einstellbaren Zeit in Tagen alte Backups, somit wird der benötigte Platz auch nicht zu groß.
Ihr müsst natürlich einige der Parameter an Eure Umgebung anpassen, ich hoffe das die Erläuterungen im Script ausreichend sind. Bei mir läuft das Script schon seit längerer Zeit ohne Probleme. Code: #!/bin/bash
#
# MySQL Backup Script
#
# von ccc (http://www.unixboard.de/vb3/member.php?u=1436)
# dumps Databases
#
#
# changed by lukewill at mambogtt (.) de
#
#set -o xtrace
####################################################
# please check the parameters below !!!
# logfile is saved here
LOG=/var/log/mysqlbackup.log
echo "------------------------------------------------------------------------">>$LOG
echo "`date`">>$LOG
echo "------------------------------------------------------------------------">>$LOG
# mysql binaries are located here
MYSQLBIN=/usr/bin
# the backup are saved in this directory
DUMPDIR=/home/mysqlbackup
# the maxium backup per day
MAXARCHIVDIRS=24
# older files where deleted
MAXHOLDDAYS=1
# we look for the compressing programm in this location
ZIPPROC=/usr/bin/gzip
# DATABASES hold the triple DATABASENAME USER PASSWORD
# Example: mysql root secret
#DATABASES="db1 user_db1 pass1 db2 user_db2 pass2 test root 12345"
#
# STOP ! It is done.
####################################################
#################################
dump () {
if [ -n "$3" ]
then
while [ -n "$1" ]
do
DB=$1
shift;
[ -n "$1" ] || break
USER=$1
shift;
[ -n "$1" ] || break
PASS=$1
echo "Backup Database $DB">>$LOG
if $MYSQLBIN/mysqldump -u $USER --password=$PASS --flush-logs --opt $DB 2>>$LOG > $DB
then
echo "BACKUP OK!">>$LOG
else
#FAIL
if $MYSQLBIN/mysqldump -u $USER --password=$PASS $DB > $DB
then
echo "BACKUP OK!!">>$LOG
else
#FAIL
echo "BACKUP FAIL !">>$LOG
fi
fi
shift;
done
fi
}
#################################
clean () {
cd $DUMPDIR
echo "delete: `find . -type d -mtime +$MAXHOLDDAYS -print`">>$LOG
find . -type d -mtime +$MAXHOLDDAYS -print0|xargs -0 rm -rf
}
#################################
zip () {
cd $ARCHIVDIR
if test -x $ZIPPROC
then
for n in *
do
$ZIPPROC $n
done
fi
}
#################################
ARCHIVDIR=`date +%Y%m%d`
cd $DUMPDIR
i=1
if [ -d $ARCHIVDIR ]
then
b="$ARCHIVDIR#$i"
while [ -d $b ]
do
let i=i+1
b="$ARCHIVDIR#$i"
if [ $i -gt $MAXARCHIVDIRS ]
then
echo "MAXARCHIVDIRS limit reached -> exit">>$LOG
exit 0
fi
done
echo "ARCHIVDIR: $b">>$LOG
ARCHIVDIR=$b
fi
mkdir $ARCHIVDIR
cd $ARCHIVDIR
# main
if test -x $MYSQLBIN/mysqldump
then
dump $DATABASES
clean
zip
echo "THE END">>$LOG
echo "------------------------------------------------------------------------">>$LOG
else
echo "Backup failed: $MYSQLBIN/mysqldump not found or not executable!">>$LOG
echo "------------------------------------------------------------------------">>$LOG
fi Viele Grüße
L |
| |
11.09.2004, 01:16
|
#2 (permalink)
| | Administrator
Join Date: Mar 2004
Posts: 807
| Re: Automatisches Backup der Datenbanken Danke für dieses nette Skript.
In dem Zusammenhang noch ein Hinweis auf die Backup Funktion in Mambo (4.5). Die in Mambo enthaltene Backup und Restore Funktion solltet ihr besser nicht zu Sicherung wichtiger Datenbanken nutzen. Die Funktion ist nicht sehr stabil und macht Fehler, wenn bestimmte Sonderzeichen in der Datenbank auftauchen.
Wer auf Nummer sicher gehen will nimmt auf jeden Fall den Unix Befehl mysqldump (so wie in obigem Skript) in einer Shell. Wer keinen Shellzugang hat, sollte besser phpMyAdmin nutzen als die Mambo interne Funktion.
__________________
Regards, Arthur Konze Webmaster @ Mamboportal.com - Mambers.com |
| |
11.09.2004, 02:06
|
#3 (permalink)
| | Senior Mamber
Join Date: Aug 2004 Location: European Union
Posts: 119
| Re: Automatisches Backup der Datenbanken Hi,
also der thread von Arthur hat mich nun doch etwas beunruhigt bezüglich der möglichen Fehler bei der backup-funktion von mambo.
Wie kann ich denn nun einfach und vorallem sicher die Datenbank sichern?
Über mysqladmin, dann auf exportieren und alle tabellen auswählen?
Was muss da eingestellt werden?
Grüße
Bastian |
| |
11.09.2004, 02:10
|
#4 (permalink)
| | Professional Mamber
Join Date: Apr 2004 Location: Northern Germany
Posts: 713
| Re: Automatisches Backup der Datenbanken Hallo,
für alle, die "von außen" auf die Datenbank zugreifen können (z.B. bei Allinkl) gibt es hier ein paar Skripte, um die Daten auf dem lokalen PC zu sichern. Diese Skripte können auch unbeaufsichtigt per Windows-Geplante-Tasks ausgeführt werden.
Gruß,
ZorkHH |
| |
11.09.2004, 02:13
|
#5 (permalink)
| | Senior Mamber
Join Date: Jun 2004 Location: Bremerhaven
Posts: 179
| Re: Automatisches Backup der Datenbanken @bfmusic
Hallo,
viele Provider bieten Scripte zum Datenbankbackup und Restore an, wie z.B. domain*go. Mit dem Cronjob kann man dann einstellen, wie oft und wann man ein Backup bzw. Restore erstellen möchte.
Am besten mal bei Deinem Provider danach erkundigen. |
| |
11.09.2004, 02:27
|
#6 (permalink)
| | Professional Mamber
Join Date: Jul 2004
Posts: 660
| Re: Automatisches Backup der Datenbanken Gibt ja immer viele Möglichkeiten - wichtig ist wohl vor allem, dass im Falle des Falles auch nach einem notwendigen Restore wieder genau das gleiche in der DB steht wie vorher.
Mit dem Script von lukewill sollte dies auf jeden Fall so sein (sicher, zum Einbau braucht man shell-Zugriff).
Dank an lukewill, weil: du hast mich daran erinnert, keine Nachlässigleiten zuzulassen (auch wenn viele meinen, Backups seien nur gut für Weicheier und Warmduscher >> wenn es passiert ist, ist das Geschrei i.d.R. groß).
cu dot°NETt
__________________ ~~:: ... not available ... ::~~ |
| |
11.09.2004, 02:37
|
#7 (permalink)
| | Senior Mamber
Join Date: Aug 2004 Location: European Union
Posts: 119
| Re: Automatisches Backup der Datenbanken Also es tut mir echt leid, mich hier als der absolut unwissende präsentieren zu müssen, aber was ist genau der SHELL-Zugang? ich gehe mal davon aus, dass ein "normaler" User nicht über einen solchen Zugang verfügt. Oder?
Wie kann denn ein einfacher MamboUser die Datenbank sichern und auch sicher sein das alles zu 100% vorhanden und richtig ist?
@ zorkhh
Habe diese Scripte mal runtergeladen. Aber wie nun weiter? Wo werden die Angaben zur Datenbank etc. gemacht? Und funktionieren diese Skripte einwandfrei?
Vielen Dank
Bastian |
| |
11.09.2004, 02:44
|
#8 (permalink)
| | Professional Mamber
Join Date: Apr 2004 Location: Northern Germany
Posts: 713
| Re: Automatisches Backup der Datenbanken Hallo Bastian,
Du musst die Skripte editieren und Deine Zugangsdaten angeben: Code: z.B. SQLBACKUP.BAT
SET MYSQLHOST=Domain oder IP, unter der die DB erreicht werden kann
SET MYSQLUNAME=Dein DB_Username
SET MYSQLPASSWD=Dein Passwort
SET MYSQLDB=Name der Datenbank Ich nutze eigentlich nur das SQLBACKUP-Script. Das funktioniert bei mir einwandfrei. Aber wie gesagt - Du mußt Zugriff auf die DB von außen haben. Die meisten Hoster erlauben das nicht.
Gruß,
ZorkHH |
| |
11.09.2004, 02:58
|
#9 (permalink)
| | Senior Mamber
Join Date: Aug 2004 Location: European Union
Posts: 119
| Re: Automatisches Backup der Datenbanken Super! Habe das mal probiert und es klappt tatsächlich!
Wunderwerk der Technik!
@ zorkhh
Bis Du schon auf ein RESTORE angwiesen gewesen? Also kannst Du die Fehlerfreiheit bestätigen? Wenn Arthur nicht die interne Backup-Funktion von Mambo in Frage gestellt hätte, hätte ich mich auf diese Funktion vollends verlassen. Das hätte ja leicht ins Auge gehen können.
Vielen Dank für den Tip!
Viele Grüße
Bastian |
| |
11.09.2004, 04:00
|
#10 (permalink)
| | Professional Mamber
Join Date: Apr 2004 Location: Northern Germany
Posts: 713
| Re: Automatisches Backup der Datenbanken Hallo,
ich bin zwar noch nicht auf einen Restore "angewiesen" gewesen, habe es aber bereits getestet. Lief ohne Probleme. Allerdings habe ich das nicht mit allen Eventualitäten getestet. Aber ich habe Sonderzeichen usw. in meinen Daten.
Vielleicht könnte Arthur ein paar weitere Infos über die Problemursachen (oder einen vorhandenen Thread mit dem Thema?) posten, damit wir das mal checken können.
Gruß, ZorkHH |
| | | Thread Tools | | | | Display Modes | Linear Mode |
Posting Rules
| You may not post new threads You may not post replies You may not post attachments You may not edit your posts HTML code is Off | | | All times are GMT +2. The time now is 16:55. | | | |