MySQL :: MySQL 5.6 Reference Manual :: 16.1 Using ZFS Replication

16.1 Using ZFS Replication

Per supportare ambienti ad alta disponibilità, fornire una copia istantanea delle informazioni sia sulla macchina attualmente attiva che sul backup a caldo è una parte critica della soluzione HA. Ci sono molte soluzioni a questo problema, come nel Capitolo 17, Replicazione.

Il file system ZFS fornisce funzionalità per creare un’istantanea del contenuto del file system, trasferire l’istantanea su un’altra macchina ed estrarre l’istantanea per ricreare il file system. Potete creare un’istantanea in qualsiasi momento, e potete creare tutte le istantanee che volete. Creando, trasferendo e ripristinando continuamente le istantanee, potete fornire una sincronizzazione tra una o più macchine in modo simile a DRBD.

L’esempio seguente mostra un semplice sistema Solaris in esecuzione con un singolo pool ZFS, montato su /scratchpool:

Filesystem size used avail capacity Mounted on/dev/dsk/c0d0s0 4.6G 3.7G 886M 82% //devices 0K 0K 0K 0% /devicesctfs 0K 0K 0K 0% /system/contractproc 0K 0K 0K 0% /procmnttab 0K 0K 0K 0% /etc/mnttabswap 1.4G 892K 1.4G 1% /etc/svc/volatileobjfs 0K 0K 0K 0% /system/object/usr/lib/libc/libc_hwcap1.so.1 4.6G 3.7G 886M 82% /lib/libc.so.1fd 0K 0K 0K 0% /dev/fdswap 1.4G 40K 1.4G 1% /tmpswap 1.4G 28K 1.4G 1% /var/run/dev/dsk/c0d0s7 26G 913M 25G 4% /export/homescratchpool 16G 24K 16G 1% /scratchpool

I dati MySQL sono memorizzati in una directory su /scratchpool. Per aiutare a dimostrare alcune delle funzionalità di replica di base, ci sono anche altri elementi memorizzati in /scratchpool:

total 17drwxr-xr-x 31 root bin 50 Jul 21 07:32 DTT/drwxr-xr-x 4 root bin 5 Jul 21 07:32 SUNWmlib/drwxr-xr-x 14 root sys 16 Nov 5 09:56 SUNWspro/drwxrwxrwx 19 1000 1000 40 Nov 6 19:16 emacs-22.1/

Per creare uno snapshot del file system, si usa zfs snapshot, specificando il pool e il nome dello snapshot:

root-shell> zfs snapshot scratchpool@snap1

Per elencare le istantanee già prese:

root-shell> zfs list -t snapshotNAME USED AVAIL REFER MOUNTPOINTscratchpool@snap1 0 - 24.5K -scratchpool@snap2 0 - 24.5K -

Le istantanee stesse sono memorizzate all’interno dei metadati del file system, e lo spazio richiesto per mantenerle varia col passare del tempo a causa del modo in cui le istantanee vengono create. La creazione iniziale di uno snapshot è molto veloce, perché invece di prendere un’intera copia dei dati e dei metadati necessari per mantenere l’intero snapshot, ZFS registra solo il momento e i metadati di quando lo snapshot è stato creato.

Man mano che vengono apportate più modifiche al file system originale, la dimensione dello snapshot aumenta perché è richiesto più spazio per mantenere la registrazione dei vecchi blocchi. Se si creano molte istantanee, diciamo una al giorno, e poi si cancellano le istantanee precedenti nella settimana, la dimensione delle istantanee più recenti potrebbe anche aumentare, poiché le modifiche che costituiscono lo stato più recente devono essere incluse nelle istantanee più recenti, piuttosto che essere distribuite sulle sette istantanee che compongono la settimana.

Non è possibile eseguire direttamente il backup delle istantanee perché esistono all’interno dei metadati del file system piuttosto che come file regolari. Per ottenere l’istantanea in un formato che puoi copiare su un altro file system, su nastro e così via, usa il comando zfs send per creare una versione stream dell’istantanea.

Per esempio, per scrivere l’istantanea su un file:

root-shell> zfs send scratchpool@snap1 >/backup/scratchpool-snap1

O su nastro:

root-shell> zfs send scratchpool@snap1 >/dev/rmt/0

Puoi anche scrivere le modifiche incrementali tra due istantanee usando zfs send:

root-shell> zfs send scratchpool@snap1 scratchpool@snap2 >/backup/scratchpool-changes

Per recuperare un’istantanea, si usa zfs recv, che applica le informazioni dell’istantanea a un nuovo file system o a uno esistente.