Percona最近发布了xtrabackup-2.1.0-alphal版本,可以支持基于AES256算法的数据加密,对于容灾存储不可信的场景来说,真是福音啊,可以不用自己写脚本实现了:)
可以从这里下载。下面是具体的使用过程:
1. 先进行备份
innobackupex --defaults-file=/home/mysql/mysql/etc/my.cnf --ibbackup=xtrabackup --user=mysqlbackup --password='********' --host=127.0.0.1 --tmpdir=/tmp --compact --compress --compress-threads=5 --encrypt=AES256 --encrypt-key=3c0efcea569021b49245e47b5d6a0e28 --encrypt-threads=5 --no-timestamp --parallel=2 backup_data
看到下面的输出就说明OK了。
innobackupex: completed OK!
几个关键参数说明如下:
--compact # 备份数据不保存二级索引页(secondary index),apply-log的时候需要对应加上rebuild-indexes进行重建 # 压缩 --compress # 开启压缩,目前只支持quicklz算法 --compress-threads=5 # 并发压缩线程,默认为1 --compress-chunk-size=64K # 每个压缩线程使用的buffer,默认64K # 加密 --encrypt=AES256 # 开启加密,目前支持的算法有AES128, AES192 和 AES256 --encrypt-key=3c0efcea569021b49245e47b5d6a0e28 # 32位密钥,不过不推荐这么使用,最好将密钥存放在文件中,用encrypt-key-file参数引用 --encrypt-threads=5 # 加密线程数,默认为1
1) 解密,需要使用和加密时相同的key
for i in `find . -iname "*.xbcrypt"`; do xbcrypt -d --encrypt-key=3c0efcea569021b49245e47b5d6a0e28 --encrypt-algo=AES256 < $i > $(dirname $i)/$(basename $i .xbcrypt) && rm $i done
2) 解压缩。xtrabackup目前没有buildin的解压缩方式,需要使用第三方解压工具qpress
for i in `find . -iname "*.qp"`; do qpress -d $i $(dirname $i) && rm $i; done
qpress可以支持多核,可以有效的提升解压效率。解压时加上-Tn,默认为2.
3) 接下来就是正常的apply-log了,记得加上–rebuild-indexes
innobackupex --defaults-file=/home/mysql/mysql/etc/my.cnf --ibbackup=xtrabackup --apply-log --rebuild-indexes backup_data
最后:压缩效率还是挺高的,实测结果使用压缩后的备份比正常压缩可以节省70%的空间,当然这个和具体的场景有关,各位可以试试自己的场景:)
转载请注明:爱开源 » 使用xtrabackup进行备份数据的压缩和加密