MySQL-Backups mit ZFS
ZFS ist ein "relativ" neues Filesystem, von SUN Microsystems. Es beinhaltet nicht nur Filesystem mit Volume Manager.
Daher ist es naheliegend, Datenbanken auch auf so ein Filesystem zu legen und Snapshots zu machen um damit Backups zu "erstellen".
Meine Idee war zuerst den Snapshot zu kreieren, ein mysqldump drauf loszulassen und die entstehenden Dump-Daten ins Backup zu schieben.
Nachdem ich aber gesehen habe dass mylvmbackup von Lenz Grimme auch "nur" .tar.gz-Dateien erstellt dachte ich fange ich mit folgendem Einzeiler auf der Shell an:
Natürlich kann man den destroy weglassen und den Snapshot behalten (und das ganze damit stagen). Ob und wie das performed werde ich mal nächstens testen.
**Update** Kris sagt mir gerade dass der flush tables with read lock nur bis zum Disconnect gilt - was natürlich doof ist. Also werde ich das ganze in Perl bauen müssen. mylvmbackup umbauen viellkeicht; wobei das deutlich mehr macht (weil lvm mehr Handling braucht).
Daher ist es naheliegend, Datenbanken auch auf so ein Filesystem zu legen und Snapshots zu machen um damit Backups zu "erstellen".
Meine Idee war zuerst den Snapshot zu kreieren, ein mysqldump drauf loszulassen und die entstehenden Dump-Daten ins Backup zu schieben.
Nachdem ich aber gesehen habe dass mylvmbackup von Lenz Grimme auch "nur" .tar.gz-Dateien erstellt dachte ich fange ich mit folgendem Einzeiler auf der Shell an:
mysql -ufoo -h localhost -p mysql -e "flush tables with read lock" && \
zfs snapshot $pool/$volume@backup1 && \
mysql -ufoo -p mysql "unlock tables" && \
cd /$pool/$volume/.zfs/snapshot/backup/root/$datadir && \
tar cvf /backup/backup1.tar . && \
zfs destroy $pool/$volume@backup1
Natürlich kann man den destroy weglassen und den Snapshot behalten (und das ganze damit stagen). Ob und wie das performed werde ich mal nächstens testen.
**Update** Kris sagt mir gerade dass der flush tables with read lock nur bis zum Disconnect gilt - was natürlich doof ist. Also werde ich das ganze in Perl bauen müssen. mylvmbackup umbauen viellkeicht; wobei das deutlich mehr macht (weil lvm mehr Handling braucht).
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Kristian Köhntopp am :
I> mach es bitte wie mylvmbackup
I> 1. flush tables
I> das mimimiert die puffer
I> 2. flush tables with read lock
I> das flusht die puffer und sperrt die db
I> 3. snapshot
I> 4. unlock tables.
I> 5. snap mounten und sichern
I> andernfalls ist der snapshot nicht konsistent
I> und rince, du musst es in einem perl-script o.a. machen,
I> als shell geht das nicht, denn
I> flush tables with read lock
I> haelt die locks bis zum unlock tables oder disconnect
I> und der snapshot muss gelockt erfolgen,
I> aber ein shellscript kann die verbindung nicht halten
Rince am :
Florian Laws am :
http://blogs.digitar.com/jjww/?itemid=56
Da hat schon einer ein Backupskript für MySQL auf ZFS geschrieben.
(via c0t0d0s0)