XtraBackup简介
XtraBackup取代innodbbackup的工具并且XtraBackup能够完全兼容innodb存储引擎,并对innodb存储引擎实现完全的物理层的热备。
官方站点:http://www.percona.com/
percona本身对mysql做了修改,并拥有更高的性能,其为percona server
并且percona server对mysql本身的修改还提供了同步复制集群功能,所以percona在圈子的影响力甚至超过了mysql官方。
对于MyISAM表只能是温备,而且也不支持增量备份
XtraBackup更多高级特性通常只能在innodb存储引擎上实现,而且高级特性还都依赖于mysql数据库对innodb引擎实现了单独表空间,否则没办法实现单表或单库导出
使用每表单个表空间
在使用xtrabackup之前,我们需要查看我们当前mysql是否是使用每表单个表空间,如果不是则必须将其修改为每表单独表空间
mysql> show global variables like '%innodb_file_p%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF |
+-----------------------+-------+
1 row in set (0.00 sec)
这里是关闭状态,由此我们要启动这个功能,将来一旦要用到xtrabackup或各种高级功能的话建议刚安装mysql的时候直接将默认配置去写进配置文件,中途再更改的话会非常麻烦,好在我们是测试环境,需能将数据导出更改配置再进行导入
[root@test2 ~]#mysqldump -uroot --lock-all-tables --all-databases --master-data=2 --events> ./1.sql
关闭数据库
[root@test2 ~]#/etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
编辑配置文件加入以下参数
[root@test2 ~]# vim/etc/my.cnf
innodb_file_per_table= 1
而后删除数据文件并重新初始化
[root@test2 data]#pwd
/mydata/data
删除所有数据文件
[root@test2 data]# rm -fr *
初始化mysql
[root@test mysql]#pwd
/usr/local/mysql
[root@test mysql]# scripts/mysql_install_db --user=mysql--datadir=/mydata/data/ --basedir=/usr/local/mysql/
[root@test mysql]#/etc/init.d/mysqld start
再次查看是否是每表单独表空间
mysql> showglobal variables like '%innodb_file_per%';
+-----------------------+-------+
|Variable_name | Value |
+-----------------------+-------+
|innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00sec)
恢复数据
mysql> source~/1.sql
[root@test2 data]#ll wpdb/
total 220
-rw-r--r--. 1 mysqlmysql 61 Apr 6 11:05 db.opt
-rw-r--r--.1 mysql mysql 8646 Apr 6 11:05 students.frm
-rw-r--r--.1 mysql mysql 98304 Apr 6 11:05students.ibd
-rw-r--r--. 1 mysql mysql 8556 Apr 6 11:05 tb4.frm
-rw-r--r--. 1 mysql mysql 98304 Apr 6 11:05 tb4.ibd
如上所示每个表都有单独对应的表空间了
安装percona-xtrabackup
解决依赖关系
[root@test ~]# yum-y install libaio perl-Time-HiRes perl-DBD-MySQL perl-IO-Socket-SSL
首先安装percona-xtrabackup
[root@test2 tools]#rpm -ivh percona-xtrabackup-2.1.4-656.rhel6.x86_64.rpm
warning:percona-xtrabackup-2.1.4-656.rhel6.x86_64.rpm: Header V4 DSA/SHA1 Signature,key ID cd2efd2a: NOKEY
Preparing... ########################################### [100%]
1:percona-xtrabackup ###########################################[100%]
查看软件相应属性
[root@test tools]#rpm -qlpercona-xtrabackup
/usr/bin/innobackupex #统一命令接口
/usr/bin/innobackupex-1.5.1
/usr/bin/xbcrypt
/usr/bin/xbstream #支持流式备份
/usr/bin/xtrabackup
/usr/bin/xtrabackup_55 #分别应用于mysql5.5 和5.6的工具,会根据程序自动判断mysql当前版本而后应用与之匹配的工具来进行备份的
/usr/bin/xtrabackup_56
/usr/share/doc/percona-xtrabackup-2.1.4
/usr/share/doc/percona-xtrabackup-2.1.4/COPYING
使用xtrabackup实现完全备份
xtracbackup备份innodb表的时候可以实现热备,但是备份方式比较简单,首先表结构备份的文件是直接复制的,数据文件是通过读取其相应的数据块LSN号(日志序列号)而后再去判断是否需要备份,其完全备份就是从序列号0到目前为止最新的序列号进行备份
而后增量备份的时候会从上一次备份完成或增量备份以来的序列号到当前最新的序列号进行备份的,所以它是通过来扫描每个数据块的日志序列号判定其是否需要备份以及如何进行备份的
完全备份毋庸置疑,每个块都需要备份
增量备份一定是从上一次备份的序列号向后直到更新的序列号的数据块
所以是在物理级别直接备份数据块的
在实现备份的时候会在相关目录下生成以下几个文件:
xtrabackup_checkpoints 检查点文件
·备份类型(如完全或增量)
·备份状态(如是否已经为prepared状态,简单来讲,所备份的数据,不能立即用来恢复,还需要对其做一次将所有的事物日志中的事物已提交的事物进行同步至数据文件,将未提交的事物进行回滚,这个过程被称为预处理过程,因此备份处理的数据如果没有做好预