Datenbank backup - MySQL im Filesystem zu groß
Stephan
- datenbank
0 Tom0 Stephan
0 Christoph Zurnieden0 Sven Rautenberg0 Stephan
Hallo,
ich mache regelmäßig von meiner MySQL Datenbank ein Backup (Kopie von /var/mysql/lib) und zwar ein full-backup und dann x incrementals.
Jetzt ist es aber so dass in einer Table viele LOBs liegen und die Table jetzt schon 2,1 GB groß ist und die gesamte Datenbank ist 2,2 GB groß, also die eine Table hat den größten Teil belegt.
Wenn jetzt in diese Table ein weiteres LOB eingefügt wird - auch wenns nur 100 KB sind dann ändert sich auf der Platte die MYD Datei und wird somit im nächsten incremental Backup aufgenommen. Das bedeutet aber dass eigentlich jedes Incremental fast ein fullbackup ist:
Fullbackup: 2,2 GB
Incremental: 2,1 GB
Und das obwohl sich nur 100 KB hinzugekommen sind.
Mich interessiert: Gibt es eine Möglichkeit in MySQL die Tabelle im Filesystem irgendwie aufzuteilen, so dass beispielsweise 10 x 200 MByte große *.MYD Dateien erstellt werden, aber in mysql immer noch als eine table dargestellt wird? Und natürlich bei einem insert nur eine der Teil-Dateien geändert wird?
Einigermaßen verständlich?
Viele Grüße
Stephan
Hello,
Mich interessiert: Gibt es eine Möglichkeit in MySQL die Tabelle im Filesystem irgendwie aufzuteilen, so dass beispielsweise 10 x 200 MByte große *.MYD Dateien erstellt werden, aber in mysql immer noch als eine table dargestellt wird? Und natürlich bei einem insert nur eine der Teil-Dateien geändert wird?
Es gibt zumindest eine Möglichkeit, die Tables vorher zu reoranisieren.
Außerdem solltest Du vor dem Fullbackup nicht vergessen, ein lock (read) und ein flush all auf die Tables auszuüben. Dann anschließend das Reeoranisieren und dann erst sichern.
Oder aber den deamon geordent runterfahren. Dann fehlt aber die Reorganisation.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom,
Es gibt zumindest eine Möglichkeit, die Tables vorher zu reoranisieren.
Außerdem solltest Du vor dem Fullbackup nicht vergessen, ein lock (read) und ein flush all auf die Tables auszuüben. Dann anschließend das Reeoranisieren und dann erst sichern.
Das mache ich sowieso. Aber das macht die Files nicht kleiner...
Gruß
Stephan
Hi,
ich mache regelmäßig von meiner MySQL Datenbank ein Backup (Kopie von /var/mysql/lib) und zwar ein full-backup und dann x incrementals.
Du ziehst wirklich eine Kopie vom Ordner?
Dann ist, noch bevor ich weiterlese, der Fehler schon klar und damit auch fast schon die Lösung:
falscher Algorithmus für dsa Backup.
Jetzt ist es aber so dass in einer Table viele LOBs liegen und die Table jetzt schon 2,1 GB groß ist und die gesamte Datenbank ist 2,2 GB groß, also die eine Table hat den größten Teil belegt.
[...]
Mich interessiert: Gibt es eine Möglichkeit in MySQL die Tabelle im Filesystem irgendwie aufzuteilen, so dass beispielsweise 10 x 200 MByte große *.MYD Dateien erstellt werden, aber in mysql immer noch als eine table dargestellt wird? Und natürlich bei einem insert nur eine der Teil-Dateien geändert wird?
Gib den Daten einen Timestamp falls sie noch keinen haben.
Vorgang dann wie folgt:
Einmal einen vollständigen Dump. keine Angst, der ist sehr gut komprimierbar und am Ende nicht wesentlich größer als eine einfache Kopie der Daten. Außerdem brauchst Du den ja auch wirklich nicht oft ;-)
Danach dann einfach inkrementelle Backups nach Timestamp.
Damit Du im Falle des Falles nicht nach einem halbem Jahr über 100 Einzelteile zusammenbasteln mußt ist es ganz praktisch zwischendurch (z.B. am Wochenende falls da nicht gearbeitet wird oder nachts, falls ihr nicht global arbeitet. Falls doch, ist "work on copy" eine Lösung) mal größere Zeiträume abzudecken. Falls am Wochenende nicht gearbeitet wird und genügend Backuplatz vorhanden ist evt ein Fullbackup ansonsten dann von einem Monat oder um den Dreh rum.
so short
Christoph Zurnieden
Moin!
Mich interessiert: Gibt es eine Möglichkeit in MySQL die Tabelle im Filesystem irgendwie aufzuteilen, so dass beispielsweise 10 x 200 MByte große *.MYD Dateien erstellt werden, aber in mysql immer noch als eine table dargestellt wird? Und natürlich bei einem insert nur eine der Teil-Dateien geändert wird?
MySQL verwaltet die Datenbankfiles selbständig. Denn aus Sicht von MySQL ist doch alles in Ordnung: Große Dateien sind zwar für dein Backup schlecht, aber nicht für den Datenbankbetrieb.
Du solltest vielleicht dein Backup mal umstellen. Es gibt z.B. rdiff-backup, das speichert tatsächlich (wie rsync) nur die Veränderungen der einzelnen Generationen ab, und die komplette letzte Version der Datei. Damit würdest du also für die fragliche Tabelle die 2,1 GB plus etwas mehr als die 100KB der Veränderung in jedem Backup-Gang speichern.
http://rdiff-backup.stanford.edu/
- Sven Rautenberg
Okay!
Vielen Dank für eure (Sven Rautenbarg und Christopf Zurnieden) Infos, hören sich beide sehr interessant an!
Ich werde mir das mal zu gemüte führen!
Servus
Der Stephan