文档章节

innobackupex在线备份及恢复

韩呵呵哒
 韩呵呵哒
发布于 2016/03/24 03:19
字数 1392
阅读 144
收藏 8

#一、安装 ###1.下载源码: wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.5/source/percona-xtrabackup-2.1.5.tar.gz ###2.安装依赖包: yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel ###3.解压源码包: tar -zxvf percona-xtrabackup-2.1.5.tar.gz cd percona-xtrabackup-2.1.5 ###4.编译安装 目录中的./utils/build.sh脚本会根据指定的引擎版本,自动解压缩适当的MySQL源码包并进行编译,这是最简单的安装方式。 直接执行:

./utils/build.sh

出现如下提示:

[root@test1 percona-xtrabackup-2.1.5]# ./utils/build.sh 
Build an xtrabackup binary against the specified InnoDB flavor.

Usage: build.sh CODEBASE
where CODEBASE can be one of the following values or aliases:
  innodb51         | plugin                build against InnoDB plugin in MySQL 5.1
  innodb55         | 5.5                   build against InnoDB in MySQL 5.5
  innodb56         | 5.6,xtradb56,         build against InnoDB in MySQL 5.6
                   | mariadb100
  xtradb51         | xtradb,mariadb51      build against Percona Server with XtraDB 5.1
                   | mariadb52,mariadb53
  xtradb55         | galera55,mariadb55    build against Percona Server with XtraDB 5.5

根据上面提示和你使用的存储引擎及版本,选择相应的参数即可。因为我用的是MySQL 5.6.28,所以执行如下语句安装

./utils/build.sh innodb56 

以上语句执行成功后,表示安装完成。最后,把生成的二进制文件拷贝到一个自定义目录下(本例中为/var/lib/mysql/percona-xtrabackup-2.1.5),并把该目录放到环境变量PATH中。

cp ./innobackupex /var/lib/mysql/percona-xtrabackup-2.1.5   
cp ./src/xtrabackup_56 ./src/xbstream /var/lib/mysql/percona-xtrabackup-2.1.5  
vim /root/.bashrc (末行加入export PATH=$PATH:/var/lib/percona-xtrabackup-2.1.5/bin/)  
source /root/.bashrc   

#二、全备及其恢复 ###1.全备: 执行如下语句进行全备

innobackupex --defaults-file=/etc/my.cnf --user=admin --password=admin /backup/mysql/data  

该语句将拷贝数据文件(由my.cnf里的变量datadir指定)至备份目录下(/backup/mysql/data),若不指定--defaults-file,默认值为/etc/my.cnf。 备份成功后,将在备份目录下创建一个时间戳目录(本例创建的目录为/backup/mysql/data/2016-03-24_01-14-19),在该目录下存放备份文件。 ###2.恢复:

innobackupex --user=root --password=123456 --apply-log /backup/mysql/data/2016-03-24_01-14-19  
innobackupex --user=root --password=123456 --copy-back /backup/mysql/data/2016-03-24_01-14-19  

从上面可以看出,恢复分为两个步骤,第1步是apply-log,为了加快速度,一般建议设置--use-memory(由于本虚拟机的屌丝配置,所以没有大内存分配给这个命令专用,所有没有加上这个选项),这个步骤完成之后,目录/backup/mysql/data/2016-03-24_00-43-24下的备份文件已经准备就绪。
第2步是copy-back,即把备份文件拷贝至原数据目录下。 恢复完成之后,一定要记得!!检查数据目录的所有者和权限!!是否正确。

#三、增量备份及其恢复
注意:innobackupex 增量备份仅针对InnoDB这类支持事务的引擎,对于MyISAM等引擎,则仍然是全备。

###1.增量备份 增量备份需要基于全备,先假设我们已经有了一个全备(/backup/mysql/data/2016-03-24_01-14-19),在该全表的基础上做增量备份。

innobackupex --user=root --password=123456 --incremental-basedir=/backup/mysql/data/2016-03-24_01-14-19 --incremental /backup/mysql/data  

其中--incremental-basedir指向全备目录,--incremental指向增量备份的目录。
上面语句执行成功之后,会在--incremental执行的目录下创建一个时间戳子目录(本例中为:/backup/mysql/data/2016-03-24_02-30-35),在该目录下存放着增量备份的所有文件。
在备份目录下,有一个文件xtrabackup_checkpoints记录着备份信息,全备的信息如下:

[root@test1 2016-03-24_01-14-19]# more xtrabackup_checkpoints   
backup_type = full-prepared  
from_lsn = 0  
to_lsn = 1665331  
last_lsn = 1665331  
compact = 0  

基于该全备的增量备份的信息如下:

[root@test1 2016-03-24_02-30-35]# more xtrabackup_checkpoints  
backup_type = incremental  
from_lsn = 1665331  
to_lsn = 1673129  
last_lsn = 1673129  
compact = 0   

从上面可以看出,增量备份的from_lsn正好等于全备的to_lsn。
我们还可以在增量备份的基础上再做增量备份,只要把--incremental-basedir执行上一次增量备份的目录即可,如下所示:

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --incremental-basedir=/backup/mysql/data/2016-03-24_02-30-35 --incremental /backup/mysql/data   

