xtrabackup安装使用说明

Posted on 2017-03-14 15:04  ms_xie  阅读(238)  评论(0编辑  收藏  举报

软件介绍:
Percona XtraBackup是一块开源且免费的对MySQL Innodb存储引擎备份数据的工具,使用此工具的时候不需停止MySQL,而且支持压缩备份,支持对Innodb存储引擎做增量备份,对MYISAM存储引擎做完全备份,并且支持流备份。
使用innobakupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配置信息相关的文件。这些文件会被保存至一个以时间命令的目录中。
在备份的同时,innobackupex还会在备份目录中创建如下文件:
(1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
(3)xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。
(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;
(5)backup-my.cnf —— 备份配置文件

软件安装:
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

yum install xtrabackup

使用说明 :
备份分为全量和增量备份,每一次增量备份在全量备份之后,多个增量恢复必须要恢复之前的增量备份数据

软件使用:
mkdir -pv /root/xtarbackup-mysql/backup/

{fullbackup,incremental}

#fullbackup 存放全备份数据
#incremental 存放增量备份数据

2. 全量备份
innobackupex --user=root --password=123456 /root/xtarbackup-mysql/backup/fullbackup/

#最后出现“150415 16:30:23 innobackupex: completed OK!”

[root@iZ25wfe9trfZ backup]# cat fullbackup/2015-05-14_16-29-01/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1622420443 ######注意这个值
last_lsn = 1622420443
compact = 0

3.第一次增量:
[root@iZ25wfe9trfZ backup]# innobackupex --user=root --password=123456 --incremental /root/xtarbackup-mysql/backup/incremental/ --incremental-basedir=/root/xtarbackup-mysql/backup/fullbackup/2015-05-14_16-29-01/
出现150514 16:31:20 innobackupex: completed OK! 操作成功
说明:
--incremental /root/xtarbackup-mysql/backup/incremental/ ###增量目录
--incremental-basedir=/root/xtarbackup-mysql/backup/fullbackup/2015-05-14_16-29-01/ ###全备的文件夹

[root@iZ25wfe9trfZ backup]# cat incremental/2015-05-14_16-31-09/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1622420443 #####这个值是全备值
to_lsn = 1622629087 ##将会出现在下一次增备文件里面
last_lsn = 1622660091
compact = 0

4.第二次增量
[root@iZ25wfe9trfZ backup]# innobackupex --user=root --password=123456 --incremental /root/xtarbackup-mysql/backup/incremental/ --incremental-basedir=/root/xtarbackup-mysql/backup/incremental/2015-05-14_16-31-09/
说明:--incremental-basedir=/root/xtarbackup-mysql/backup/incremental/2015-05-14_16-31-09/ ##第一次增备的值
[root@iZ25wfe9trfZ backup]# cat incremental/2015-05-14_16-35-53/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1622629087 ###第一次增备的to_lsn值
to_lsn = 1623192968
last_lsn = 1623200974
compact = 0

数据恢复:
xtrabackup一般拿来做机器的热备,防止线上数据丢失所以在另外一台不使用的机器上。恢复的时候mysql的var要清空数据或者mv,
然后chown -R mysql:mysql var权限
恢复数据原理是将所有的增量备份数据跟全备集合。按照你的恢复点操作,如果你要恢复第一次增量数据 那么需要恢复全备和增倍
恢复第三个增倍那么需要恢复全备增倍1增备2
比如从增量2恢复:

全备恢复:
innobackupex --apply-log --redo-only /root/xtarbackup-mysql/backup/fullbackup/2015-05-14_16-29-01/
增备1恢复:
innobackupex --apply-log --redo-only /root/xtarbackup-mysql/backup/fullbackup/2015-05-14_16-29-01/ --incremental-dir=/root/xtarbackup-mysql/backup/incremental/2015-05-14_16-31-09
增备2恢复:
innobackupex --apply-log --redo-only /root/xtarbackup-mysql/backup/fullbackup/2015-05-14_16-29-01/ --incremental-dir=/root/xtarbackup-mysql/backup/incremental//2015-05-14_16-35-53

最后一步恢复操作:
innobackupex --copy-back /root/xtarbackup-mysql/backup/fullbackup/2015-05-14_16-29-01/