Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  高可用性と拡張性  /  ZFS レプリケーションの使用

16.5 ZFS レプリケーションの使用

高可用性環境に対応するため、情報の即時コピーを現在アクティブなマシンとホットバックアップの両方に提供することは、HA ソリューションの重要な部分です。この問題には、第17章「レプリケーションセクション16.2「DRBD/Pacemaker/Corosync/Oracle Linux を使用した MySQL の概要」を含めて多くのソリューションがあります。

ZFS ファイルシステムには、ファイルシステム内容のスナップショットを作成したり、スナップショットを別のマシンに転送したり、スナップショットを解凍してファイルシステムを再作成したりする機能が用意されています。スナップショットはいつでも作成でき、必要な数のスナップショットを作成できます。スナップショットを継続的に作成、転送、およびリストアすることで、DRBD に類似した方法で 1 つまたは複数のマシン間に同期を提供できます。

次の例では、/scratchpool にマウントされた、単一 ZFS プールで動作する単純な Solaris システムを示します。

Filesystem             size   used  avail capacity  Mounted on
/dev/dsk/c0d0s0        4.6G   3.7G   886M    82%    /
/devices                 0K     0K     0K     0%    /devices
ctfs                     0K     0K     0K     0%    /system/contract
proc                     0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
swap                   1.4G   892K   1.4G     1%    /etc/svc/volatile
objfs                    0K     0K     0K     0%    /system/object
/usr/lib/libc/libc_hwcap1.so.1
                       4.6G   3.7G   886M    82%    /lib/libc.so.1
fd                       0K     0K     0K     0%    /dev/fd
swap                   1.4G    40K   1.4G     1%    /tmp
swap                   1.4G    28K   1.4G     1%    /var/run
/dev/dsk/c0d0s7         26G   913M    25G     4%    /export/home
scratchpool             16G    24K    16G     1%    /scratchpool

MySQL データは /scratchpool 上のディレクトリに格納されます。いくつかの基本レプリケーション機能を説明するために、/scratchpool にはほかの項目も格納されています。

total 17
drwxr-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/

ファイルシステムのスナップショットを作成するには、プールおよびスナップショット名を指定して zfs snapshot を使用します。

root-shell> zfs snapshot scratchpool@snap1

すでに作成されたスナップショットの一覧を示すには:

root-shell> zfs list -t snapshot
NAME                USED  AVAIL  REFER  MOUNTPOINT
scratchpool@snap1      0      -  24.5K  -
scratchpool@snap2      0      -  24.5K  -

スナップショット自体はファイルシステムメタデータに格納され、それらを保持するために必要な容量は、スナップショットが作成される方法が理由で時間とともに変化します。スナップショットの初回の作成は、スナップショット全体を保持するために必要なデータとメタデータの全体コピーを作成する代わりに、ZFS はスナップショットが作成されたときのポイントインタイムのメタデータだけを記録するため、非常に高速です。

元のファイルシステムに加えられた変更が多くなるにつれ、古いブロックのレコードを保持するためにより多くの容量が必要になるため、スナップショットのサイズが増えます。多くのスナップショットを作成していて (たとえば 1 日に 1 つ)、週の早い時期に作成したスナップショットを削除する場合、新しい状態を構成する変更は、週を構成する 7 個のスナップショットに分散されるのではなく、より最近のスナップショットに含まれる必要があるため、新しい方のスナップショットのサイズが増える場合もあります。

スナップショットは、一般のファイルとしてではなくファイルシステムメタデータ内に存在するため、直接バックアップできません。スナップショットを別のファイルシステムやテープなどにコピーできる形式にするには、zfs send コマンドを使用してストリーム版スナップショットを作成します。

たとえば、スナップショットをファイルに書き出すには:

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

またはテープ:

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

zfs send を使用して、2 つのスナップショット間の増分変更を書き出すこともできます。

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

スナップショットをリカバリするには、スナップショット情報を新しいファイルシステムまたは既存のものに適用する zfs recv を使用します。