線上的生產環境在數據備份的時候,使用--stream=tar壓縮,壓縮的時候發現系統根目錄下面的/tmp會變大;因為根目錄空間不是很大,只有30個G左右;壓縮過程中會撐爆/tmp目錄;查資料發現在使用tar壓縮時,會把xtrabackup_logfile文件寫到MySQL的tmpdir指定的目錄中;如果修改tmpdir目錄就需要重啟MySQL服務了,有點得不償失,最終選擇了--stream=xbstream的方式壓縮。
首先備份如下:
# 備份命令
[root@test1 backup]# innobackupex --user=root --password=123456 --socket=/data/mysql/run/mysql.sock --stream=xbstream /data/backup/ > /data/backup/back.xtream
# 查看備份文件 [root@test1 backup]# ll -h total 1.8G -rw-r--r-- 1 root root 1.8G Dec 30 10:17 back.xtream
使用壓縮備份:
[root@test1 backup]# innobackupex --user=root --password=123456 --socket=/data/mysql/run/mysql.sock --stream=xbstream --compress /data/backup/ > /data/backup/back.xtream
# --compress: 參數表示使用壓縮
# --compress-threads:表示使用幾個線程壓縮 [root@test1 backup]# ll -h total 428M -rw-r--r-- 1 root root 428M Dec 30 10:20 back.xtream #壓縮之后的文件大小為430M左右
然后恢復文件:
[root@test1 backup]# xbstream -x < back.xtream -C /data/backup/ #解壓文件,-C參數指定解壓后的文件目錄 [root@test1 backup]# ls backup-my.cnf.qp cmdb employees ib_buffer_pool.qp lianxi mysql sys xtrabackup_checkpoints xtrabackup_logfile.qp back.xtream cmdb123 hk_level2_info ibdata1.qp marketdata performance_schema xtrabackup_binlog_info.qp xtrabackup_info.qp [root@test1 backup]# cd marketdata; ls #解壓之后,qp文件並沒有解壓需要繼續解壓 asset_class_map.frm.qp bbg_region_map.frm.qp fnz_fund_performance_history.frm.qp fund_fact_sheet.ibd.qp mstar_company_name.ibd.qp mstar_top_holding.ibd.qp asset_class_map.ibd.qp bbg_region_map.ibd.qp fnz_fund_performance_history.ibd.qp fund_similarity.frm.qp mstar_fund_name.frm.qp mutual_fund.frm.qp bbg_company_name.frm.qp bbg_revenue_map.frm.qp fnz_fund_performance.ibd.qp fund_similarity.ibd.qp mstar_fund_name.ibd.qp mutual_fund.ibd.qp bbg_company_name.ibd.qp bbg_revenue_map.ibd.qp fund_branding.frm.qp mstar_broad_category.frm.qp mstar_fund_performance.frm.qp sub_asset_class_map.frm.qp bbg_fund_geo_focus.frm.qp bbg_ticker.frm.qp fund_branding.ibd.qp mstar_broad_category.ibd.qp mstar_fund_performance_history.frm.qp sub_asset_class_map.ibd.qp bbg_fund_geo_focus.ibd.qp bbg_ticker.ibd.qp fund_charge.frm.qp mstar_category.frm.qp mstar_fund_performance_history.ibd.qp tb1.frm.qp bbg_fund_name.frm.qp bbg_top_holding.frm.qp fund_charge.ibd.qp mstar_category.ibd.qp mstar_fund_performance.ibd.qp tb1.ibd.qp bbg_fund_name.ibd.qp bbg_top_holding.ibd.qp fund_commentary.frm.qp mstar_company_info.frm.qp mstar_rating.frm.qp ticker_map.frm.qp bbg_holding_revenue.frm.qp db.opt.qp fund_commentary.ibd.qp mstar_company_info.ibd.qp mstar_rating.ibd.qp ticker_map.ibd.qp bbg_holding_revenue.ibd.qp fnz_fund_performance.frm.qp fund_fact_sheet.frm.qp mstar_company_name.frm.qp mstar_top_holding.frm.qp [root@test1 marketdata]#
在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參數解壓,但是前提是需要系統中安裝了qpress命令。
[root@test1 backup]# innobackupex --decompress /data/backup/cmdb/ #解壓命令 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 [root@test1 cmdb]#
備份文件每個庫要執行解壓,比較麻煩,可以寫成腳本的形式:
第一步准備:prepare階段 [root@test1 backup]# innobackupex --apply-log /data/backup/ #結果出現complete ok表示完成
第二步: --copy-back,主要操作就是拷貝,可以直接使用cp拷貝
