一、说明

Percona XtraBackup工具提供了一种在执行MySQL数据热备的方法。Percona XtraBackup是一个免费的、在线的、开源的、完整的数据库备份解决方案,适用于MySQL和MySQL®的所有版本的Percona服务器。

Percona XtraBackup在事务系统上执行在线非阻塞、紧密压缩、高度安全的完全备份,在备份时不会影响应用正常使用。

Percona Xtrabackup是一款开源的备份工具,支持Innodb、Mysiam、Xtradb等存储引擎数据的在线热备。其特点是备份速度快,对innodb型业务数据几乎无影响,对Myisam型数据会暂时性的锁表,且恢复速度更快。通常,Percona Xtrabackup软件部署有三种常见的方式,分别是rpm包、二进制包以及源码编译的方式安装。建议:使用二进制包方式安装,方便快捷。

1.1Percona Xtrabackup优势

  1. 快速可靠的数据库备份(如热备份、增量备份、bacula备份等)

  2. 份期间不间断的事务处理

  3. 节省磁盘空间和网络带宽与更好的压缩

  4. 自动备份验证

  5. 更高的正常运行时间,因为更快的恢复时间

  6. 于时间点恢复

1.2Percona Xtrabackup软件下载

MySQL备份与恢复——基于Xtrabackup物理备份恢复_备份文件

1.3Percona Xtrabackup软件部署

在Linux系统创建/Xtrabackup目录,上传介质包percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz

1

2

3

shell> mkdir –p /Xtrabackup

sftpcd /Xtrabackup

sftp> put percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz

解压介质包,并设置环境变量

1

2

3

4

5

6

7

8

shell> cd /XtraBackup/

shell> tar zxvf percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz

shell> pwd

/XtraBackup/percona-xtrabackup-2.3.10-Linux-x86_64/bin

shell> vi /etc/profile

export PATH=/mysql/app/bin:/XtraBackup/percona-xtrabackup-2.3.10-Linux-x86_64/bin:$PATH

shell> source /etc/profile

shell> su -

至此,Percona Xtrabackup部署完成。

二、常用的参数列表
常用参数 含义
-u 账户
-p 密码
-P 端口
-S 套接字
-H 主机ip
--defaults-file 读取参数文件位置
--databases 指定数据库
--no-timestamp 不生成时间戳
--slave-info 获取主库端binlog位置
--incremental 创建增量备份

--incremental-basedir

指定full backup目录

--incremental-dir 增量备份目录
--redo-only 增量恢复使用
--apply-log 应用日志
--copy-back 拷贝到相应目录
--move-back 移动到相应目录
三、备份恢复案例

3.1 全局备份恢复

3.1.1 全局备份

1

innobackupex --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock -uroot -pmysql [--slave-info]  /xtrabak

3.1.2 日志应用

1

innobackupex --apply-log /Xtrabackup/backup/2018-07-28_15-11-12

3.1.3全局恢复

1

innobackupex --defaults-file=/etc/my.cnf --copy-back /Xtrabackup/backup/2018-07-28_15-11-12

注:使用copy-back参数 datadir目录必须为空

3.2单表/多表备份恢复

3.2.1单表/多表备份

1

innobackupex --defaults-file=/usr/my.cnf --socket=/tmp/mysql.sock  -uroot -proot (-–slave-info) --no-timestamp --databases="yzw.a [yzw.b]" /xtrabak

注:格式为 库名.表名,可同时将不同库下表进行导出

3.2.2日志应用

1

innobackupex --apply-log /Xtrabackup/backup/2018-07-28_15-11-12

3.2.3单表恢复

1.恢复准备,应用日志从开始点到备份结束点

1

innobackupex --apply-log --export /xtrabackup/backup

2.生产端获取建表语句并在目标端创建

3.目标端卸载ibd文件

1

alter table test.a discard tablespace;

4.目标端拷贝备份文件至库目录

1

cp a.cfg a.exp a.ibd /var/lib/mysql/data/test/

5.目标端修改拷贝文件权限

1

chown -R mysql:mysql /var/lib/mysql/data/test/

6.目标端加载表空间.ibd 文件

1

alter table test.a import tablespace;

3.3增量备份恢复

3.3.1增量备份

第一次全量备份

1

innobackupex --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock -uroot -pmysql --no-timestamp  /xtrabak/full

第一次增量备份    注:增量备份必须在全库备库基础上

1

innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql --socket=/tmp/mysql.sock --no-timestamp --incremental /xtrabak/incre1 --incremental-basedir=/xtrabak/full

第二次增量备份 

1

innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql --socket=/tmp/mysql.sock --no-timestamp --incremental /xtrabak/incre2 --incremental-basedir=/xtrabak/incre1

注:此时incremental-basedir 指向第一次增量备份目录

3.3.2日志应用

第一次应用备份文件

1

innobackupex --apply-log --redo-only /xtrabak/full

第二次应用备份文件

1

innobackupex --apply-log --redo-only /xtrabak/full --incremental-dir=/xtrabak/incre1

第三次应用备份文件

1

innobackupex --apply-log /xtrabak/full --incremental-dir=/xtrabak/incre2

注:--redo-only参数 除最后一份增量文件的应用时不需要添加该参数外,其余都要加上该参数!!!

3.3.3全局恢复

1

innobackupex --defaults-file=/etc/my.cnf --move-back /Xtrabackup/backup/2018-07-28_15-11-12

注:--move-back参数将备份出来文件直接mv到datadir目录,建议使用--copy-back

3.4压缩特性

3.4.1压缩备份

1

innobackupex --defaults-file=/etc/my.cnf  --user=root --password=mysql --no-timestamp --compress --compress-threads=8  /xtrabak

3.4.2解压备份文件

解压decompress 

1

innobackupex --decompress /xtrabak

注:需要提前安装qpress命令,安装方式如下

1

2

3

shell> wget 

shell> tar xvf qpress-11-linux-x64.tar

shell> cp qpress /usr/bin

3.4.3日志应用

1

innobackupex --apply-log /xtrabak

3.4.4全局恢复

1

innobackupex --defaults-file=/etc/my.cnf --copy-back /xtrabak

3.5流特性

3.5.1流备份

1

innobackupex --defaults-file=/etc/my.cnf --user=root --password=mysql --stream=tar --no-timestamp  /xtrabak  1>/xtrabak/full.tar

注:直接生成tar包

3.5.2解压备份文件

1

tar -xvf full.tar

3.5.3日志应用

1

innobackupex --apply-log /xtrabak

3.5.4全局恢复

1

innobackupex --defaults-file=/etc/my.cnf --copy-back /xtrabak