一、XtraBackup简介与安装

  XtraBackup是一款免费的在线开源数据库备份解决方案,适用于所有版本的MySQL和MariaDB。XtraBackup支持对InnoDB热备,是一款物理备份工具。可对数据库做完全备份、部分备份、增量备份、差异备份。

1.备份的实现原理

  InnoDB存储引擎是基于表空间(table space)进行存储的,表空间中被分成多个块(盘区),将数据分散存储至这些盘区中,每个盘区都有自己的编号,每当数据修改一次,日志序列号就增加1。在完全备份时,是将所有的盘区进行一次物理备份,而增量备份则是根据被修改的盘区号所导致的epoch变化选择性备份相对完全备份所被修改的盘区。例如下图中为某个数据库InnoDB引擎的盘区,完全备份是将1-5盘区全部备份,后来数据库被修改了,修改的数据是盘区1和3的数据,做增量备份时会将1和3号盘区进行备份。在做还原时会先还原完全备份中的1-5,再还原增量中的1和3。

  需要注意的是,在XtraBackup中,是将完全备份和所有的增量合并之后才进行对数据库还原操作的,不是在还原时合并的,是在还原之前就将所有数据合并好。

2.XtraBackup的安装

  Percona官方站点安装:https://www.percona.com/downloads/XtraBackup/LATEST/

  下载完成后安装,用yum安装会自动安装依赖包:

~]# yum install percona-xtrabackup--2.4.-.el7.x86_64.rpm percona-xtrabackup-test--2.4.-.el7.x86_64.rpm
 ~]# rpm -ql percona-xtrabackup-
/usr/bin/innobackupex #主程序,核心组件,一般都是用这一工具进行备份
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream #流式化工具,将数据流式化处理,便于传输保存
/usr/bin/xtrabackup
/usr/share/doc/percona-xtrabackup--2.4.
/usr/share/doc/percona-xtrabackup--2.4./COPYING
/usr/share/man/man1/innobackupex..gz
/usr/share/man/man1/xbcrypt..gz
/usr/share/man/man1/xbstream..gz
/usr/share/man/man1/xtrabackup..gz

二、XtraBackup功能演示

  上面已经介绍了XtraBackup支持增量备份的核心组件是LSN(日志序列号)。在恢复前需要先进行合并操作。

1.全量的备份

  全量备份格式:

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

  选项:

--no-timestamp :保存的备份目录不加时间戳

--defaults-file=/tmp/other-my.cnf :配置文件路径

/path/to/BACKUP-DIR/ :指明将备份存储在哪个目录

2.全量的恢复

  全量恢复前需要先做Preparing,将备份本身的事务按实际情况做回滚或提交:

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

--apply-log :根据事务日志判断哪些该提交哪些该回滚

  然后执行:

innobackupex --copy-back BASE-DIR #BASE-DIR为备份的路径

3.增量的备份

  增量备份需要基于全量备份来实现,在第一次做增量备份时指令中需要制定基于哪一个全量备份来做增量备份,之后的增量备份则都要基于上一次的增量备份来做,而差异备份则每一次都是基于全量备份,如图:

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

--incremental /data/backups :指明增量备份保存的路径

--incremental-basedir=BASEDIR :指明增量备份基于哪一个全量备份

  每一次备份后XtraBackup会保存一个文件,在这个文件中记录了,备份的类型、LSN的起始点和结束点。例:

 backup_type = full-backuped
from_lsn =
to_lsn =

4.增量的恢复

  在还原全量+增量时,全量有事务日志被备份,增量也有事务日志被备份,这时需要将全量中的已提交(COMMITED)的事务做还原,而未提交的部分不用做处理,待与增量中的事务合并后在进行回滚,因为全量中的事务可能在增量中有变化。

  先对全量操作,:

innobackupex --apply-log --redo-only BASE-DIR

--redo-only :只恢复事务中已提交的

  再对增量操作,将全量与增量合并:

innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR2

  最后进行一次回滚:

innobackupex --apply-log BASE-DIR

  还原:

innobackupex --copy-back BASE-DIR

  查看innobackupex指令帮助:

innobackupex --help

