MySQL :: MySQL 5.6 Reference Manual :: 16.1 Använda ZFS Replication

16.1 Använda ZFS Replication

För att stödja högtillgänglighetsmiljöer är det en kritisk del av en högtillgänglighetslösning att tillhandahålla en omedelbar kopia av informationen både på den för närvarande aktiva maskinen och på den snabba backupen. Det finns många lösningar på det här problemet, till exempel i kapitel 17, Replikering.

ZFS-filsystemet tillhandahåller funktionalitet för att skapa en ögonblicksbild av filsystemets innehåll, överföra ögonblicksbilden till en annan maskin och extrahera ögonblicksbilden för att återskapa filsystemet. Du kan skapa en ögonblicksbild när som helst och du kan skapa så många ögonblicksbilder som du vill. Genom att kontinuerligt skapa, överföra och återställa ögonblicksbilder kan du tillhandahålla synkronisering mellan en eller flera maskiner på ett sätt som liknar DRBD.

Följande exempel visar ett enkelt Solaris-system som körs med en enda ZFS-pool, monterad 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-data lagras i en katalog på /scratchpool. För att hjälpa till att demonstrera några av de grundläggande replikeringsfunktionerna finns det även andra objekt som lagras 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/

För att skapa en ögonblicksbild av filsystemet använder du zfs snapshot och anger poolen och namnet på ögonblicksbilden:

root-shell> zfs snapshot scratchpool@snap1

För att lista de ögonblicksbilder som redan tagits:

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

Själva ögonblicksbilderna lagras i filsystemets metadata, och det utrymme som krävs för att spara dem varierar med tiden på grund av hur ögonblicksbilderna skapas. Den första skapelsen av en ögonblicksbild är mycket snabb, eftersom ZFS i stället för att ta en hel kopia av de data och metadata som krävs för att hålla hela ögonblicksbilden registrerar endast tidpunkten och metadata för när ögonblicksbilden skapades.

När fler ändringar görs i det ursprungliga filsystemet ökar storleken på ögonblicksbilden eftersom det krävs mer utrymme för att bevara registreringen av de gamla blocken. Om du skapar många ögonblicksbilder, till exempel en per dag, och sedan raderar ögonblicksbilderna från tidigare under veckan, kan storleken på de nyare ögonblicksbilderna också öka, eftersom de ändringar som utgör det nyare tillståndet måste inkluderas i de nyare ögonblicksbilderna, i stället för att spridas över de sju ögonblicksbilderna som utgör veckan.

Du kan inte direkt säkerhetskopiera ögonblicksbilderna eftersom de finns i filsystemets metadata snarare än som vanliga filer. För att få ögonblicksbilden i ett format som du kan kopiera till ett annat filsystem, band och så vidare, använder du kommandot zfs send för att skapa en streamversion av ögonblicksbilden.

Till exempel för att skriva ut ögonblicksbilden till en fil:

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

Eller band:

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

Du kan också skriva ut de inkrementella ändringarna mellan två ögonblicksbilder med hjälp av zfs send:

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

För att återställa en ögonblicksbild använder du zfs recv, som tillämpar informationen om ögonblicksbilden antingen på ett nytt filsystem eller på ett befintligt.