数据备份

xtrabackup是基于innodb的crash恢复功能之上的。它会拷贝innodb数据文件(这会导致数据不一致的),然后对文件执行crash恢复使其一致。

因为innodb维护了redo日志,即事务日志。redo日志包含对innodb数据修改的每一个记录。当innodb启动,会探测数据文件和redo日志并使二者同步(执行redo日志,进行前滚和回滚)。

xtrabackup会记录其启动时的日志序列号(log sequence number),然后拷贝数据文件。在拷贝的同时,可以会发生了对数据文件的修改。xtrabackup会运行一个后台进程,监控redo日志并拷贝redo日志的变化,xtrabackup需要不断地执行这些操作,因为redo日志是循环使用的。

xtrabackup会使用backup锁,和flush tables with read lock比起来,backup锁是轻量级的锁。backup锁是percona server 5.6+引入的,xtrabackup自动使用backup锁拷贝non-innodb数据文件而不会阻塞对innodb表的修改操作。server支持backup锁时,xtrabackup会首先拷贝innodb数据,然后运行lock tables for backup,拷贝myisam表和.frm文件。完成这些操作后,开始备份文件,包括.frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV, .par, and .opt 文件。

backup锁只是对myisam和non-innodb表施加,而且是在备份完innodb/xtradb数据和日志之后。

完成数据备份后,xtrabackup会使用lock binlog for backup,阻塞对二进制日志的修改操作。拷贝完redo日志和取回二进制日志的位置。然后释放对二进制和表的锁定。

最后,二进制日志位置被打印到stderr,xtrabackup退出。

在prepare阶段,xtrabackup会执行crash恢复,结束后,数据库就可以被还原和使用了。

数据还原

在prepare阶段,xtrabackup会执行crash恢复,结束后,数据库就可以被还原和使用了。

还原可以使用xtrabackup --copy-back、xtrabackup --move-back

xtrabackup会读取my.cnf文件中的datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir变量的内容并检查目录是否存在。

首先,拷贝myisam表和索引;其次,innodb表,索引;最后是日志文件。

xtrabackup --move-back也可以用来还原备份。与--copy-back不同的是,它是move文件到目标位置,这样备份文件也被移走了,所以要小心使用

xtrabackup-工作原理的更多相关文章

  1. xtrabackup备份原理

    Percona XtraBackup工作原理 Percona XtraBackup是基于InnoDB的崩溃恢复功能.复制InnoDB数据文件,导致内部不一致的数据; 但随后它对文件执行崩溃恢复,使它们 ...

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

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

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

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

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

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

  5. Percona XtraBackup 备份原理

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

  6. XtraBackup 备份原理

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

  7. xtrabackup备份原理及流式备份应用

    目录 xtrabackup备份原理及流式备份应用 0. 参考文献 1. xtrabackup 安装 2. xtrabackup 备份和恢复原理 2.1 备份阶段(backup) 2.2 准备阶段(pr ...

  8. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

  9. 【夯实Nginx基础】Nginx工作原理和优化、漏洞

    本文地址 原文地址 本文提纲: 1.  Nginx的模块与工作原理    2.  Nginx的进程模型    3 . NginxFastCGI运行原理        3.1 什么是 FastCGI   ...

  10. HashMap的工作原理

    HashMap的工作原理   HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...

随机推荐

  1. 关于ThinkPHP的一些编程技巧

    在TP学习过程中难免会遇到一些大大小小的问题,把这些问题积累下来就可以在以后遇到时能很快速的解决,提高编程效率. 1.让Runtime下的文件格式化:入口文件处:define(‘STRIP_RUNTI ...

  2. ASP.NET Hashtable输出JSON格式数据

    最近在开发Windows8 Metro App,使用JavaScript和HTML开发环境.所以操作数据绑定都是使用JSON格式数据.后台使用的是ASP.NET,因为项目相对较小,所有后台没有使用数据 ...

  3. 树莓派系统(Debain)中设置SSH服务开机自启动

    一.方式: 禁用命令:sudo update-rc.d ssh disable 启用命令:sudo update-rc.d ssh enable 二.chkconfig的方式: 1.安装:apt-ge ...

  4. 深度学习-Caffe编译测试的小总结

    1. 搭建的环境和代码:win7 64bit + vs2013+CUDA7.5 http://blog.csdn.net/thesby/article/details/50880802 2. 编译,制 ...

  5. SQLServer中查询表结构(表主键 、列说明、列数据类型、所有表名)的Sql语句

    SQLServer中查询表结构(表主键 .列说明.列数据类型.所有表名)的Sql语句 1.查询数据库中的所有表名称: SELECT name FROM SysObjects Where XType=' ...

  6. Android versionCode和versionName的区别

    简单的说,versionCode是给机器看的,versionName是给人看的.更新的时候,机器根据versionCode判断是升级还是降级,即使versionName(版本号)比以前的高,但是ver ...

  7. html增加和删除div

    <!DOCTYPE HHTML"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  8. Servlet简介与生命周期

    一:Servlet是什么 Servlet是运行在Web服务器上的Java程序,作为处理来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层.JSP在w ...

  9. linux下切换python2和python3(转)

    0x00 为什么需要有两个版本的Python Python2和Python3不兼容是每个接触过Python的开发者都知道的事,虽说Python3是未来,但是仍然有很多项目采用Python2开发.Lin ...

  10. 激光数据匹配(MATLAB Robotics System Toolbox)

    正态分布变换算法是一个配准算法,它应用于三维点的统计模型,使用标准最优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.算法细节可以参考:NDT ...