Wie vernünftig backup automatisieren?

Wie vernünftig backup automatisieren?

am 01.04.2006 13:25:35 von Aleksandra

Hallo zusammen,

ich betreiben einen LAMP Server mit PHP und MySQL. Die Datenbank umfasst mehrere
millionen Einträge und es sind dazugehörige Bilder auf der Platte abgelegt.

Gegenwärtig fahre ich einmal im Monat ein Backup per Hand und sichere alle
Verzeichnisse auch das mysql data Verzeichniss mittels tar gzip bei laufendem
Serverbetrieb. Abschalten ist nicht möglich auch nicht für kurze Zeit.

Nun frage ich mich folgendes:

1. Da bei laufendem Server Betrieb backup geschieht, sind die Tabellen nicht
geschlossen. Es kann durchaus sein, daß wärend dem Backup Veränderungen
vorgenommen werden. Wie kann ich das vermeiden?

2. Ich mache jeden Monat ein Gesamtbackup in der Größe von ca. 10GB. Das ist ne
ganze Menge. Und das in einem Intervall von nur einemMonat. Gibt es eine
Möglichkeit partielle Backups zu automatisieren mit einer art Shellskript? Wenn
ja, was könnt Ihr da empfehlen?

Vielen Dank für jegliche Hilfe,

Beste Grüße, Merlin

Re: Wie vernünftigbackup automatisieren?

am 01.04.2006 14:49:15 von sylvio runge

Merlin wrote:

>
> 1. Da bei laufendem Server Betrieb backup geschieht, sind die Tabellen nicht
> geschlossen. Es kann durchaus sein, daß wärend dem Backup Veränderungen
> vorgenommen werden. Wie kann ich das vermeiden?
Unter umständen sind die Tabellen nach dem neu Einspielen dann
nicht mehr konsistent, wenn Pech auch teilweise Datenverluste...
Mache wenigstens noch z.B. ein
"mysqldump --all-databases --allow-keywords >filename.sql"
in ein File und sichere das auch noch ;)

