xtrabackup热备一致性原理

转载 2016年08月28日 15:51:55

 xtrabackup作为innodb的hotbackup工具,由percona公司开发,因开源,热备份和物理备份而
在mysql中部署广泛,详情的说明可见之前的博客讨论.

  在物理级别热备份主要的一大挑战就是在文件级别数据块不一致.我们知道innodb的单个page大小
由innodb_page_size 来决定,一般为16K.由4个文件系统4K的块组成.

mysql> show global variables like 'innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| innodb_page_size | 16384 | 
+------------------+-------+
1 row in set (0.00 sec)

  
   由于是热备份,当备份工具在拷贝innodb page的时候,数据库本身的进程也有可能在写这个page
那么备份工具拷贝出来的page,就有可能是坏的,也称为page 头尾不一致或是page断裂.这也就是为什么
普通的os复制工具不能用来做为数据库物理热备份的工具原因.

    再看来看xtrbackup工具是怎么解决这一问题的.在备份开始的时候,xtrabackup会像普通的拷贝工具一样
去复制所有的innodb page,所以也会有page断裂的问题存在。xtrabackup在备份开始的时候,生成另
一个线程去拷贝当前的innodb的事务日志, 并同时监控innodb的事务日志文件,一旦有生成新的innodb的事务日志,
也会同时写到xtrabckup自己的日志中去.

     在备份结束后,xtrabacup得到的结果是一份有page断裂的数据文件和备份期间所有的innodb的事务日志.这个
时候的情况和mysql实例崩溃的结果是一样的(实例崩溃后数据文件不完整,事务日志完整).xtrabackup还需要一
个过程,称为prepare,这个过程所做的事情和mysql实例崩溃后所做的操作基本一致。利用坏的数据文件和事务
日志进行rollback和forward操作。

      xtrabckup本身链接了innodb相关的库,所在我们在prepare阶段看到innodb的启动和关闭信息,很类似于标
准的mysql实例启动和关闭过程,实质是我们在prepare的时候,xtrabackup在调用innodb相关的代码进行实例
恢复.prepare过后,xtrabackup备份文件就是一个一致性的数据拷贝,可以直接用来启动mysql。

   可以看到xtrabackup通过innodb的事务日志来和数据page,进行实例恢复,然后得到一致性的备份.而对于那些
非innodb的表则无能为力了,因为没有事务日志.所以我们可以看到在xtrackup备份Myisam的表,还是需要只读表
锁来进行锁定,然后再备份数据文件,和普通的拷贝工具无异.

相关文章推荐

mysql热备工具-xtrabackup-1.5

mysql当然可以使用它本身的双机热备,但只有一台服务器就不能使用双机热备,这里说一下热备工具Xtrabackup xtrabackup-1.5下载地址http://download.csdn.ne...
  • zzaihl
  • zzaihl
  • 2011-11-14 17:19
  • 1024

InnoDB数据备份工具--Xtrabackup原理

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。

CentOS-6.5下 MariaDB-10基于XtraBackup备份工具的原理及配置详解

XtraBackup基于InnoDB的crash-recovery功能。它会复制innodb的data file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使...

xtrabackup备份原理及注意事项

物理备份(Xtrabackup)相对于逻辑备份利用查询提取数据中的所有记录,物理备份更直接,拷贝数据库文件和日志来完成备份,因此速度会更快。当然,无论是开源的Mydumper还是官方最新的备份工具(5...

MySQL-物理备份-Percona XtraBackup 备份原理

MySQL · 物理备份 · Percona XtraBackup 备份原理 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物...

xtrabackup官方文档学习笔记【全备部分】

Xtrabackup的工具xtrabackup使用介绍,主要关于全备部分

xtrabackup 增量,全量备数据库脚本

#!/bin/sh #xtrabackup备份脚本 #获取脚本所存放目录 cd `dirname $0` bash_path=`pwd` #脚本名 me=$(basename $0)#定义变量 LOG...

MySQL Study之--MySQL innodb引擎备份工具XtraBackup之二(数据库全备)

MySQL Study之--MySQL innodb引擎备份工具XtraBackup之二(数据库全备) Xtrabackup备份原理:      在InnoDB内部会维护一个redo日志文件,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)