常用命令

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. SpringCloud 2020.0.4 系列之 Bus

    1. 概述 老话说的好:会休息的人才更会工作,身体是革命的本钱,身体垮了,就无法再工作了. 言归正传,之前我们聊了 SpringCloud 的 分布式配置中心 Config,文章里我们聊了config ...

  2. Linux系统编程之进程控制(进程创建、终止、等待及替换)

    进程创建 在上一节讲解进程概念时,我们提到fork函数是从已经存在的进程中创建一个新进程.那么,系统是如何创建一个新进程的呢?这就需要我们更深入的剖析fork函数. 1.1 fork函数的返回值 调用 ...

  3. 初步认识express,并创建web服务器,挂载静态资源

    1.Express简介 1.1什么是Express 官方给出的概念:Express 是基于 Node.js 平台,快速.开放.极简的 Web 开发框架,官方网址 相似用途:Express 的作用和 N ...

  4. 【浏览器】聊聊DOM

    [浏览器]聊聊DOM 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 作为前端开发,在以前的工作中大多是和DOM打交道,到 ...

  5. JMeter进行压力测试时查看服务器的资源使用

    用户想要使用Jmeter监控所测试的服务器的资源使用情况,需要有Jmeter客户端插件和服务端插件 1.客户端插件 下载地址:https://jmeter-plugins.org/install/In ...

  6. Cannot find ./catalina.sh The file is absent or does not have execute permission This file is needed to run this program(问题解决)

    web项目没有打成包,直接放在了linux服务器上. 进入tomcat/bin目录,执行启动的时候出现如下错误: 解决方法: 在tomcat 的bin目录下 执行这条命令chmod +x *.sh   ...

  7. 常用的package.json以及React相关

    常用的package.json以及React相关 前言 package.json 的简单介绍 简单版的 package.json 必备属性(name & version) name 字段 ve ...

  8. pycharm 在flask断点不停止

    For me disabling Gevent compatible option in Preferences > Build, Execution, Deployment has helpe ...

  9. 14-1-Unsupervised Learning ---dimension reduction

    无监督学习(Unsupervised Learning)可以分为两种: 化繁为简 聚类(Clustering) 降维(Dimension Reduction) 无中生有(Generation) 所谓的 ...

  10. [bzoj5462]新家

    先离线,将询问按照时间排序,维护商店出现和消失 对于每一个询问,先二分枚举答案,假设是ans, 即要求对于区间[l-ans,l+ans],商店的种类数是k(l是询问的位置) (当然需要先将所有位置离散 ...