MySQL :: MySQL 5.6 リファレンスマニュアル :: 16.1 ZFS レプリケーションの使用

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

高可用環境をサポートするには、現在アクティブなマシンとホットバックアップ両方の情報の即時コピーを提供することはHAソリューションにおいて重要な部分と言えます。 この問題に対しては、第17章「レプリケーション」など、多くのソリューションがあります。

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% /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データは/scratchpool上のディレクトリに格納されています。 基本的なレプリケーション機能の一部を示すために、他のアイテムも同様に /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/

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

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 -

スナップショット自体はファイルシステムのメタデータ内に保存され、スナップショットの作成方法によって保存に必要な容量が時間の経過とともに変化します。 スナップショットの最初の作成は、スナップショット全体を保持するために必要なデータとメタデータのコピーを取る代わりに、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 を使用し、スナップショット情報を新しいファイルシステム、または既存のファイルシステムに適用します。