my12_xtrabackup压缩备份与恢复

xtrabackup版本

# rpm -qa | grep xtrabackup

percona-xtrabackup-24-2.4.12-1.el7.x86_64

此版本为目前比较新的版本(2018-08-13),没有安装时可按下面步骤进行安装

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm

# yum install -y libev #缺少 libev.so.4时安装
# yum localinstall -y percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm

innobackupex压缩备份简述

主要使用两个参数,compress表示压缩,compress-threads表示使用的线程数;压缩方式使用qpress命令进,方式就是备份完就使用该命令压缩,压缩后的文件都以.qp结尾;压缩比例约在3:1至4:1之间。

innobackupex --defaults-file=/etc/my_bakdb.cnf --no-timestamp --compress --compress-threads=2 --user automng --host=192.168.56.82 --port=3319 --password ********* /data0/backup/dbbak_20180813

[root@red4 dbbak_20180813]# ls
backup-my.cnf.qp   ibdata1.qp  performance_schema  txdb                       xtrabackup_checkpoints  xtrabackup_logfile.qp
ib_buffer_pool.qp  mysql       sys                 xtrabackup_binlog_info.qp  xtrabackup_info.qp

[root@red4 dbbak_20180813]# cd txdb/
[root@red4 txdb]# ls
db.opt.qp        sbtest11.ibd.qp  sbtest13.ibd.qp  sbtest15.ibd.qp  sbtest2.ibd.qp  sbtest4.ibd.qp  sbtest6.ibd.qp  sbtest8.ibd.qp
sbtest10.frm.qp  sbtest12.frm.qp  sbtest14.frm.qp  sbtest1.frm.qp   sbtest3.frm.qp  sbtest5.frm.qp  sbtest7.frm.qp  sbtest9.frm.qp
sbtest10.ibd.qp  sbtest12.ibd.qp  sbtest14.ibd.qp  sbtest1.ibd.qp   sbtest3.ibd.qp  sbtest5.ibd.qp  sbtest7.ibd.qp  sbtest9.ibd.qp
sbtest11.frm.qp  sbtest13.frm.qp  sbtest15.frm.qp  sbtest2.frm.qp   sbtest4.frm.qp  sbtest6.frm.qp  sbtest8.frm.qp

解压脚本

# cat test.sh 
#!/usr/bin/env bash
cd /data0/backup/dbbak_20180813/;
for i in $(find . -name "*.qp"); 
do 
  qpress -d $i  $(dirname $i) && rm -f $i; 
done

 qpress没有时可按下面的步骤进行安装

qpress官网下载qpress-11-linux-x64.tar
http://www.quicklz.com/
tar -xvf qpress-11-linux-x64.tar
mv qpress /usr/local/bin/
which qpress
/usr/local/bin/qpress

 

全备恢复--生成恢复库

innobackupex --user automng --host=192.168.56.82 --port=3319 --password ********** --apply-log /data0/backup/dbbak_20180813

 

全备恢复--备份现有库

mysqladmin shutdown -uautomng -p********** -P3319

mv bakdb/ bakdb_20180813

全备恢复

innobackupex --copy-back复制恢复好的库到相应配置文件中指定的位置,要指定defaults-file参数,否则mysql会按自己的默认顺序去寻找配置文件。

[root@red4 ~]# innobackupex --defaults-file=/etc/my_bakdb.cnf --copy-back /data0/backup/dbbak_20180813

复制完后要进行授权

chown -R mysql.mysql bakdb

mysqld_safe --defaults-file=/etc/my_bakdb.cnf --user=mysql &

mysql -uautomng -p********* -P3319

 恢复位置

# cat xtrabackup_binlog_info
mysql-bin.000038 17654

xtrabackup_binlog_info 文件记录了我们备份的是哪一时刻的数据,如果你是测试库,备份完成后没有事务产生,那么可以看到库的中master status与该位置相同

mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000038
         Position: 17654
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

ERROR: 
No query specified

这样就很容易明白,xtrabackup xtrabackup_binlog_info 文件中记录的位置是指备份结束时的位置,备份过程中的事务变化会包含在备份文件(具体是日志文件)中,在恢复时apply-log参数会应用这些日志

 

 

posted @ 2018-08-13 15:05  方诚  阅读(697)  评论(0编辑  收藏  举报