innobackupex使用详解

innobackupex实际上是percona-xtrabackup的perl整合脚本,功能当然更强大一些.

xtrabackup备份实际上是在线的物理热备,为什么和么说呢,因为实际上他是以拷贝mysql物理文件来备份的方式,只是加入了一些锁和钩子来避免数据缺失,优势当然就是快了,物理拷贝始终是速度最快的备份方式,缺点就是占用空间大.

备份原理很多文章有写,重点在于备份初期会创建一个redo的钩子,让在备份期间产生的数据都能记录下来,而备份数据文件时也会锁一下表,这样数据就会更完整.

安装方法在另一篇文章已经说了,就不多说了,下面直接介绍使用方法和一些参数说明.

xtrabackup支持全备和增备,但是我个人不建议用增备,因为增备效果不怎么样,而且直接拷贝binlog其实也挺好用,所以全备+binlog就可以了.

全备命令:

/usr/bin/innobackupex --defaults-file=$cnfdir --user=root --password=$pwdr --host=$hosts --parallel=4 --throttle=400 --stream=tar  $backupdir 2>$backupdir/backtip.log |gzip >$backupdir/$backname.tar.gz

其中

--defaults-file                备份数据库的配置文件my.cnf的路径

--user=root                  备份操作用户名,一般都是root用户,但可以改 
--password=$pwdr                密码
--host=$hosts                主机ip,本地可以不加,ssh传输,要开放端口
--parallel=4                  并行个数,根据主机配置选择合适的,默认是1个,多个可以加快备份速度。

--throttle=400                io限制数,一般来说并行能增加速度,但是IO也高,限制能减少影响

--stream=tar                  压缩类型,这里选择tar格式,好像也只能是tar
$backupdir                  备份存放的目录
2>$backupdir/backtip.log            备份日志,将备份过程中的输出信息重定向到log
|gzip >$backupdir/$backname.tar.gz       备份文件后用管道再压缩,最后成为一个压缩文件,减少占用空间

如果是从库,还可以加从库参数

--slave-info                                    备份目录下会多生成一个xtrabackup_slave_info 文件,
这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE=‘‘,
MASTER_LOG_POS=0

完成备份后出现

innobackupex: completed OK!

就是完成了.

而用他来恢复数据,需要走三部

恢复第一步:应用日志。
innobackupex --user=root --password=**** --defaults-file=****/my.cnf --apply-log --use-memory=4G /backup/****
恢复第二步:拷贝文件。
innobackupex --user=root --password=**** --defaults-file=****/my.cnf --copy-back /backup/****

其中

--defaults-file=/etc/my.cnf     恢复会使用my.cnf文件把需要恢复的文件,恢复到my.cnf指定的位置。
--apply-log             这是备份时产生的日志,
--copy-back             这是备份源,解压后的备份文件。

--use-memory=4G                    为了加快恢复速度,设置可用内存参数

看到

Finished copying back files.

数据还原就完毕了

恢复第三步:修改文件权限。

因为恢复回去未必是原本mysql:mysql的权限,所以要改一下

cd 到data目录
chown -R mysql.mysql data/

最后/etc/init.d/mysqld start

虽然我并不推荐增量备份,但是还是记一下

增量备份的方法:

增量备份需要基于全备,先假设我们已经有了一个全备(/backup/mysql-data/2016-05-10_09),在该全表的基础上做增量备份。

innobackupex --defaults-file=/****/my.cnf --user=root --password=*** --incremental-basedir=/backup/mysql-data/2016-05-10_09 --incremental /backup/mysql-data

其中

--incremental-basedir            指向全备目录,

--incremental                         指向增量备份的目录。

上面语句执行成功之后,会在--incremental执行的目录下创建一个时间戳子目录,在该目录下存放着增量备份的所有文件。在备份目录下,有一个文件xtrabackup_checkpoints记录着备份信息,全备的信息如下:

[plain]

backup_type = full-backuped

from_lsn = 0

to_lsn = 563759005914

last_lsn = 563759005914

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

[plain]

backup_type = incremental

from_lsn = 563759005914

to_lsn = 574765133284

last_lsn = 574765133284

从上面可以看出,增量备份的from_lsn正好等于全备的to_lsn。

而且还可以在增量备份的基础上再做增量备份

innobackupex --defaults-file=/*****/my.cnf --user=root --password=*** --incremental-basedir=/backup/mysql-data/2016-05-10_09 --incremental /backup/mysql-data

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

[plain]

backup_type = incremental

from_lsn = 574765133284

to_lsn = 574770200380

last_lsn = 574770200950

可以看到,该增量备份的from_lsn是从上一次增量备份的to_lsn开始的。

增量备份的恢复比全备要复杂很多,第一步是在所有备份目录下重做已提交的日志

增量备份的恢复比全备要复杂很多,第一步是在所有备份目录下重做已提交的日志,如:

[plain]

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(即全备目录)下。

第一步完成之后,我们开始第二步:回滚未完成的日志:

[plain]

innobackupex --apply-log BASE-DIR

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

[plain]

innobackupex --copy-back BASE-DIR

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

时间: 2024-08-15 22:53:42

innobackupex使用详解的相关文章

xtrabackup备份工具使用详解

xtrabackup备份工具使用详解 innobackupex: 需要MySQL服务处于运行状态 [percona]下载 wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.8/RPM/rhel6/x86_64/percona-xtrabackup-2.1.8-733.rhel6.x86_64.rpm wget https://www.percona.com/downloads/percona-toolkit/2.2.

MySQL 备份与还原详解

相关阅读: MySQL备份和恢复具体实施 http://www.linuxidc.com/Linux/2012-12/76257.htm MySQL备份与恢复的三种方法总结 http://www.linuxidc.com/Linux/2012-12/75428.htm MySQL备份还原(视图.存储过程) http://www.linuxidc.com/Linux/2012-01/52665.htm 一.MySQL备份类型 1.热备份.温备份.冷备份 (根据服务器状态) 热备份:读.写不受影响:

(转)MySQL备份原理详解

MySQL备份原理详解 原文:http://www.cnblogs.com/cchust/p/5452557.html 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间.这篇文章主要讨论MySQL的备份方案,重点介绍几种备份方式的原理,包括文件系统快照(LVM),逻辑备份工具M

MySQL数据库备份详解

原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据可能也已经被删除了, 我们不能使用从数据库上的数据来恢复主数据库上的数据,只能通过备份进行误删除数据的恢复 一. 备份的分类 1.按备份的结果来分: 逻辑备份 其备份结果为SQL语句,适合于所有存储引擎,恢复时需要较多时间,逻辑备份时,对于MyISAM存储引擎是需要进行锁表操作的,通过使用的mysq

Spring事务管理(详解+实例)

写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都

转载:DenseNet算法详解

原文连接:http://blog.csdn.net/u014380165/article/details/75142664 参考连接:http://blog.csdn.net/u012938704/article/details/53468483 本文这里仅当学习笔记使用,具体细节建议前往原文细度. 论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdf 代码的github链接:h

MariaDB(MySQL)创建、删除、选择及数据类型使用详解

一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL A

HttpServletResponse和HttpServletRequest详解

HttpServletResponse,HttpServletRequest详解 1.相关的接口 HttpServletRequest HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据.同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息.下表是接口HttpServletRequest的常用方法. 说明:HttpServ

POSIX 线程详解(经典必看)

总共三部分: 第一部分:POSIX 线程详解                                   Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  2000 年 7 月 01 日 第二部分:通用线程:POSIX 线程详解,第 2部分       Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  20