MySQL Backup

Bash, Shell, PHP, Python, Perl, CGI
theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

MySQL Backup

Post by theomega »

Hallo Leute,
ich backupe auf meinem Server die mySQl-Datenbank nach folgendem Muster: Alle 12 Stunden wird einfach /var/lib/mysql getart, gegzipt und auf meine zweite Platte kopiert.
Mein Problem: Ich zieh mir mindestens einmal pro Tag das Backup auch lokal runter. Jetzt wird das Backup aber immer größer (logisch) und hat inzwischen getart und gegipt über 50MB. Das braucht immer ewig bis ich das runter habe und ich würde gern Zeit sparen.

Deshalb habe ich mir überlegt: ich könnte doch einfach nur einmal pro Woche ein koplettes 50MB Backup runterladen und danach nurnoch das was sich geändert hat. Praktisch ein inkremetales Backup.
Dummerweise hilft mir hier ein normales Backuptool wie reoback wenig, weil sich die einzelnen dateien alle natürlich ändern, die backups also nicht viel kleiner werden.
Besser wäre ein Script, dass einen Dump erstellt und den mit dem kompletten abgleicht und dann mir einen Dump erstellt der nur die Unterschiede enthält.

Wer hat hier ein Script auf lager oder eine Idee wie man das realisieren könnte?

Grüße und Danke
TO
static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Re: MySQL Backup

Post by static »

Hi,
probiers doch mal mit rdiff-backup als Alternative.
Dieses Programm überträgt automatisch nur die Unterschiede (die per diff kommando festgestellt werden, daher auch der Name 8O ). Dürfte imho mit einem MySQL Dump funktionieren, wobei ich jetzt nicht weiss, wie es aussieht wenn dieser getart ist, müsstest du evtl. ausprobieren.

Meine Anleitung zum Sichern eines kompletten Servers unter Debian findest du hier.

Irgendwann sollte das auch auf www.debianhowto.de erscheinen (*wink an den Captian* :wink: )

Wenn du das Programm ausprobierst, wüde mich interessieren ob das mit dem getarten File geklappt hat (auch wenn ich schwer daran zweifle).

.static
theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

Re: MySQL Backup

Post by theomega »

nein geht nich, weil:
einfaches Beispiel: in einer Tabelle sind 3 Einträge drin. Der Dump bringt jetzt 3 Insert-Statements. Jetzt lösch ich eins. Der Dump bringt jetzt 2 Stück. Diff stellt jetzt ein fehlendes Fest und überträgt mir entweder die ganze Datei oder einen diff dazu, aber was ich wirklich bräuchte wäre eine Delete-Statement.
tape
Posts: 57
Joined: 2003-02-11 12:08

Re: MySQL Backup

Post by tape »

theomega wrote:nein geht nich, weil:
einfaches Beispiel: in einer Tabelle sind 3 Einträge drin. Der Dump bringt jetzt 3 Insert-Statements. Jetzt lösch ich eins. Der Dump bringt jetzt 2 Stück. Diff stellt jetzt ein fehlendes Fest und überträgt mir entweder die ganze Datei oder einen diff dazu, aber was ich wirklich bräuchte wäre eine Delete-Statement.
versuche es doch mal mit rsync. Hier werden nur die geänderten Teile einer Datei übertragen was da sganze sehr flott macht. Und während der Ã?bertragung kann das ganze auch gepackt werden damit die datenmenge klein bleibt.

hth
Anton
theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

Re: MySQL Backup

Post by theomega »

bringt mir nichts, weil das ja alle Dateien sind, weil sich alle verändert haben, und ob es nun flott oder nicht ist, ich hab halt nur nen TDSL-Downstream, und dafür wären mir kleine Dateien lieber
tape
Posts: 57
Joined: 2003-02-11 12:08

Re: MySQL Backup

Post by tape »

theomega wrote:bringt mir nichts, weil das ja alle Dateien sind, weil sich alle verändert haben, und ob es nun flott oder nicht ist, ich hab halt nur nen TDSL-Downstream, und dafür wären mir kleine Dateien lieber

und wenn es alle dateien sind, rsync überträgt nur die geänderten Datenblöcke der einzelnen Dateien wenn sich etwas geändert hat unabhängig davon was für Dateien oder wie groß.

So mach ich z.B. Updates von kompletten ISO images oder eben Backups. Und so hab ich bei meinem vorherigen Brötchengeber die Backups aller Server zu einem zentralen Backupserver gemacht.

In einem anderen Fall verwende ich rsync um z.B. einen ganzen Server zu spiegeln, ich lasse nur das /proc, /tmp und einzelne Files in /etc aus der Rest geht zum Ersatzserver. Fällt der erste aus wird im DNS die IP geändert oder manuell am neuen Server.


Anton
core
Posts: 25
Joined: 2003-06-21 18:05
Location: Stadtilm

Re: MySQL Backup

Post by core »

Ich bin kein Experte, aber ich wuerde sagen, dass SQL-Backups als eine Folge von Queries in der Datei viel kleiner sind als die SQL-Rohdaten als Datei in /var/lib/mysql selbst.

Ein Lösung mit PHP nach dem Vorbild von phpMyAdmin wäre denkbar.
tape
Posts: 57
Joined: 2003-02-11 12:08

Re: MySQL Backup

Post by tape »

Core wrote:Ich bin kein Experte, aber ich wuerde sagen, dass SQL-Backups als eine Folge von Queries in der Datei viel kleiner sind als die SQL-Rohdaten als Datei in /var/lib/mysql selbst.

Ein Lösung mit PHP nach dem Vorbild von phpMyAdmin wäre denkbar.
eventuell richtig, sofern bekannt ist welche DBs sich ändern. Aber es könnten Ã?nderungen in den Hosts/User Tabellen sein, oder neue Tabellen dazugkommen.

Eine andere Lösungsmöglichkeit wäre es den "Backup" Server als Replikant des Hauptservers einzurichten, dann werden die Daten autom. synchronisiert sofern eine Verbindung besteht.

Wie es so schön bei Perl heißt, es gibt immer mehr als einen Weg ein Problem zu lösen. Oder so ähnlich. Denke ich, denke ich! :)

Anton
theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

Re: MySQL Backup

Post by theomega »

also, danke für den tip mit dem rsync, dass funktioniert einigermaßen, wenngleich rsync unter windows ein ziemlicher FLickentepich ist, da läuft nichts so wie unter Windows. Auch überträgt rsync wirlich nur die geänderten Sektoren und nicht die ganze Datei, also eine gute Lösung.
Hat nur den Nachteil, dass ich meinen Windows-PC zum rsync-Server werden lassen muß, aber ich schließ den gleich nach dem backup wieder, von dem her!

Also: danke an alle!
compositiv
Posts: 193
Joined: 2003-01-22 14:58
Location: Hamburg

Re: MySQL Backup

Post by compositiv »

BTW: In der C't 10/03 war ein ordentlicher Artikel über das Syncronisieren mit rsync, allerdings ohne Windows ,)