>
> 2. Ich mache jeden Monat ein Gesamtbackup in der Größe von ca. 10GB. Das ist ne
> ganze Menge. Und das in einem Intervall von nur einemMonat. Gibt es eine
> Möglichkeit partielle Backups zu automatisieren mit einer art Shellskript? Wenn
> ja, was könnt Ihr da empfehlen?
"rsync", "dar" (http://dar.linux.free.fr) oder halt ein verteiltes FS wie
DRBD (http://www.drbd.org/) oder open-afs (das ist vermutlich zu viel und zu
kompliziert fuer diesen Einsatzfall) wäre z.B. eine Lösung...

Eine andere wäre mysqld per Master/Slave (also die DB zusaetzlich auf einer anderen
Kiste, die als Slave fungiert...)

S.

Re: Wie vernünftig backup automatisieren?

am 01.04.2006 15:39:21 von Dirk Brosowski

sylvio runge schrieb:

>
> Eine andere wäre mysqld per Master/Slave (also die DB zusaetzlich auf einer anderen
> Kiste, die als Slave fungiert...)

Aus meiner Sicht die einzig sinnvolle Lösung. Einen Slave kann man
jederzeit runterfahren und sichern. Und da hat man sehr viel mehr
Möglichkeiten für Konsistenz zu sorgen.

Grüße

Dirk

Re: Wie vernünftig backup automatisieren?

am 01.04.2006 15:59:47 von Axel Schwenke

Merlin wrote:
>
> ich betreibe einen LAMP Server mit PHP und MySQL.

Ich gehe jetzt mal nur auf den MySQL-Teil ein. Weißt du, daß es zu
MySQL ein Manual gibt? Daß es in diesem Manual einen eigenen Abschnitt
nur für Backup und Recovery gibt? Lesen!



> Gegenwärtig fahre ich einmal im Monat ein Backup per Hand und sichere alle
> Verzeichnisse auch das mysql data Verzeichniss mittels tar gzip bei laufendem
> Serverbetrieb.

Damit bekommst du alles mögliche, aber kein vernünftiges Backup.

> Abschalten ist nicht möglich auch nicht für kurze Zeit.

Hast du wenigstens Zeiten, zu denen nicht geschrieben werden muß?

> Nun frage ich mich folgendes:
>
> 1. Da bei laufendem Server Betrieb backup geschieht, sind die Tabellen nicht
> geschlossen. Es kann durchaus sein, daß wärend dem Backup Veränderungen
> vorgenommen werden. Wie kann ich das vermeiden?

Verwende geeignete Tools:

1. mysqldump kann Tabellen locken, um so ein konsistentes Backup zu
gewährleisten. Wenn du transaktionssichere Tabellen (vulgo: InnoDB)
hast, kann mysqldump das Backup in einer eigenen Transaktion fahren.

2. Wenn du ausschließlich MyISAM Tabellen sichern willst, macht
mysqlhotcopy einen konsistenten Snapshot der Table-Files.

3. Wenn du ausschließlich InnoDB Tabellen sichern, willst, gibt es von
InnoBase ein (kommerzielles) Hotbackup-Tool.

Alle 3 Verfahren haben ihre spezifischen Nachteile. Eine sehr nette
Möglichkeit besteht darin, seine Datenbank per Replikation zu klonen
und dann den Klon zu sichern.

> 2. Ich mache jeden Monat ein Gesamtbackup in der Größe von ca. 10GB. Das ist ne
> ganze Menge. Und das in einem Intervall von nur einemMonat. Gibt es eine
> Möglichkeit partielle Backups zu automatisieren mit einer art Shellskript? Wenn
> ja, was könnt Ihr da empfehlen?

Inkrementelle Backups im Filesystem macht man anhand des "Modification"
Timestamps. Naturgemäß funktioniert das für Datenbanken nicht so gut.
Für MySQL kann man das Binlog verwenden, um Änderungen zu tracken.
Aber auch dann hat man den Nachteil aller inkrementellen Backups: ein
Restore ist aufwendig.


XL

Re: Wie vernünftigbackup automatisieren?

am 02.04.2006 13:26:34 von Andreas Scherbaum

Merlin wrote:
> Hallo zusammen,

Hallo zurück,

> Gegenwärtig fahre ich einmal im Monat ein Backup per Hand und sichere alle
> Verzeichnisse auch das mysql data Verzeichniss mittels tar gzip bei laufendem
> Serverbetrieb. Abschalten ist nicht möglich auch nicht für kurze Zeit.

mal eine ganz einfache Frage:
Hast du jemals probiert, ob sich dieses Backup auch wieder herstellen lässt?

Wenn nicht (und die Antwort dürfte 'Nein' lauten): Warum machst du überhaupt
ein Backup?


> 1. Da bei laufendem Server Betrieb backup geschieht, sind die Tabellen nicht
> geschlossen. Es kann durchaus sein, daß wärend dem Backup Veränderungen
> vorgenommen werden. Wie kann ich das vermeiden?

Indem du die Datenbank vorher herunterfährst. Das wäre die Antwort auf deine
Frage, wie du das vermeiden kannst. Sicherlich möchtest du aber die DB nicht
offline nehmen, also gibt es Programme wie myqldump, die das auch im
laufenden Betrieb können und die die von dir angesprochenen Probleme umgehen.


Backup? Wir brauchen bloss Restore ...

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: Wie vernünftigbackup automatisieren?

am 06.04.2006 19:01:40 von fuzz

Andreas Scherbaum wrote:

> mal eine ganz einfache Frage:
> Hast du jemals probiert, ob sich dieses Backup auch wieder herstellen lässt?
>
> Wenn nicht (und die Antwort dürfte 'Nein' lauten): Warum machst du überhaupt
> ein Backup?

Ich habe mir bis vor kurzem per rsync das Datenverzeichnis von MySQL
kopiert, um auf dem kopierten Stand dann zu entwickeln. Das hat in ca.
99% aller rsync-Durchgänge geklappt. Jetzt bin ich auf PostgreSQL
umgestiegen und die Quote ist gleich geblieben. Das Verfahren
funktioniert (sehr oft), aber Backups sind was anderes.

--
So long... Fuzz

Re: Wie vernünftigbackup automatisieren?

am 08.04.2006 10:08:15 von Andreas Scherbaum

Erik Wasser wrote:
> Andreas Scherbaum wrote:
>
>> mal eine ganz einfache Frage:
>> Hast du jemals probiert, ob sich dieses Backup auch wieder herstellen lässt?
>>
>> Wenn nicht (und die Antwort dürfte 'Nein' lauten): Warum machst du überhaupt
>> ein Backup?
>
> Ich habe mir bis vor kurzem per rsync das Datenverzeichnis von MySQL
> kopiert, um auf dem kopierten Stand dann zu entwickeln. Das hat in ca.
> 99% aller rsync-Durchgänge geklappt. Jetzt bin ich auf PostgreSQL
> umgestiegen und die Quote ist gleich geblieben. Das Verfahren
> funktioniert (sehr oft), aber Backups sind was anderes.

Das ist nun wirklich kein vernünftiges Backup und auch keine vorgesehene
Vorgehensweise. Obwohl, doch, bei PostgreSQL könntest du damit sogar
durchkommen:

http://www.postgresql.org/docs/current/static/backup-online. html

Aber das eine Prozent, das dann nicht funktioniert, hätte mir wirklich
zu denken gegeben ...


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)