MySQL :: MySQL 5.6 Reference Manual :: 16.1 A ZFS-replikáció használata

16.1 A ZFS-replikáció használata

A magas rendelkezésre állású környezetek támogatásához a HA-megoldás kritikus része az aktuálisan aktív gépen és a forró biztonsági másolatban lévő információk azonnali másolatának biztosítása. Erre a problémára számos megoldás létezik, például a 17. fejezet, Replikáció.

A ZFS fájlrendszer olyan funkciókat biztosít, amelyekkel pillanatképet készíthetünk a fájlrendszer tartalmáról, a pillanatképet átvihetjük egy másik gépre, és a pillanatképet kivehetjük a fájlrendszer újbóli létrehozásához. Pillanatképet bármikor készíthet, és tetszőleges számú pillanatképet hozhat létre. A pillanatfelvételek folyamatos létrehozásával, átvitelével és visszaállításával a DRBD-hez hasonló módon szinkronizálást biztosíthat egy vagy több gép között.

A következő példa egy egyszerű Solaris rendszert mutat, amely egyetlen ZFS-pool-lal fut, és a /scratchpool címre van felcsatolva:

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

A MySQL adatok a /scratchpool könyvtárban vannak tárolva. Az alapvető replikációs funkciók egy részének szemléltetése érdekében a /scratchpool-on más elemek is tárolódnak:

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/

A fájlrendszer pillanatfelvételének létrehozásához a zfs snapshot parancsot használjuk, megadva a pool és a pillanatfelvétel nevét:

root-shell> zfs snapshot scratchpool@snap1

A már elkészített pillanatfelvételek listázásához:

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

Maguk a pillanatfelvételek a fájlrendszer metaadataiban tárolódnak, és a pillanatfelvételek létrehozásának módja miatt a tárolásukhoz szükséges helyigény az idő előrehaladtával változik. A pillanatfelvételek kezdeti létrehozása nagyon gyors, mivel ahelyett, hogy a teljes pillanatfelvétel tárolásához szükséges adatok és metaadatok teljes másolatát készítené, a ZFS csak a pillanatfelvétel létrehozásának időpontját és metaadatait rögzíti.

Ahogy az eredeti fájlrendszerben egyre több változtatás történik, a pillanatfelvétel mérete megnő, mivel több hely szükséges a régi blokkok nyilvántartásához. Ha sok pillanatképet hoz létre, mondjuk naponta egyet, majd törli a hét korábbi pillanatképeit, akkor az újabb pillanatképek mérete is növekedhet, mivel az újabb állapotot alkotó változásokat az újabb pillanatképekbe kell beépíteni, ahelyett, hogy a hetet alkotó hét pillanatképre oszlanának szét.

A pillanatfelvételekről nem lehet közvetlenül biztonsági másolatot készíteni, mivel azok nem hagyományos fájlként, hanem a fájlrendszer metaadataiban léteznek. Ahhoz, hogy a pillanatfelvételt olyan formátumba hozza, amelyet más fájlrendszerre, szalagra stb. másolhat, a zfs send paranccsal létrehozza a pillanatfelvétel stream változatát.

Például a pillanatfelvétel kiírásához egy fájlba:

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

Vagy szalagra:

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

A két pillanatfelvétel közötti inkrementális változásokat is kiírhatja a zfs send segítségével:

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

Egy pillanatfelvétel visszaállításához a zfs recv-t használja, amely a pillanatfelvétel információit vagy egy új, vagy egy meglévő fájlrendszerre alkalmazza.