xtrabackup备份原理以及工作流程

备份流程日志分析:
1.##读取mysql配置文件
2.## 扫描innodb日志lsn并复制inndodb系统表空间
3.## 缓冲写出到数据文件并锁表
4.## 开始复制非innodb表及相关文件
5.## 结束复制非innodb表及相关文件
6.## 强制将commit log刷新到redo,保证事务是完整的
7.## 获取最新的lsn
8.## 释放锁
9.## 列出备份位置
10.## 列出binlog的位置
11.##备份mysql配置文件
11.##备份结束

备份原理

InnoDB引擎很大程度上与Oracle类似,使用redo,undo机制,XtraBackup在备份的时候,以read-write模式打开innodb的数据文件,然后对其进行复制。与此同时,XtraBackup还有另外一个线程监视着transactions log,一旦log发生变化,就把变化过的log pages复制走,直到全部innoDB数据文件复制完成之后,停止监控log buffer及日志复制。如果log buffer没有及时写出将被日志的循环写特性覆盖。xtrabackup在启动时会记住log sequence number(LSN),然后一页一页地复制InnoDB的数据。

xtrabackup在恢复期间对提交的事务前滚,未提交或失败的事务进行回滚,从而保证数据的一致性。因此对于InnoDB表在备份期间不会锁表。由于XtraBackup其内置的InnoDB库打开文件的时候是rw的,所以运行XtraBackup的用户,必须对InnoDB的数据文件具有读写权限。

补充:
在备份innodb page的过程中,XtraBackup每次读写1MB的数据,1MB/16KB=64个page。这个不可配置。读1MB数据之 后,XtraBackup一页一页地遍历这1MB数据,使用innodb的buf_page_is_corrupted()函数检查此页的数据是否正常, 如果数据不正常,就重新读取这一页,最多重新读取10次,如果还是失败,备份就失败了,退出。在复制transactions log的时候,每次读写512KB的数据。同样不可以配置。

安装和使用

一:安装依赖关系
1.rpm -qa |grep xtrabackup
2.wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
下载软件包并安装
3.wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
4.yum -y install percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
二:全量备份、恢复

创建备份目录 backup
全量备份:
xtrabackup --backup --target-dir=/dbdata/backup/ --user=root --password='!QAZ1qaz123' --host=127.0.0.1
全量恢复:
xtrabackup --prepare --target-dir=/dbdata/backup/      --数据保持一致性
mv data data_bak
xtrabackup --copy-back --target-dir=/dbdata/backup/ --配置文件定义data目录可以这样执行,会自动生成一个data目录,修改属主,属组后可启动数据库
三:增量备份、恢复
先做一个全量备份
xtrabackup --backup --target-dir=/dbdata/backup/base --user=root --password='!QAZ1qaz123' --host=127.0.0.1
第一次增量
xtrabackup --backup --target-dir=/dbdata/backup/inc1 --incremental-basedir=/dbdata/backup/base --user=root --password='!QAZ1qaz123' --host=127.0.0.1
第二次增量
xtrabackup --backup --target-dir=/dbdata/backup/inc2 --incremental-basedir=/dbdata/backup/inc1 --user=root --password='!QAZ1qaz123' --host=127.0.0.1

增量恢复
先执行数据一致性 prepare 注释:--apply-log-only 只恢复已提交的数据
prepare全量备份
xtrabackup --prepare --apply-log-only --target-dir=/dbdata/backup/base
prepare第一次增量
xtrabackup --prepare --apply-log-only --target-dir=/dbdata/backup/base --incremental-dir=/dbdata/backup/inc1
prepare第二次增量
xtrabackup --prepare --target-dir=/dbdata/backup/base --incremental-dir=/dbdata/backup/inc2
prepare完成后,进行恢复
xtrabackup --copy-back --target-dir=/dbdata/backup/base

注:执行这步时会根据配置文件自动创建一个数据目录,需修改属主属组方可启动数据库,至此增量恢复完成

