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参数会应用这些日志