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