Brauche ein wenig Hilfe bei Dump/Backup (SuSE 8.x) ....

Backup, Restore und Transfer von Daten
Post Reply
Outlaw
Posts: 1500
Joined: 2002-12-04 10:22
Location: 4. Server von rechts, 2. Reihe von oben
 

Brauche ein wenig Hilfe bei Dump/Backup (SuSE 8.x) ....

Post by Outlaw »

Hallo Leute,

ich bin mit meinem Backupkonzept noch nicht ganz zufrieden (Konzept = keins), daher wollte ich vor der "verzweifelten" (Ver)Suche fargen, ob Ihr mir ein wenig dabei helft ??

Ich habe mir folgendes vorgestellt (für die, die keinen Backupspace oder Backuppartner haben):

MySQL Dump per Cronjob in verschiedene Verzeichnisse täglich:
Dabei soll für jeden User ein Dump täglich in Wochentagsdirectory gemacht werden, also Verzeichnisse wie "Montag", "Dienstag", ....
Diese Verzeichnisse sollen im Userbereich nicht im /html/ sondern schon eine Ebene davor abgelegt werden und zwar mit den Rechten der User (z.B. web8:ftponly).

Zudem soll die MySQL DB komplett nochmal auf die selbe Art auf dem Server für den Admin abgelegt werden, damit dieser ebenfalls den Dump von Zeit zu Zeit abholen kann.

Wenn die Woche rum ist, sollen die neuen Dumps die alten überschreiben und immer so weiter.

Vielleicht ist es auch besser, statt 7 Verzeichnissen einfach ein Verzeichnis zu nehmen und die Datei immer umzubenennen, ich finde die 7 Verzeichnisse Version etwas übersichtlicher ....

Hintergrund:
Ich habe bei einigen Usern gesehen, daß sie grosse Datenbanken haben, bei denen die phpMyAdmin Routine zum Dumpen versagt. Bisher mache ich das immer per Hand, wenns gefragt wird, ich finde aber einen solchen Automatismus interessant. Ich würde gerne ein HowTo draus machen, welches hier ins Foraum zu den FAQs passen würde und mit Eurer Erlaubnis auch bei mir ins HowTo mit Quellenangabe.

Wäre das machbar ??

Ich habe mir mal das hier angeschaut: http://www.rootforum.org/faq/index.php? ... 76&lang=de was ja im Prinzip schon sehr gut ist, jedoch müsste es um die von mir genannte Funktionen erweitert werden.

Da es ein "NewBee HowTo" werden soll, würde ich damit anfangen, die Verzeichnisse anzulegen:
HowTo Beispiel wrote:HowTo SuSE 8.x: Tägliches MySQL Backup
Dieser Abschnitt ist für Leute gedacht, die keinen Backupspace oder keinen Backuppartner haben und auf einfache Art und Weise ihren Usern einen Dump der Datenbanken per FTP bereitstellen möchten, damit diese sich diesen Dump auf Wunsch jederzeit selbst runterladen können. Zusätzlich wird noch ein kompletter Dump der Datenbank erstellt, der dem Administrator zur Verfügung steht. Das Ganze wird Zeitgesteuert jede Nacht wochentagsabhängig in verschiedene Verzeichnis abgelegt (z.B. Montag, Dienstag, ....). Diese Struktur habe ich auch gewählt, damit man die Chance hat, bei einer korrupten DB oder dem versehentlichen Löschen von Daten, noch auf eine ältere Version zugreifen zu können.

Zuerst legen wir die Verzeichnisse für den kompletten MySQL an:
(Ich habe bei mir den User der Hauptdomain genommen (web1))

Code: Select all

cd /
md /home/www/web1/backupdb/montag
md /home/www/web1/backupdb/dienstag
md /home/www/web1/backupdb/mittwoch
md /home/www/web1/backupdb/donnerstag
md /home/www/web1/backupdb/freitag
md /home/www/web1/backupdb/samstag
md /home/www/web1/backupdb/sonntag
Damit nun der User "web1" nachher auch per FTP darauf zugreifen kann, geben wir den Verzeichnissen die entsprechenden Rechte:

Code: Select all

chown -R web1:ftponly /home/www/web1/backupdb
Die Option "-R" (rekursiv / das "R" muss gross geschrieben werden) sorgt dafür, daß auch die Unterverzeichnisse von "backupdb" die selben Rechte automatisch erhalten.

Genauso verfahren wir mit den anderen Usern, die Zugriff auf ihre eigenen Dumps haben sollen (Dann eben "web1" durch die gewünschten User ersetzen).
Vielleicht kann man ja für das Anlegen der Verzeichnisse ein Skript schreiben, bei dem man dann als Option die Webs mit anhängt, damit man bei vielen Usern nicht wahnsinnig wird .... ;):D

