xtrabackup使用方法简介

关于xtrabackup的简介就不再赘述,百度一堆,使用方法也说明也很多。感觉还是只有自己试过之后才能有更深刻的认识,以下的使用说明基于官方文档及自己试验过程,记录下备查。

安装:

去percona-xtrabackup官网上下载,有rpm包、tar包,也有解压直接可用的二进制包。我试验采用的二进制包。

由于里面的innobackupx命令实际上是用perl语言封装了xtrabackupx而成,所以使用innobackupx命令要先检查perl包以及其依赖包的安装情况。

可以执行yum install prel perl-DBD perl-Time-HiRes 解决关于perl的报错。

备份有全库备份、部分备份、全量备份、增量备份以及压缩备份等方式。

全库备份指备份数据目录下的所有库;部分备份指备份指定的库/表;全量和增量不在赘述。

备份权限问题:如果以root之外的用户执行备份,备份用户需要有一下权限:

RELOAD and LOCK TABLES (unless the --no-lock option is specified) in order to FLUSH TABLES WITH READ LOCK prior to start copying the files and
REPLICATION CLIENT in order to obtain the binary log position,
CREATE TABLESPACE in order to import tables (see Restoring Individual Tables) and
SUPER in order to start/stop the slave threads in a replication environment.

my.cnf文件里面必须指定datadir=xxx,innobackupx会从这里获知数据目录的路径。

全库全量备份

innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR

并注意观察输出的最后一行,有“complete ok”才算成功。程序会在备份目录下创建一个以当前时间戳为名的目录存储备份的文件。

如果mysql配置文件不在默认目录(/etc,/datadir/)下,需要通过以下方式告知程序my.cnf的路径

innobackupex --defaults-file=/tmp/other-my.cnf --user=DBUSER --password=DBUSERPASS /path/to/BACKUP

并且--defaults-file必须作为第一个选项

恢复分为两个步骤:准备阶段----恢复阶段

innobackupx备份完之后的数据时不能直接恢复使用的,因为拷贝数据文件的同时,还会有事务提交或回滚,xtrabackup通过一个额外的线程记录拷贝过程中binlog日志中的变化,并在“准备”阶段通过将日志中的改变应用到备份文件中来保证备份文件的数据一致性。

  准备阶段:

执行

innobackupex --apply-log /path/to/BACKUP-DIR

另外可以通过使用--use-memory=xx 选项来加速此过程,例如

innobackupex --apply-log --use-memory=4G /path/to/BACKUP-DIR

此过程执行完,看到最后提示“complete ok”说明已经将日志中记录的的改变应用到备份文件中。

  恢复阶段:

关闭mysql,清空datadir(注意:mysql的datadir在恢复过程中必须确保是空的,否则执行不成功),

innobackupex --copy-back /path/to/BACKUP-DIR

提示“complete ok”之后,就可以启动数据库了。注意:在启动数据库前要注意修改数据目录权限,以确保mysql对于数据的可读性。

特定库/表备份

对于特定库/表的备份,官方文档给出了三种方法

--include=‘正则表达式‘    例如 --include=‘^ljk‘只备份ljk库,在备份目录里还会有其他库的目录,但都是空的

--tables-file=文件   该文件中应该包含database.table形式的内容,每行一个表,注意:ljk.*是不生效的。

--databases=‘库名[.表名]‘  多个库中间以空格隔开,此选项还不完善,官方文档也说明了:此选项只对.frm文件和非innodb表有效,对于InnoDB表即使指定了数据库,仍然会备份所有的库。

恢复过程:执行

innobackupex --apply-log  /path/to/partial/backup

成功后关闭数据库,将制定库/表的备份文件cp至数据目录下即可,记得修改权限。

增量备份

思路:先做全量备份,之后按照下面命令执行增备

innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR

innobackupex --incremental /data/backups --incremental-basedir=BASEDIR

恢复过程:

思路:将各个增量备份的数据文件合并到最初的全量备份的目录下,最终是从全量备份这个目录下恢复数据。假如现在有一个全量三个增量的备份

innobackupex --apply-log --redo-only BASE-DIR   注意;此处增加了--redo-only

innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1(第一个增量的目录)

innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-2(第二个增量的目录)

innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-3  (注:最后一个增量目录不需要加--redo-only选项)

注:“准备”程中,增量备份的路径需要些绝对路径,试验时写相对路径不成功

如果以上都执行成功,则可以继续下一步

