MySQL :: MySQL 5.6 Reference Manual :: 16.1 ZFS-replikoinnin käyttäminen
16.1 ZFS-replikoinnin käyttäminen
Korkean saatavuuden ympäristöjen tukemiseksi välittömän kopion tarjoaminen sekä kulloinkin aktiivisessa koneessa että kuumassa varmuuskopiossa olevista tiedoista on kriittinen osa HA-ratkaisua. Tähän ongelmaan on monia ratkaisuja, kuten luku 17, Replikointi.
ZFS-tiedostojärjestelmä tarjoaa toiminnallisuuden, jolla voidaan luoda tilannekuva tiedostojärjestelmän sisällöstä, siirtää tilannekuva toiseen koneeseen ja purkaa tilannekuva tiedostojärjestelmän uudelleen luomista varten. Voit luoda tilannekuvan milloin tahansa, ja voit luoda niin monta tilannekuvaa kuin haluat. Luomalla, siirtämällä ja palauttamalla jatkuvasti tilannekuvia voit tarjota synkronoinnin yhden tai useamman koneen välillä DRBD:n tapaan.
Seuraavassa esimerkissä on yksinkertainen Solaris-järjestelmä, jossa on käytössä yksi ZFS-allas, joka on asennettu osoitteeseen /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-tiedot on tallennettu hakemistoon osoitteessa /scratchpool
. Jotta voidaan havainnollistaa joitakin replikoinnin perustoimintoja, myös muita kohteita on tallennettu osoitteeseen /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/
Voit luoda tilannekuvan tiedostojärjestelmästä käyttämällä zfs snapshot
ja määrittämällä poolin ja tilannekuvan nimen:
root-shell> zfs snapshot scratchpool@snap1
Voit luetella jo otetut tilannekuvat:
root-shell> zfs list -t snapshotNAME USED AVAIL REFER MOUNTPOINTscratchpool@snap1 0 - 24.5K -scratchpool@snap2 0 - 24.5K -
Itse tilannekuvat tallennetaan tiedostojärjestelmän metatietoihin, ja niiden säilyttämiseen tarvittava tila vaihtelee ajan myötä tilannekuvien luontitavan vuoksi. Tilannekuvan alkuperäinen luominen on hyvin nopeaa, koska sen sijaan, että otettaisiin koko kopio koko tilannekuvan säilyttämiseen tarvittavista tiedoista ja metatiedoista, ZFS tallentaa vain ajankohdan ja metatiedot siitä, milloin tilannekuva luotiin.
Kun alkuperäiseen tiedostojärjestelmään tehdään lisää muutoksia, tilannekuvan koko kasvaa, koska vanhojen lohkojen tallentamiseen tarvitaan enemmän tilaa. Jos luot paljon tilannekuvia, vaikkapa yhden päivässä, ja poistat sitten viikon aikaisemmat tilannekuvat, myös uudempien tilannekuvien koko saattaa kasvaa, koska uudemman tilan muodostavat muutokset on sisällytettävä uudempiin tilannekuviin sen sijaan, että ne olisi jaettu viikon seitsemän tilannekuvan kesken.
Et voi suoraan varmuuskopioida tilannekuvia, koska ne ovat tiedostojärjestelmän metatiedoissa eivätkä tavallisina tiedostoina. Jotta saat tilannekuvan sellaiseen muotoon, että voit kopioida sen toiseen tiedostojärjestelmään, nauhalle ja niin edelleen, voit käyttää komentoa zfs send
luodaksesi tilannekuvasta stream-version.
Voit esimerkiksi kirjoittaa tilannekuvan tiedostoon:
root-shell> zfs send scratchpool@snap1 >/backup/scratchpool-snap1
Tai nauhalle:
root-shell> zfs send scratchpool@snap1 >/dev/rmt/0
Voit myös kirjoittaa kahden tilannekuvan väliset inkrementaaliset muutokset ulos käyttämällä zfs send
:
root-shell> zfs send scratchpool@snap1 scratchpool@snap2 >/backup/scratchpool-changes
Voit palauttaa tilannekuvan käyttämällä zfs recv
, joka soveltaa tilannekuvan tietoja joko uuteen tai olemassa olevaan tiedostojärjestelmään.