Der nächste Punkt für das HowTo wäre nach dem Anlegen der Verzeichnisse das Skript, was den Dump für die gesamte Datenbank anlegt.

Wie muss das aussehen ??

Ich würde dank Eurer Hilfe das oben gepostete HowTo hier so erweitern und verändern, daß es irgendwann fertig ist, also diesen Post aktualisieren, damit man immer einen aktuellen Status hat und jeder seine Ideen und Vorschläge einbringen kann.

Helft Ihr mir ?? ;):D

*ganzliebguck*

Gruß Outi
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: Brauche ein wenig Hilfe bei Dump/Backup (SuSE 8.x) ....

Post by oxygen »

z.B so:

Code: Select all

for i in /home/www/web*; do md $i/backupdb/montag; done
nn4l
Posts: 172
Joined: 2002-06-19 07:06
Contact:
 

Re: Brauche ein wenig Hilfe bei Dump/Backup (SuSE 8.x) ....

Post by nn4l »

Ich nehm folgendes Skript für den Datenbankdump:

Code: Select all

#!/bin/bash

cd /chroot/mysql/var/db
for db in mysql `find . -name 'db*' -type d -exec basename {} ;`; do
    echo /opt/mysql/bin/mysqldump ${db}
    /opt/mysql/bin/mysqldump --all --complete-insert --add-drop-table --databases --flush-logs --lock-tables --quick 
                             --user=root --password=geheim --host=127.0.0.1 ${db} > /chroot/mysql/var/backup/${db}.new.sql
    if [ -f /chroot/mysql/var/backup/${db}.sql ]; then
        # echo diff -q /chroot/mysql/var/backup/${db}.sql /chroot/mysql/var/backup/${db}.new.sql
        diff -q /chroot/mysql/var/backup/${db}.sql /chroot/mysql/var/backup/${db}.new.sql > /dev/null 2>&1
        result=$?
        if [ $result -eq 0 ]; then
            # echo rm /chroot/mysql/var/backup/${db}.new.sql
            rm /chroot/mysql/var/backup/${db}.new.sql
        elif [ $result -eq 1 ]; then
            echo mv /chroot/mysql/var/backup/${db}.new.sql /chroot/mysql/var/backup/${db}.sql
            mv /chroot/mysql/var/backup/${db}.new.sql /chroot/mysql/var/backup/${db}.sql
        fi
    else
        echo mv /chroot/mysql/var/backup/${db}.new.sql /chroot/mysql/var/backup/${db}.sql
        mv /chroot/mysql/var/backup/${db}.new.sql /chroot/mysql/var/backup/${db}.sql
    fi
done
Die Idee war, kein Dumpfile einer MySQL DB zu machen, die sich nicht geändert hat. Hat sich aber rausgestellt, dass ausgerechnet die großen DBs sich immer ändern, so dass es bei mir nicht soviel bringt.

Ich mach dann noch einen tage- und monatsweisen Dump sämtlicher Userdaten, hier die Skripte: http://www.softwaretesting.de/download/backup.tar.gz
Outlaw
Posts: 1500
Joined: 2002-12-04 10:22
Location: 4. Server von rechts, 2. Reihe von oben
 

Re: Brauche ein wenig Hilfe bei Dump/Backup (SuSE 8.x) ....

Post by Outlaw »

øxygen wrote:z.B so:

Code: Select all

for i in /home/www/web*; do md $i/backupdb/montag; done
Wenn ich den Befehl richtig interpretiere, dann wird für alle Web User der Montag angelegt. Ich bin jetzt nicht der Crack in Sachen Skripting aber muss bei ner For Do Schleife nicht ein Ende gesetzt werden oder geht das automatisch ??

Was mich auch noch interessiert: Was passiert bei Leuten, die bereits das Backup nutzen ?? Wird deren Verzeichnis ignoriert oder schlimmer, gar gelöscht und neu angelegt ??

Was natürlich ideal wäre, wäre eine Routine, die

- schaut, wer überhaupt MySQL einsetzt, wobei das wäre nicht tragisch, da man bei der DB Einrichtung schon die Verzeichnisse hätte
- nur bei den Webs die Verzeichnisse anlegt, die noch keine haben

Wie müsste man den obigen Befehl ändern ??

@nn4l

Ist das Skript nicht ein wenig umfangreich ?? Es wäre im Prinzip fast egal, ob DBs gedumpt werden, bei denen sich nix geändert hat, da das ja auf dem Server normalerweise schnell geht und bei mir z.B. so gegen 4 Uhr früh passieren soll, wobei da eh niemand drauf ist ....

Kann man das so reduzieren, daß es erstmal immer nen Dump macht und dann vielleicht noch anpassen, daß es zum SuSE Paket passt ??

Ich kann die Pfade raussuchen, falls erforderlich.

Bisher danke an Euch beide und Gruß Outi

PS: Sorry für die Bitten, ich habs mit sowas leider nich so ....
Post Reply