1. Xtrabackup介绍
xtrabackup就percona公司基于innodb公司的ibbackup(收费)实现的一个开源软件,完全覆盖了ibbackup的功能,而且完全免费,可谓是业界良心。
xtrabackup包括两个工具:
xtrabackup 只能备份innodb和xtradb两种引擎的表,不能备份其它引擎的表。
innobackupex 它封装了xtrabackup的perl脚本,覆盖了xtrabackup的功能。它不但可以备份nnodb和xtradb两种引擎的表,还可以备份myisam引擎的表(在备份myisam表时需要加一个读锁)。
Xtrabackup 不但可以实现数据库的完全备份,还实现了数据库的增量备份。
2. 备份恢复流程
2.1 完全备份流程:
1) innobackupex开启xtrabackup_log监控线程,实时监测redolog文件的变化,将新备份过程中新写入到事务日志中的日志拷贝至innobackup_log中;同时开启xtrabackup拷贝线程,开始拷贝innodb文件。
2) 开始拷贝innodb文件。
3) 复制innodb文件结束后,flush tables with read lock
4) 拷贝非innodb文件,.frm、.MYD MYI等类型的文件。
5) 记录当前binlog及position
6) 将表解锁unlock tables
7) 停止xtrabackup_log线程
2.2 全备恢复流程:
1) 对全备文件进行xtrabackup_log日志回放,并对提交的事务进行重做,同时rollback未提交的事务。
2) 将全备文件复制到mysql 下的data目录下。
2.3 增量备份流程:
增量备份是基于上次全备份,拷贝innodb页中有变更的页(LSN大于xtraback_checkpoints中的LSN号)。第一次增量备份是基于全备的,之后每一次备份都是基于上一次的增备,最终达到一致性的备份。增备与全备的过程类似,区别在于第2 步:
1) innobackupex开启xtrabackup_log监控线程,实时监测redolog文件的变化,将新备份过程中新写入到事务日志中的日志拷贝至innobackup_log中;同时开启xtrabackup拷贝线程,开始拷贝innodb文件。
2) 开始拷贝自上次innodb备份后,变化的数据页,即当前LSN > xtrabackup_checkpoints中 的LSN。3) 复制innodb文件结束后,flush tables with read lock
4) 拷贝非innodb文件,.frm、.MYD MYI等类型的文件。
5) 记录当前binlog及position
6) 将表解锁unlock tables
7) 停止xtrabackup_log线程
2.4 增备恢复流程:
1) 恢复全备
2) 恢复增备,对未提交的事务进行rollback
3) 对全备与增备合并后的备份文件进行apply_log
4) 将备份文件拷贝到mysql 的data目录下。
3. 安装步骤
安装环境为centos6.5+mysql5.7
shell>https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.1/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.1-1.el6.x86_64.rpm
rpm –ivh percona-xtrabackup-24-2.4.1-1.el6.x86_64.rpm
安装时提示:
[root@mysql-master local]# rpm -ivhpercona-xtrabackup-24-2.4.1-1.el6.x86_64.rpm
warning:percona-xtrabackup-24-2.4.1-1.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
error: Failed dependencies:
libev.so.4()(64bit) is needed bypercona-xtrabackup-24-2.4.1-1.el6.x86_64
原因是需要先安装依赖包libev.so.4
shell> rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
3. 再次安装:rpm –ivh percona-xtrabackup-24-2.4.1-1.el6.x86_64.rpm 提示安装成功
innobackupex备份恢复的步骤:innobackupex应用案例