数据备份

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. [R]Kick start

  2. 小教程:自己创建一个jQuery长阴影插件

    长阴影设计是平面设计的一个变体,添加了阴影,产生了深度的幻觉,并导致了三维的设计.在本教程中,我们将创建一个jQuery插件,通过添加完全可自定义的长阴影图标,我们可以轻松地转换平面图标. 戳我查看效 ...

  3. Activity设置Dialog属性点击区域外消失实现方式

    通过配置:<item name="android:windowCloseOnTouchOutside">true</item> 通过代码:setFinish ...

  4. mysql 表分区 查看表分区 修改表分区

    原文地址:http://blog.csdn.net/feihong247/article/details/7885199 一.       mysql分区简介 数据库分区 数据库分区是一种物理数据库设 ...

  5. 通过16道练习学习Linq和Lambda

    http://kb.cnblogs.com/page/73528/ 1. 查询Student表中的所有记录的Sname.Ssex和Class列. select sname,ssex,class fro ...

  6. spring boot 运行提示:Process finished with exit code 1

    spring boot 运行提示:Process finished with exit code 1 经检查发现是由于在application.properties配置文件中将某些自定义配置项移除了, ...

  7. 让span对宽度有响应而且兼容多种浏览器

    span {display:-moz-inline-box; display:inline-block; width:20px;height:20px;}

  8. C# TripleDES NoPadding 时对待加密内容进行补字节(8个字节为一个Block)

    补一个空格(半角): private static byte[] FormatData(String str) { ; ) return Encoding.GetEncoding(Consts.Cha ...

  9. eclipse 使用tomcat运行JavaWeb项目,文件修改后为何不用重启tomcat? (运行web项目的4种方式)探究

                    1.情景说明 在eclipse中,为什么Java文件修改后,重启tomcat class文件才能生效? 为什么jsp修改后,不需重启tomcat就能立即生效? 为什么静 ...

  10. great tips in soapui

    from this site :http://onebyteatatime.wordpress.com/2009/04/18/soapui-tips-n-tricks-part-2/