常用命令

innobackupex --defaults-file=/data/mysql_3306/my.cnf --no-timestamp --slave-info --compress --compress-threads=2 --parallel=4 --user automng --host=127.0.0.1 --port=3358 --password Automng_123 /export/bak/d01

O_DIRECT,绕过缓冲区高速缓存,直接IO,OS级命令

更多参考:UNIX高级环境编程(14)文件IO - O_DIRECT和O_SYNC详解

涉及到的mysql理论绘制成一张图

 LSN

每个事务都会有一个LSN,系统文件上每个redo block 512bytes
log sequence number      每个事务生成一条日志记录时分配一个LSN
log flushed up to              innodb buffer pool日志刷新到redo log的LSN
pages flushed up to         redo log 向redo log文件中刷新的LSN,日志落盘
last checkpoint at             已经持久化到磁盘的脏块对应事务的LSN,数据落盘
 
 
LSN与事务xid
 
LSN是指的生成的字节数,是一个物理大小的概念,它的大小表示生成的事务占了多大物理空间;也可以通过LSN的大小去判断数据库内部操作的先后顺序,比如上面的四个步骤,先生成LSN,然后是将redo log写入文件,最后是脏块落盘;
这个顺序是绝对自增的,尽管事务之间有并发,但日志是顺序写的,换言之,数据库一次只写一个日志文件,这个日志的物理空间绝对是每写一次,占用空间就更大一些,这就是LSN
事务xid,是一个事务的编号,着重于代表事务发生的先后顺序

mysql内存与磁盘的数据一致性问题

写数据前,会先写redo,写完redo就可以返回客户端说写成功了

后台线程定期将内存中的脏块刷新到磁盘

如果此时,断电停机,则mysql崩溃,内存有脏块还未来得及落盘,磁盘文件不完整,文件有损;再启动时就需要崩溃恢复

mysql 崩溃恢复

last checlpoint位置以前的数据不需要恢复了

崩溃恢复,恢复的是last checkpoint到记录在redo log文件中的数据

恢复的起点

在redo log 写入文件以及脏块刷新时,LSN会写入文件

在数据库启动时,会先扫描数据文件最大的LSN与redo log文件中最大的LSN是否一致,如果不一致,就需要对数据文件进行恢复

最大的LSN更专业的叫法就是,last checkpoint,扫描数据文件中的last checkpoint与redo 中的最大LSN是否一致

利用redo log文件恢复时,只需要扫描LSN > last checpoint位置的数据

恢复过程中的前滚与回滚

在redo中,一个完整的记录有三个标识,xid(事务结束后写入的事务标识), filename(binlog的文件名)、pos(binlog中的位点)

当然也是LSN,对应物理page的num等,但主要通过以上三个标识去确定是一个事务是该前滚,还是回滚

如果xid,filename,pos都在,就前滚

如果xid在,filename在,pos不在,就去binlogs确认事务是否已经在binlog中commit的,如果commit就前滚,没有commit就回滚。

如果xid在,filename也不在了,就去最后一个binlog中看看对应的xid是否已经提交,如果是则前滚,反之回滚。

恢复的过程

redo log文件记录并不是全部的数据,还需要数据文件、undo、binlog进行配合

找到redo log last checkpoint的位置

将相应的块从数据文件读到内存,先前滚,后回滚

备份命令

rm -rf /export/bak/d01

innobackupex --defaults-file=/data/mysql_3306/my.cnf --no-timestamp --slave-info --user automng --host=127.0.0.1 --port=3358 --password Automng_123 /export/bak/d01

d01这个目录不必提交创建好,会自动创建

xtrabackup原理概述

如果数据库中的所有文件,数据文件,Undo文件,redo log文件等,在备份完成后,进行一次崩溃恢复;

在备份一个数据文件时,会判断所备份的数据文件的LSN是否已经包含在redo中了,

比如redo的LSN写到了500,但数据文件的LSN才到480,则会等待log scan直接数据文件中的LSN大于等于500才会开始备份这个数据文件,

一定会等到现有的 物理数据文件 + 现有redo log文件 可以不丢数据地进行“前滚”的时候,才会开始备份这个数据文件(redo log文件一直在备份)

xtrabackup备份步骤

1. 持续备份redo log文件

2. 备份数据文件, ibd文件

3. flush tables with read lock

