zoukankan      html  css  js  c++  java
  • xtrabackup备份之xbstream压缩

    线上的生产环境在数据备份的时候,使用--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拷贝
  • 相关阅读:
    [Django]中间件
    Python装饰器的诞生过程-->和闭包的微妙关系
    Python实现经典算法之---斐波那契数列(兔子问题&走楼梯问题)
    二分查找---非递归算法和递归算法
    JavaScript的event对象
    input[type='submit']input[type='button']button等按钮在低版本的IE下面,去掉黑色边框的问题
    JavaScript 之 数据在内存中的存储和引用
    HTML5 之 简单汇总
    HTML5 Canvas——基础入门
    nodejs(14)express获取url中的参数
  • 原文地址:https://www.cnblogs.com/wxzhe/p/12118643.html
Copyright © 2011-2022 走看看