备份一个约250G的mysql实例【xtrabackup备份方案对比】

备份一个约250G的mysql实例

A. 使用xtrabackup备份加gzip单线程压缩

time innobackupex --user=test --password=test  --socket=/home/mysqld.sock  --slave-info --defaults-file=/etc/mysql/my.cnf  --stream=tar /home/backup | gzip > mysql-backup.tgz

real    271m15.984s
user    275m44.840s
sys     6m34.393s


总结:

备份时间: 6小时30分钟以上
占用空间: 87G
占用CPU:  有单个core的cpu被打满


缺点:备份时间长,单个core的cpu被打满,恢复的时候解压会比较耗时,由于备份时间窗比较长所以apply-log的时间也相对会变长
优点:压缩比例高



B. 使用xtrabackup自带的并发压缩

time innobackupex --user=test --password=test --socket=/home/mysqld.sock --slave-info  --parallel=16 --compress --compress-threads 16 --defaults-file=/etc/mysql/my.cnf    --stream=xbstream  /home/backup > mysql-backup.xbstream

real    8m56.112s
user    36m18.179s
sys     4m1.395s


总结:

备份时间:  10分钟左右
占用空间:  123G 
占用CPU:  没有任何core的cpu被打满

缺点:压缩比不高,恢复时需要解两次包
优点:备份速度快、cpu core不会被打满,恢复时解压耗时短,由于备份时间窗比较短所以apply-log也是很快会完成


恢复方法:

1.解开xbstream文件
time xbstream -C /home/data/backup/  -x -v  < mysql-backup.xbstream

real    8m3.373s
user    2m49.465s
sys     3m31.498s


2.解压压缩的qp文件

cd  /home/data/backup/

time innobackupex --decompress   --parallel=32  ./
real    6m24.422s
user    17m45.832s
sys     15m17.286s


3.apply log

cd  /home/data/backup/

innobackupex --apply-log ./


4.copy back

cd  /home/data/backup/

innobackupex --copy-back --defaults-file=/etc/mysql/my.cnf  ./ 

这一步如果 用copy-back的话会比较花时间,有一个省时间的办法是 直接把apply后的数据mv 到需要还原的data目录下(瞬移)

比如:cd /home/data/backup/  && mv ./* /home/mysqlrecover/data/      

还原时间:  25分钟左右


牺牲点空间换时间还是值得的....



你可能感兴趣的:(mysql备份,xtrabackup)