innobackupex --apply-log BASE-DIR   将记录在日志里的改变应用的数据中,确保数据一致性。

然后可以向全量备份一样执行恢复了

innobackupex --copy-back BASE-DIR

附件为2.19版本的官方文档

xtrabackup使用方法简介

时间: 2024-10-12 04:35:34

xtrabackup使用方法简介的相关文章

C#——Marshal.StructureToPtr方法简介

目录 MarshalStructureToPtr方法简介 功能及位置 语法 参数说明 异常 备注 举例 本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一.小鱼)相关研究.学习内容所做的笔记,欢 迎广大朋友指正! 具体可以参考http://msdn.microsoft.com. Marshal.StructureToPtr方法简介 1. 功能及位置 将数据从托管对象封送到非托管内存块,属于.NET Framework 类库命名空间:System.

Datatable的Select()方法简介

DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是 Select() Select(string filterExpression) Select(string filterExpression, string sort) Select(string filterExpression,string sort, DataViewRowSt

$.getJSON( )的使用方法简介

JSON(JavaScript Object Notation)即JavaScript对象表示法,是一种轻量级的数据交换格式.它非常便于编程人员对数据的处理,也便于机器对数据的解析和生成,应用非常广泛. json文件可以保存为"test.json"这样的文件,json数据的一般格式如下("{ }"中的为对象,"[ ]"中的为数组): {"total":3,"rows":[{"userId"

Level Set方法简介

originate from: http://www.cnblogs.com/tabatabaye/articles/891232.html Level Set方法简介: Level Set方法是由Sethian和Osher于1988年提出,最近十几年得到广泛的推广与应用.简单的说来,Level Set方法把低维的一些计算上升到更高一维,把N维的描述看成是N+1维的一个水平.举个例子来说,一个二维平面的圆,如x^2+y^2=1可以看成是二元函数f(x,y)=x^2+y^2的1水平,因此,计算这个

iOS中常用的四种数据持久化方法简介

iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults standardUserDefaults]就够用了 @interface User : NSObject <NSCoding>@property (nonatomic, assign) NSInteger userID;@property (nonatomic,

苍狼敏捷需求用例分析方法简介并讲义下载

作者:张克强    作者微博:张克强-敏捷307 用例分析方法已经有不短的历史,发展出了多种用例分析方法.笔者花费了大量时间,对用例分析的各个方面进行实践和分析,得到如下系列文章: 需求用例分析之一:异常流 需求用例分析之二:级别设置需求用例分析之三:补充规约 需求用例分析之四:业务规则 需求用例分析之五:业务用例之Rational系 需求用例分析之六:业务用例之科伯恩系 需求用例分析之七:业务用例之小结 需求用例分析之八:用例颗粒度 在这些分析的基础上与及笔者的实践,总结整理得到"苍狼敏捷需求

ATAM 方法简介

ATAM  方法简介 1.ATAM 是啥 ATAM 是一种基于场景评估方式,英文全称 Architecture TradeOff Analysis Method ATAM(架构权衡分析法) 2.ATAM评估方法 ATAM 方法对软件架构进行评估的目的主要是 根据系统质量属性和业务需求评估决策结果,ATAM希望揭示出架构满足质量目标,架构设计者能够更清楚的认识到质量目标之间的联系.即如何权衡多个目标 3.ATAM的参与者 开发人员,领域专家,测试人员,客户代表,用户等 4.如何展开评估活动 这里将

delphi fastMM 使用方法简介

delphi fastMM 使用方法简介 在 http://sourceforge.net/projects/fastmm 中可以下载到最新 stable 的 FastMM,当前推荐的是 4.62,主要特点包括: 1.彻底实现了 Borland 的内存管理器,可以完全取代现有的内存管理器("取代"就是第一个 uses FastMM4,that is all ...) 2.实现了内存管理器共享机制,Exe 和 Dll 间共享内存管理器不需要任何 Dll 支持 3.集成了内存泄漏检测功能

FragmentActivity与Fragment两者交互方法简介(转)

FragmentActivity与Fragment两者交互方法简介 分类: Fragment 2014-07-07 18:17 88人阅读 评论(0) 收藏 举报 在Android4.0后很多时候我们会大量使用到Fragment,Fragment与Activity的交互应该来说是非常重要的,但目前很多实例方法都只介绍了Fragment与Activity交互的方法,没有Activity与Fragment交互的方法,下面我来把解决的思路记录如下. 1.首先我需要定义一个公共接口,用于将Fragmen