一、说明
Percona XtraBackup工具提供了一种在执行MySQL数据热备的方法。Percona XtraBackup是一个免费的、在线的、开源的、完整的数据库备份解决方案,适用于MySQL和MySQL®的所有版本的Percona服务器。Percona XtraBackup在事务系统上执行在线非阻塞、紧密压缩、高度安全的完全备份,在备份时不会影响应用正常使用。Percona Xtrabackup是一款开源的备份工具,支持Innodb、Mysiam、Xtradb等存储引擎数据的在线热备。其特点是备份速度快,对innodb型业务数据几乎无影响,对Myisam型数据会暂时性的锁表,且恢复速度更快。通常,Percona Xtrabackup软件部署有三种常见的方式,分别是rpm包、二进制包以及源码编译的方式安装。建议:使用二进制包方式安装,方便快捷。
1.1Percona Xtrabackup优势
快速可靠的数据库备份(如热备份、增量备份、bacula备份等)
份期间不间断的事务处理
节省磁盘空间和网络带宽与更好的压缩
自动备份验证
更高的正常运行时间,因为更快的恢复时间
于时间点恢复
1.2Percona Xtrabackup软件下载

1.3Percona Xtrabackup软件部署
在Linux系统创建/Xtrabackup目录,上传介质包percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz
shell> mkdir –p /Xtrabackup sftp> cd /Xtrabackup sftp> put percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz
解压介质包,并设置环境变量
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 全局备份
innobackupex --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock -uroot -pmysql [--slave-info] /xtrabak
3.1.2 日志应用
innobackupex --apply-log /Xtrabackup/backup/2018-07-28_15-11-12
3.1.3全局恢复
innobackupex --defaults-file=/etc/my.cnf --copy-back /Xtrabackup/backup/2018-07-28_15-11-12
注:使用copy-back参数 datadir目录必须为空
3.2单表/多表备份恢复
3.2.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日志应用
innobackupex --apply-log /Xtrabackup/backup/2018-07-28_15-11-12
3.2.3单表恢复
1.恢复准备,应用日志从开始点到备份结束点
innobackupex --apply-log --export /xtrabackup/backup
2.生产端获取建表语句并在目标端创建 3.目标端卸载ibd文件
alter table test.a discard tablespace;
4.目标端拷贝备份文件至库目录
cp a.cfg a.exp a.ibd /var/lib/mysql/data/test/
5.目标端修改拷贝文件权限
chown -R mysql:mysql /var/lib/mysql/data/test/
6.目标端加载表空间.ibd 文件
alter table test.a import tablespace;
3.3增量备份恢复
3.3.1增量备份
第一次全量备份
innobackupex --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock -uroot -pmysql --no-timestamp /xtrabak/full
第一次增量备份 注:增量备份必须在全库备库基础上
innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql --socket=/tmp/mysql.sock --no-timestamp --incremental /xtrabak/incre1 --incremental-basedir=/xtrabak/full
第二次增量备份
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日志应用
第一次应用备份文件
innobackupex --apply-log --redo-only /xtrabak/full
第二次应用备份文件
innobackupex --apply-log --redo-only /xtrabak/full --incremental-dir=/xtrabak/incre1
第三次应用备份文件
innobackupex --apply-log /xtrabak/full --incremental-dir=/xtrabak/incre2
注:--redo-only参数 除最后一份增量文件的应用时不需要添加该参数外,其余都要加上该参数!!!
3.3.3全局恢复
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压缩备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=mysql --no-timestamp --compress --compress-threads=8 /xtrabak
3.4.2解压备份文件
解压decompress
innobackupex --decompress /xtrabak
注:需要提前安装qpress命令,安装方式如下
shell> wget http://www.quicklz.com/qpress-11-linux-x64.tar shell> tar xvf qpress-11-linux-x64.tar shell> cp qpress /usr/bin
3.4.3日志应用
innobackupex --apply-log /xtrabak
3.4.4全局恢复
innobackupex --defaults-file=/etc/my.cnf --copy-back /xtrabak
3.5流特性
3.5.1流备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=mysql --stream=tar --no-timestamp /xtrabak 1>/xtrabak/full.tar
注:直接生成tar包
3.5.2解压备份文件
tar -xvf full.tar
3.5.3日志应用
innobackupex --apply-log /xtrabak
3.5.4全局恢复
innobackupex --defaults-file=/etc/my.cnf --copy-back /xtrabak