4. 备份表结构等除数据文件的其他文件

5. 获取binlog log position(由于已经加锁,期间整个数据库不会有事务变化,也是后续恢复的起点)

6. unlock tables

7. 停止备份redo log文件

xtrabackup原理的更多相关文章

  1. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  2. xtrabackup原理1

    http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html Percona XtraBackup User Manual 阅读笔 ...

  3. XtraBackup 原理与安装

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

  4. xtrabackup原理,整库,单表,部分备份恢复

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

  5. XtraBackup原理解读

    XtraBackup是现今为止唯一一款为InnoDB 和XtraDB提供热备的开源工具,这个工具有以下的有点: (1)备份快速高效而且可靠 (2)备份过程可以做到事物处理不间断 (3)节省磁盘空间和网 ...

  6. XtraBackup原理3

    http://mysql.taobao.org/monthly/2016/03/07/ MySQL · 物理备份 · Percona XtraBackup 备份原理 前言 Percona XtraBa ...

  7. xtrabackup原理2

    XTRABACKUP备份原理实现细节——对淘宝数据库内核月报补充 前言 淘宝3月的数据库内核月报对xtrabackup的备份原理做了深入的分析,写的还是很不错.不过Inside君在看完之后,感觉没有对 ...

  8. mysql备份工具 :mysqldump mydumper Xtrabackup 原理

    备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(R ...

  9. xtrabackup原理、备份日志分析、备份信息获取

    一. xtrabackup备份恢复工作原理: extrabackup备份简要步骤 InnoDB引擎很大程度上与Oracle类似,使用redo,undo机制,XtraBackup在备份的时候,以read ...

随机推荐

  1. 计算机网络漫谈之OSI七层模型和TCP/IP四层模型

    在 什么是网络? 中,你已经知道计算机网络是物理连接的"局域网"和工作于这个局域网上的"网络协议",并且我们的重心是网络协议.有关网络协议,按照目前的分层方式主 ...

  2. testNG安装与使用

    1.Eclipse集成TestNG插件 a.下载TestNG离线插件并解压得到features和plugins两个文件夹: b.将features文件下的org.testng.eclipse_6.9. ...

  3. axios 基于拦截器的取消(重复)请求

    axios 基于拦截器的取消(重复)请求 // 添加请求拦截器 axios.interceptors.request.use((config) => { // 准备发请求之前, 取消未完成的请求 ...

  4. Linux USB (目录)

    1.USB 总线简介 2.USB 协议分析 3.USB Host 详解 4.USB Device 详解 5.usbip (USB Over IP) 使用实例

  5. python-文件操作(一)

    目录 文件操作 1.什么是文件? 2.操作文件的方法: 3.路径分类: 4.如何取消特殊字符的功能: 5.对文件的操作有:读.写.追加内容 6.with上下文管理 7.文件操作方法详细: 1.r-读操 ...

  6. 什么是CLI、GUI

    就是命令行界面command-line interface,也有人称之为字符用户界面(CUI). 通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作. 因为,命令行界面的软件通常 ...

  7. try catch引发的性能优化深度思考

    关键代码拆解成如下图所示(无关部分已省略): 起初我认为可能是这个 getRowDataItemNumberFormat 函数里面某些方法执行太慢,从 formatData.replace 到 une ...

  8. Codeforces 587F - Duff is Mad(根号分治+AC 自动机+树状数组)

    题面传送门 第一眼看成了 CF547E-- 话说 CF587F 和 CF547E 出题人一样欸--还有另一道 AC 自动机的题 CF696D 也是这位名叫 PrinceOfPersia 的出题人出的- ...

  9. 洛谷 P1224 - [NOI2013] 向量内积(随机化)

    洛谷题面传送门 一道很神的随机化. 首先由于我们要求向量点乘 \(\bmod k\) 的值,因此我们可以将所有 \(x_{i,j}\) 都模上 \(k\),显然该操作不影响结果正确性. 注意到这里的 ...

  10. Codeforces 446C - DZY Loves Fibonacci Numbers(斐波那契数列+线段树)

    Codeforces 题目传送门 & 洛谷题目传送门 你可能会疑惑我为什么要写 *2400 的题的题解 首先一个很明显的想法是,看到斐波那契数列和 \(10^9+9\) 就想到通项公式,\(F ...