FreeBSD Daily Topics

2010年10月26日ZFSで暗号化ディスクへ自動バックアップを実施する方法

freebsd forum

Userland Programming & Scripting

System Backup(ZFS) - The FreeBSD Forumsにおいて、ZFSを使ってMySQLのデータを定期的にバックアップする方法が掲載されています。フォーラムに掲載されている本来の質問内容は、ZFSでインクリメンタルバックアップをとる方法を尋ねているというものなのですが、掲載されているスクリプトがZFSを使った自動バックアップの方法として興味深く、わかりやすいサンプルとして参考になります。掲載されているバックアップスクリプトは次のとおりです。

mysqldump -ubackup -ppassword --all-databases --all-tablespace > /data/temp/backup.sql

geli attach -k /user/local/backup/da0.key /dev/da0
zpool import backup2

zfs snapshot data/docs@1
zfs snapshot data/pics@1
zfs snapshot data/temp@1

zfs send data/docs@1 | zfs recv backup2/docs
zfs send data/pics@1 | zfs recv backup2/pics
zfs send data/temp@1 | zfs recv backup2/temp

zfs destroy data/docs@1
zfs destroy data/pics@1
zfs destroy data/temp@1

zfs umount backup2/docs
zfs umount backup2/pics
zfs umount backup2/temp

zpool export backup2
geli detach da0.eli

MySQLのデータをファイルに書き出し。Geliで暗号化してあるディスクを接続。接続したディスクのプールをインポート。バックアップするデータのある領域(ZFS)のスナップショットを作成し、スナップショットをimportしたディスクの領域(ZFS)へ送信。送信が完了したらスナップショットを削除して、importしたプールの中身をアンマウントしてからexport。最後にGeliをデタッチして処理完了。

Geliを使ったディスクの暗号化を実施していること、そこからプールのimportとexportを実施していること、スナップショットを作成してsendとrecvで転送していることなど、ZFSを使ったバックアップの基本的な方法として参考になります。

System Backup(ZFS)ではこのスクリプトを/etc/crontabに登録して毎晩実行するという説明があります。

おすすめ記事

記事・ニュース一覧