MySQL :: MySQL 5.6 Reference Manual :: 16.1 Brug af ZFS-replikering

16.1 Brug af ZFS-replikering

For at understøtte miljøer med høj tilgængelighed er det en vigtig del af HA-løsningen at levere en øjeblikkelig kopi af oplysningerne på både den aktuelt aktive maskine og den hot backup. Der findes mange løsninger på dette problem, f.eks. i kapitel 17, Replikering.

ZFS-filsystemet indeholder funktionalitet til at oprette et snapshot af filsystemets indhold, overføre snapshotet til en anden maskine og udtrække snapshotet for at genskabe filsystemet. Du kan oprette et snapshot når som helst, og du kan oprette så mange snapshots som du vil. Ved løbende at oprette, overføre og genskabe snapshots kan du sørge for synkronisering mellem en eller flere maskiner på en måde, der ligner DRBD.

Følgende eksempel viser et simpelt Solaris-system, der kører med en enkelt ZFS-pool, der er monteret på /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

MySQL-dataene er gemt i en mappe på /scratchpool. For at hjælpe med at demonstrere nogle af de grundlæggende replikeringsfunktioner er der også andre elementer gemt på /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/

Hvis du vil oprette et snapshot af filsystemet, bruger du zfs snapshot og angiver puljen og snapshotnavnet:

root-shell> zfs snapshot scratchpool@snap1

Sådan får du en liste over de snapshots, der allerede er taget:

root-shell> zfs snapshot scratchpool@snap1

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

Selve snapshots gemmes i filsystemets metadata, og den plads, der kræves til at opbevare dem, varierer med tiden på grund af den måde, snapshots oprettes på. Den første oprettelse af et snapshot er meget hurtig, fordi ZFS i stedet for at tage en hel kopi af de data og metadata, der er nødvendige for at holde hele snapshotet, kun registrerer tidspunktet og metadataene for, hvornår snapshotet blev oprettet.

Efterhånden som der foretages flere ændringer i det oprindelige filsystem, øges størrelsen af snapshotet, fordi der kræves mere plads til at opbevare registreringen af de gamle blokke. Hvis du opretter mange snapshots, f.eks. et pr. dag, og derefter sletter snapshots fra tidligere på ugen, kan størrelsen af de nyere snapshots også stige, da de ændringer, der udgør den nyere tilstand, skal medtages i de nyere snapshots i stedet for at blive spredt ud over de syv snapshots, der udgør ugen.

Du kan ikke direkte sikkerhedskopiere øjebliksbillederne, fordi de findes i filsystemets metadata i stedet for som almindelige filer. For at få snapshotet i et format, som du kan kopiere til et andet filsystem, bånd osv., bruger du kommandoen zfs send til at oprette en stream-version af snapshotet.

For at skrive snapshotet ud til en fil kan du f.eks:

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

Eller bånd:

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

Du kan også skrive de inkrementelle ændringer mellem to snapshots ud ved hjælp af zfs send:

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

Hvis du vil gendanne et snapshot, bruger du zfs recv, som anvender snapshot-informationerne enten på et nyt filsystem eller på et eksisterende filsystem.