Recovery Manager for MySQLでバックアップデータの圧縮と暗号化をやってみる

Recovery Manager for MySQL ではバックアップデータの圧縮と、
暗号化のオプションがあるようなので、試してみます。そのときのメモです。
ちなみに、バックアップはlogicalで取得しています。

データの圧縮


mysql-zrm.conf」に以下のパラメータを追加するとデータ圧縮が有効になります。

compress=1
compress-plugin=/usr/bin/gzip
データの暗号化


mysql-zrm.conf」に以下のパラメータを追加するとデータ暗号化が有効になります。

encrypt=1
encrypt-plugin="/usr/share/mysql-zrm/plugins/encrypt.pl"
decrypt-option="-d"
passfile="/etc/mysql-zrm/mybackup/.passphrase"


スクリプト(/usr/share/mysql-zrm/plugins/encrypt.pl)のこのあたりを見る限り、GPGで暗号化していますね。

83 my $arg = "--quiet --batch --passphrase-fd 3 3<$PASSFILE";
84 
85 if( $ARGV[0] eq "-d" ){
86         $arg .= " --no-mdc-warning --decrypt";
87 }else{
88         $arg .= " --disable-mdc --symmetric --cipher-algo AES256";
89 }


パスフレーズが分からなくなると元に戻せなくなるのでパスフレーズを忘れないように。

データの圧縮について


データ圧縮の有無でどの程度サイズが変わるのか、100万レコードのテーブルを用意してバックアップしてみました。

mysql> SELECT COUNT(*) TITLE FROM sample;
+---------+
| TITLE   |
+---------+
| 1000001 |
+---------+
1 row in set (0.00 sec)


上が圧縮を有効にしたもの、下はそのまま取った場合です。gzip圧縮されています。

/var/lib/mysql-zrm/mybackup/20140114012202:
合計 5116
drwx------. 2 root root    4096  1月 14 01:22 2014 .
drwx------. 4 root root    4096  1月 14 01:22 2014 ..
-rw-r--r--. 1 root root 5219566  1月 14 01:22 2014 backup-data
-rw-r--r--. 1 root root     623  1月 14 01:22 2014 index
-rw-r--r--. 1 root root     148  1月 14 01:22 2014 zrm_checksum

/var/lib/mysql-zrm/mybackup/20140114012218:
合計 21800
drwx------. 2 root root     4096  1月 14 01:22 2014 .
drwx------. 4 root root     4096  1月 14 01:22 2014 ..
-rw-r--r--. 1 root root 22305628  1月 14 01:22 2014 backup.sql
-rw-r--r--. 1 root root      593  1月 14 01:22 2014 index
-rw-r--r--. 1 root root      147  1月 14 01:22 2014 zrm_checksum

バックアップデータの展開


mysql-zrm-extract-backup」コマンドを使うと、バックアップデータを展開することができます。
先ほど上で取得したデータを展開してみます。

# mysql-zrm-extract-backup --backup-set mybackup --source-directory /var/lib/mysql-zrm/mybackup/20140
114012202/
extract-backup:INFO: ZRM for MySQL - version built from source

# ls -la /var/lib/mysql-zrm/mybackup/20140114012202

/var/lib/mysql-zrm/mybackup/20140114012202:
合計 26900
drwx------. 2 root root     4096  1月 14 01:26 2014 .
drwx------. 4 root root     4096  1月 14 01:22 2014 ..
-rw-r--r--. 1 root root        0  1月 14 01:26 2014 .extracted
-rw-r--r--. 1 root root  5219566  1月 14 01:22 2014 backup-data
-rw-r--r--. 1 root root 22305628  1月 14 01:22 2014 backup.sql
-rw-r--r--. 1 root root      623  1月 14 01:22 2014 index
-rw-r--r--. 1 root root      148  1月 14 01:22 2014 zrm_checksum


「backup.sql」というファイルに展開されています。
「backup-data」ファイルは暗号化オプションを有効にしていなければgzip圧縮されているだけなので、
そのまま展開することも出来ます。


今日はこんなところで。