xtrabackup-工作原理
数据备份
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-工作原理的更多相关文章
- xtrabackup备份原理
Percona XtraBackup工作原理 Percona XtraBackup是基于InnoDB的崩溃恢复功能.复制InnoDB数据文件,导致内部不一致的数据; 但随后它对文件执行崩溃恢复,使它们 ...
- mysqldump和xtrabackup备份原理实现说明
背景: MySQL数据库备份分为逻辑备份和物理备份两大类,犹豫到底用那种备份方式的时候先了解下它们的差异: 逻辑备份的特点是:直接生成SQL语句,在恢复的时候执行备份的SQL语句实现数据库数据的重现. ...
- Percona XtraBackup 备份原理说明【转】
本文来自:http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MyS ...
- MySQL · 物理备份 · Percona XtraBackup 备份原理
http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据 ...
- Percona XtraBackup 备份原理
前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server 和 ...
- XtraBackup 备份原理
来着淘宝技术: http://mysql.taobao.org/monthly/2016/03/07/ https://github.com/alibaba/AliSQL 前言 Percona Xtr ...
- xtrabackup备份原理及流式备份应用
目录 xtrabackup备份原理及流式备份应用 0. 参考文献 1. xtrabackup 安装 2. xtrabackup 备份和恢复原理 2.1 备份阶段(backup) 2.2 准备阶段(pr ...
- 菜鸟学Struts2——Struts工作原理
在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- HashMap的工作原理
HashMap的工作原理 HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...
随机推荐
- 关于ThinkPHP的一些编程技巧
在TP学习过程中难免会遇到一些大大小小的问题,把这些问题积累下来就可以在以后遇到时能很快速的解决,提高编程效率. 1.让Runtime下的文件格式化:入口文件处:define(‘STRIP_RUNTI ...
- ASP.NET Hashtable输出JSON格式数据
最近在开发Windows8 Metro App,使用JavaScript和HTML开发环境.所以操作数据绑定都是使用JSON格式数据.后台使用的是ASP.NET,因为项目相对较小,所有后台没有使用数据 ...
- 树莓派系统(Debain)中设置SSH服务开机自启动
一.方式: 禁用命令:sudo update-rc.d ssh disable 启用命令:sudo update-rc.d ssh enable 二.chkconfig的方式: 1.安装:apt-ge ...
- 深度学习-Caffe编译测试的小总结
1. 搭建的环境和代码:win7 64bit + vs2013+CUDA7.5 http://blog.csdn.net/thesby/article/details/50880802 2. 编译,制 ...
- SQLServer中查询表结构(表主键 、列说明、列数据类型、所有表名)的Sql语句
SQLServer中查询表结构(表主键 .列说明.列数据类型.所有表名)的Sql语句 1.查询数据库中的所有表名称: SELECT name FROM SysObjects Where XType=' ...
- Android versionCode和versionName的区别
简单的说,versionCode是给机器看的,versionName是给人看的.更新的时候,机器根据versionCode判断是升级还是降级,即使versionName(版本号)比以前的高,但是ver ...
- html增加和删除div
<!DOCTYPE HHTML"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- Servlet简介与生命周期
一:Servlet是什么 Servlet是运行在Web服务器上的Java程序,作为处理来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层.JSP在w ...
- linux下切换python2和python3(转)
0x00 为什么需要有两个版本的Python Python2和Python3不兼容是每个接触过Python的开发者都知道的事,虽说Python3是未来,但是仍然有很多项目采用Python2开发.Lin ...
- 激光数据匹配(MATLAB Robotics System Toolbox)
正态分布变换算法是一个配准算法,它应用于三维点的统计模型,使用标准最优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.算法细节可以参考:NDT ...