XtraBackup的备份原理与应用示例的更多相关文章

  1. 从源码分析 XtraBackup 的备份原理

    MySQL物理备份工具,常用的有两个:MySQL Enterprise Backup 和 XtraBackup. 前者常用于MySQL企业版,后者常用于MySQL社区版.Percona Server ...

  2. mysqldump和xtrabackup备份原理实现说明

    背景: MySQL数据库备份分为逻辑备份和物理备份两大类,犹豫到底用那种备份方式的时候先了解下它们的差异: 逻辑备份的特点是:直接生成SQL语句,在恢复的时候执行备份的SQL语句实现数据库数据的重现. ...

  3. MariaDB/MySQL备份和恢复(三):xtrabackup用法和原理详述

    本文目录: 1.安装xtrabackup 2.备份锁 3.xtrabackup备份原理说明 3.1 备份过程(backup阶段) 3.2 准备过程(preparing阶段) 3.3 恢复过程(copy ...

  4. Percona XtraBackup 备份原理说明【转】

    本文来自:http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MyS ...

  5. MySQL · 物理备份 · Percona XtraBackup 备份原理

    http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据 ...

  6. Percona XtraBackup 备份原理

    前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server 和 ...

  7. XtraBackup完整备份与增量备份的原理

    MySQL数据库实现备份的操作包括完整备份和增量备份等,本文我们主要介绍一下增量备份和完整备份的原理,接下来我们就一起来了解一下这部分内容. 完整备份的原理: 对于InnoDB,XtraBackup基 ...

  8. XtraBackup 备份原理

    来着淘宝技术: http://mysql.taobao.org/monthly/2016/03/07/ https://github.com/alibaba/AliSQL 前言 Percona Xtr ...

  9. mysqldump+mydumper+xtrabackup备份原理流程

    mysqldump备份原理 备份的基本流程如下: 1.调用FTWRL(flush tables with read lock),全局禁止读写 2.开启快照读,获取此时的快照(仅对innodb表起作用) ...

随机推荐

  1. Oracle中为表设置自动增长的标识列

    -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 increment ...

  2. SpringMVC学习笔记:拦截器和过滤器

    首先说明一下二者的区别: 1. 拦截器基于java的反射机制,而过滤器是基于函数回调 2. 拦截器不依赖于servlet容器,过滤器依赖servlet容器 3. 拦截器只能对action请求起作用,而 ...

  3. 归并排序(递归排序and外排排序)

    分析: /** * 归并排序 (先将数组利用归并排序排成 有序的左边数组和右边数组,再比较左边数组和右边数组的数值大小进行排序) * */ public class MergeSort { publi ...

  4. centos7 安装搜狗输入法

    1.root权限,卸载 ibus : yum remove ibus 2.加入EPEL源   sudo yum install epel-release 3.添加mosquito-myrepo源 su ...

  5. 在linux中文件的权限讲解

    1.d:directory(目录): 表示这个文件是个目录,其他的还有f(file文件)等等: 2.r:read(可读) 3.w:write(可写) 4 x :execute(可执行) 一般Linux ...

  6. PC平台在Unity3D中播放硬盘ogg,mp3,wav文件

    Unity3D PC平台本身是支持直接用www读取本地ogg,wav的,但是并不能读取byte[],字节数组格式,这对用习惯了bass,fmod的人来说有点不方便. 搜了一圈发现了一个C#的音频库叫N ...

  7. 原生js获取元素的子元素

    //使用firstChild //但是下面这种因为有空格,也算其子元素 <lable> <span id="onlinePerson" name="pe ...

  8. 给uniGUI的表格控件uniDBGrid加上记录序号的列

    uniDBGrid使用起来还是很方便的,但就是没有显示记录序号的功能,必须自己加,参照老外给的解决方案如下: 方案1: 1- 在UniDBGrid建一个第一列 (列的名字起“NO”) 2- 在 Uni ...

  9. 2019-4-25 html学习笔记

    一.概念 文本   用于储存和记录文字信息的载体 html  超文本标记语言(本质就是给文本增加语义 如<h1></h1>就是给文字添加一级标题的语义) 注:互联网三大基石 有 ...

  10. 47_并发编程-线程python实现

    一.Threading模块   1.线程的创建 - 方式一 from threading import Thread import time def sayhi(name): time.sleep(2 ...