备份一个约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分钟左右
牺牲点空间换时间还是值得的....