数据备份

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. VMware 安装Arch Linux记录

    首先说明一下我的环境. 1.VMware Workstation 10.0.1 build-1379776 2.archlinux-2014.02.01-dual.iso 首先建立虚拟机,其他的不提了 ...

  2. Python MySQLdb模块连接操作mysql数据库实例_python

    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...

  3. JS与Jquery的事件委托

    参考:http://www.ituring.com.cn/article/467 概念: 什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委 ...

  4. linux安装experss搭建本地服务器

    准备nodejs和npm 保证本地安装了nodeJS和npm,如果没有安装的话,通过下面的命令进行安装: sudo apt-get install nodejs //安装nodeJS sudo apt ...

  5. ActiveMQ面试专题

    https://blog.csdn.net/belvine/article/details/79399798

  6. git 保存用户名密码

    打开本地的.git/config 加入 [credential] helper = store 保存,第一次需要输入用户名密码,输入一次密码后第二次就会记住密码了不会再提示输入用户名及密码

  7. 使用hadoop eclipse plugin提交Job并添加多个第三方jar

    来自:http://heipark.iteye.com/blog/1171923 通过 "conf.set("tmpjars", jars);" 可以设置第三方 ...

  8. Code Review学习笔记

    一:Code Review的必要性 代码审查,可以帮助他人发现不足,也可以促进自己培养良好的编程习惯. 自我代码审查,可以在编码完成之后,对自己的代码进行整理,发现“味道不好”的代码,作进一步的调整. ...

  9. 【DB2】索引

    1. 索引的概念 1.1 索引的优点 索引是表的一个或多个列的键值的有序列表,创建索引的原因有2个: 确保一个或多个列中值的唯一性 提高对表进行的查询的性能.当查询时想要以更快的速度找到所需要的列,或 ...

  10. excel合并同类项去重求和功能

    参考:百度经验 主要利用函数为:sumif(range,criteria,[sum_range]) Range:条件区域,用于条件判断的单元格区域. Criteria:求和条件,由数字.逻辑表达式等组 ...