xtrabakcup基本用法 安装、全量备份恢复、增量备份恢复的更多相关文章

  1. Centos 6.9 安装xtrabackup-2.4.8 通用包,yum安装,全量备份,增量备份

    xtrabackup-2.4.8的安装及使用 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备 ...

  2. xtrabackup实现全量备份和增量备份

    mysql增量和完全备份innobackupex2.1.9版本1 yum安装: 官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/i ...

  3. [ Mongodb ] 全量备份和增量备份

    1. 前言 由于线上的mongodb 数据体量越来越大,如果没有完善的备份方案,发生故障势必造成业务很长时间的暂停.参考了网上方案,写出以下总结和备份方案: 备份方案分为两种:全备和增量备份,二者结合 ...

  4. 【运维实战】利用tar -g 实现简单全量备份和增量备份(带演示)

    备份产生 全量备份指完全备份,增量备份指针对上次至今的修改进行备份.linux提供tar -g可实现备份功能. 第一次运行 tar -g 备份存放目录/snapshot -czvf  备份存放目录/备 ...

  5. mysql的全量备份与增量备份

    mysql的全量备份与增量备份 全量备份:可以使用mysqldump直接备份整个库或者是备份其中某一个库或者一个库中的某个表. 备份所有数据库:[root@my ~]# mysqldump -uroo ...

  6. VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案

    目录 目录 前文列表 全量备份数据的获取方式 增量备份数据的获取过程 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDiskLib/VADP 概念简析 VMware 虚拟化编 ...

  7. mysql全量备份与增量备份

    mysql全量备份与增量备份   1.全量备份 全量备份就是把数据库中所有的数据进行备份. 备份所有库: mysqldump -uroot -p456 -S /data/3306/mysql.sock ...

  8. Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

    原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对In ...

  9. Percona备份mysql全库及指定数据库(完整备份与增量备份)

    Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份) Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对I ...

  10. MySQL集群-PXC搭建以及使用innobackupex工具进行全局备份和增量备份

    环境:centos7 vm1:10.154.47.236 vm2:10.154.52.189 vm3:10.105.12.50 目的:pxc使用三个节点构建mysql集群,使用innobackupex ...

随机推荐

  1. burp中获取token进行暴力破解

    选中线程设成1

  2. 彻底理解Hive中的锁

    前面遇到过一次因为Hive中表被锁住了,导致定时任务一直失败.这两天又出现了表被锁,原因是连接hiveserver2过于频繁,mysql连接被打满,引发的连锁反应,导致我们的小时任务一直失败,下午重点 ...

  3. LightningChart解决方案:XY和3D图表(Polymer Char GPC-IR®-工程案例)

    LightningChart解决方案:XY和3D图表(Polymer Char GPC-IR-工程案例) 所在行业:石化公司成立时间:1992年LightningChart解决方案:XY和3D图表 P ...

  4. Python的精髓居然是方括号、花括号和圆括号!

    和其他编程语言相比,什么才是Python独一无二的特色呢?很多程序员会说,缩进.的确,缩进是Python语言的标志性特点,但这只是外在的.形式上的.从语言特性层面讲,Python的特点是什么呢?我尝试 ...

  5. C# 数组 ArrayList List<T>区别

    System.Collenctions和System.Collenctions.Generic 中提供了很多列表.集合和数组.例如:List<T>集合,数组Int[],String[] . ...

  6. 任务调度框架Quartz快速入门!

    目录 Quartz是什么 Quartz中的重要API及概念 超重要API 重要概念 Quartz设计理念:为什么设计Job和Trigger? 最简单的Quartz使用案例 Job实例和JobDetai ...

  7. 201326JJ

    学期(如2020-2021-1) 学号(如:20201326) <信息安全专业导论>第四周学习总结 作业信息 这个作业属于哪个课程 (https://edu.cnblogs.com/cam ...

  8. postgresql 创建分表

    划分指的是将逻辑上的一个大表分成一些小的物理上的片.划分有很多益处: 1.在某些情况下查询性能能够显著提升,特别是当那些访问压力大的行在一个分区或者少数几个分区时.划分可以取代索引的主导列.减小索引尺 ...

  9. [leetcode350]Intersection of Two Arrays II求数组交集

    List<Integer> res = new ArrayList<>(); Arrays.sort(nums1); Arrays.sort(nums2); int i1 = ...

  10. stm32之can总线过滤器研究

    stm32的can总线的配置如下:       CAN_InitStructure.CAN_TTCM=DISABLE;//禁止时间触发通信模式      CAN_InitStructure.CAN_A ...