它的xtrabackup_checkpoints记录着备份信息如下:

[root@test1 2016-03-24_02-34-28]# more xtrabackup_checkpoints  
backup_type = incremental  
from_lsn = 1673129  
to_lsn = 1673129  
last_lsn = 1673129  
compact = 0  

可以看到,该增量备份的from_lsn是从上一次增量备份的to_lsn开始的。
###2.恢复: 增量备份的恢复比全备要复杂很多,第一步是在所有备份目录下重做已提交的日志,如:

innobackupex --apply-log --redo-only BASE-DIR   
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1  
innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2   

其中BASE-DIR是指全备目录,INCREMENTAL-DIR-1是指第一次的增量备份,INCREMENTAL-DIR-2是指第二次的增量备份,以此类推。
这里要注意的是:最后一步的增量备份并没有--redo-only选项!还有,可以使用--use_memory提高性能。 以上语句执行成功之后,最终数据在BASE-DIR(即全备目录)下。 第一步完成之后,我们开始第二步:回滚未完成的日志:

innobackupex --apply-log BASE-DIR   

上面执行完之后,BASE-DIR里的备份文件已完全准备就绪,最后一步是拷贝:

innobackupex --copy-back BASE-DIR   

同样地,拷贝结束之后,记得检查下数据目录的权限是否正确。

#四、常见错误及解决方法 ###错误1: 出现"Can't locate Time/HiRes.pm in @INC"错误提示无法进行,检测是出现缺少perl Time HiRes组件造成的 解决方法:

yum -y  install perl-Time-HiRes  

###错误2:
innobackupex: Error: Original data directory '/var/lib/mysql' is not empty! at /var/lib/percona-xtrabackup-2.1.5/bin/innobackupex line 2098.报错
解决方法:

清空/var/lib/mysql/这个目录  

参考文章:http://blog.csdn.net/heizistudio/article/details/23937935

© 著作权归作者所有

下一篇: MySQL-备份
韩呵呵哒
粉丝 2
博文 11
码字总数 13640
作品 0
数据库管理员
私信 提问
Percona XtraBackup备份mysql数据库 技术手册

作者: 沈小然 版本: 文档编号: 日期:2016年 6月 14日 1 介绍Percona XtraBackup软件 Xtrabackup是由percona开发的一个开源软件,代替商业付费软件MySQL Enterprise Backup (InnoDB Hot B...

LionelShen
2016/06/14
454
0
mysql系列之6--------使用第三方工具-percona来备份mysql和恢复

使用第三方工具来备份mysql-----percona 一、前期准备工作: 1、安装依赖包:yum -y install perl-Digest-MD5 perl-DBD-MySQL rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm 2、安装主包: perc...

bentian1208
2018/10/29
0
0
innobackupex在线备份及恢复

[MySQL] innobackupex在线备份及恢复(全量和增量) 安装 首先,通过wget下载源码tar包: [plain] wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/source/percona-xtrabac......

rewiner22
2018/06/26
0
0
使用innobackupex在线增量备份及恢复mysql数据库

这几天一直在研究mysql备份这一块,前几天由于手误对线上生产数据库造成误操作,虽然没有太大影响,但是为了把风险度降到最低,因此最近一直在倒腾mysql的在线热备份,在线热备份有免费开源的,也...

devilangel
2014/03/12
0
0
Mysql数据库备份与恢复--Xtrabackup

Mysql数据库备份与恢复 背景: 作为一个运维工程师,经常会遇到硬件故障(冗余)、软件故障(bug)、自然灾害、黑客攻击、误操作等对数据库破坏的问题,所以一定要做好备份工作,在做好备份后...

657188918
2017/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS3

一.复杂选择器 1.兄弟选择器 具备相同父级元素的平级元素之间称为兄弟元素 注意:兄弟选择器,只能往后,不能往前找 (1).相邻兄弟选择器,获取紧紧挨着某元素后面的兄弟元素 选择器1+选择器2...

wytao1995
13分钟前
1
0
Jmeter录制

1. 加HTTP(s) Test Script Recorder 2. 在 recorder下面加reocrding controller 3. 在HTTP(s) Test Script Recorder中设置下面几项 4. browser设置proxy, 注意端口要和step3中jmeter中的一致......

Rebecca_Hu
18分钟前
3
0
DIV+CSS忽悠前端小白

在大约两年前,DIV+CSS是一对很诱人的组合,会用DIV+CSS制作网页的人,常常会被人赞以大拇指的,记得06年初的时候,我用 div+css布局的一个纯静态网站还拿了学校网页设计比赛的一个奖。 今天...

前端老手
21分钟前
3
0
Win10子系统 linux(Ubuntu18.04) 安装Docker

1)原文件备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2)编辑源列表文件 sudo vim /etc/apt/sources.list 3)将原来的列表删除,添加如下内容(中科大镜像源) deb http...

jxldjsn
23分钟前
3
0
Ubuntu16.04安装Qt5.12.2

Ubuntu16.04安装Qt5.12.2 第一步:下载文件 https://download.qt.io/official_releases/qt/5.12/5.12.2/ 第二步:安装依赖库 sudo apt-get install build-essential sudo apt-get install li......

shzwork
29分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部