1、介绍
线上的生产环境在数据备份的时候,使用--stream=tar压缩,压缩的时候发现系统根目录下面的/tmp会变大;因为根目录空间不是很大,只有30个G左右;压缩过程中会撑爆/tmp目录;查资料发现在使用tar压缩时,会把xtrabackup_logfile文件写到MySQL的tmpdir指定的目录中;如果修改tmpdir目录就需要重启MySQL服务了,有点得不偿失,最终选择了--stream=xbstream的方式压缩。
2、qpress安装
wget http://www.quicklz.com/qpress-11-linux-x64.tar tar -xf qpress-11-linux-x64.tar cp -a qpress /usr/bin/
3、备份命令
# 备份命令 innobackupex --defaults-file=/usr/my.cnf -ubakuser -p'密码' --stream=xbstream --parallel=8 --compress --compress-threads=8 /tmp 2>>$logdir/backup$time.log > $backupdir/backup_full`date +%Y-%m-%d`.xbstream
# 参数说明
# --compress: 参数表示使用压缩
# --compress-threads:表示使用几个线程压缩
4、恢复备份步骤
xbstream恢复文件
xbstream -x -C bak/ < backup_full2020-12-09.xbstream
#解压文件,-C参数指定解压后的文件目录
在xtrabackup2.1.4之前需要使用qpress命令,逐个解压每一个文件。
【下面使用了for循环解压,在每个库目录中都要解压对应的表】
[root@test1 marketdata]# for fp in `find ./ -iname "*.qp"`; do qpress -d $fp $(dirname $fp) && rm -f $fp; done [root@test1 marketdata]# ls asset_class_map.frm bbg_holding_revenue.frm bbg_top_holding.frm fund_branding.ibd fund_similarity.ibd mstar_company_name.ibd mstar_rating.ibd tb1.ibd asset_class_map.ibd bbg_holding_revenue.ibd bbg_top_holding.ibd fund_charge.frm mstar_broad_category.frm mstar_fund_name.frm mstar_top_holding.frm ticker_map.frm bbg_company_name.frm bbg_region_map.frm db.opt fund_charge.ibd mstar_broad_category.ibd mstar_fund_name.ibd mstar_top_holding.ibd ticker_map.ibd bbg_company_name.ibd bbg_region_map.ibd fnz_fund_performance.frm fund_commentary.frm mstar_category.frm mstar_fund_performance.frm mutual_fund.frm bbg_fund_geo_focus.frm bbg_revenue_map.frm fnz_fund_performance_history.frm fund_commentary.ibd mstar_category.ibd mstar_fund_performance_history.frm mutual_fund.ibd bbg_fund_geo_focus.ibd bbg_revenue_map.ibd fnz_fund_performance_history.ibd fund_fact_sheet.frm mstar_company_info.frm mstar_fund_performance_history.ibd sub_asset_class_map.frm bbg_fund_name.frm bbg_ticker.frm fnz_fund_performance.ibd fund_fact_sheet.ibd mstar_company_info.ibd mstar_fund_performance.ibd sub_asset_class_map.ibd bbg_fund_name.ibd bbg_ticker.ibd fund_branding.frm fund_similarity.frm mstar_company_name.frm mstar_rating.frm tb1.frm [root@test1 marketdata]#
在xtrabackup2.1.4之后可以使用decompress参数解压
在xtrabackup2.1.4之后可以使用decompress参数解压,但是前提是需要系统中安装了qpress命令。
innobackupex --decompress --parallel=6 --compress-threads=6 bak/ #解压命令
xtrabackup: recognized server arguments: xtrabackup: recognized client arguments: 191230 10:40:11 innobackupex: Starting the decrypt and decompress operation IMPORTANT: Please check that the decrypt and decompress run completes successfully. At the end of a successful decrypt and decompress run innobackupex prints "completed OK!". innobackupex version 2.4.13 based on MySQL server 5.7.19 Linux (x86_64) (revision id: 3e7ca7c) 191230 10:40:11 [01] decompressing ./dict_tree_info.ibd.qp 191230 10:40:11 [01] decompressing ./db.opt.qp 191230 10:40:11 [01] decompressing ./dict_tree_info.frm.qp 191230 10:40:11 completed OK! #这里说明解压完成 [root@test1 backup]# cd cmdb [root@test1 cmdb]# ls #原文件和解压之后的文件是并存的,在恢复的时候需要删除原压缩文件 db.opt db.opt.qp dict_tree_info.frm dict_tree_info.frm.qp dict_tree_info.ibd dict_tree_info.ibd.qp
# 可以批量删除qp文件 [root@test1 cmdb]# for f in `find ./ -iname "*.qp"`; do echo $f && rm -f $f; done
备份文件每个库要执行解压,比较麻烦,可以写成脚本的形式:
第一步准备:prepare阶段 [root@test1 backup]# innobackupex --apply-log bak/ #结果出现complete ok表示完成
第二步: --copy-back,主要操作就是拷贝,可以直接使用cp拷贝
参考
xtrabackup备份之xbstream压缩 - 码农教程
http://www.manongjc.com/detail/14-yrdlrdjfqsepugn.html
percona xtrabackup使用xbstream进行流式备份恢复-运维爱好者-51CTO博客
https://blog.51cto.com/gaoquan/1737053