《MYSQL 备份与恢复》之 Innodb 与 MyISAM 引擎
一、系统环境
1.1 ubuntu 12.0.4 X86_64
1.2 percona-xtrabackup-2.0.3.tar.gz
1.3 xtrabackup 简介
xtrabackup 是一个对 InnoDB 做数据备份的工具,支持在线热备份(备份时不影响数据
读写),是商业备份工具 InnoDB Hotbackup 的一个很好的替代品。
xtrabackup 有两个主要的工具:xtrabackup、innobackupex
(1)xtrabackup 只能备份 InnoDB 和 XtraDB 两种数据表,而不能备份 MyISAM 数据表
( 2 ) innobackupex 是 参 考 了 InnoDB Hotbackup 的 innoback 脚 本 修 改 而 来 的 ,
innobackupex 是一个 perl 脚本封装,封装了 xtrabackup,所以能同时备份处理 innodb 和
myisam,但在处理 myisam 时需要加一个读锁。并且加入了一些使用的选项,如 slave-info 可
以记录备份恢复后,作为 slave 需要的一些信息,根据这些信息,可以很方便的利用备份来
重做 slave。
(3)使用帮助:http://www.percona.com/docs/wiki/percona-xtrabackup:start
(4)Xtrabackup 可以做什么
在线(热)备份整个库的 InnoDB、 XtraDB 表
在 xtrabackup 的上一次整库备份基础上做增量备份(innodb only)
以流的形式产生备份,可以直接保存到远程机器上(本机硬盘空间不足时很有用)
MySQL 数据库本身提供的工具并不支持真正的增量备份,二进制日志恢复是 point-in-
time(时间点)的恢复而不是增量备份。Xtrabackup 工具支持对 InnoDB 存储引擎的增量备份,
工作原理如下:
(1)首先完成一个完全备份,并记录下此时检查点的 LSN(Log Sequence Number)。
(2)在进程增量备份时,比较表空间中每个页的 LSN 是否大于上次备份时的 LSN,如果
是,则备份该页,同时记录当前检查点的 LSN。
首先,在 logfile 中找到并记录最后一个 checkpoint(“last checkpoint LSN”),然后开始从
LSN 的位置开始拷贝 InnoDB 的 logfile 到 xtrabackup_logfile;接着,开始拷贝全部的数据文
件.ibd;在拷贝全部数据文件结束之后,才停止拷贝 logfile。
因为 logfile 里面记录全部的数据修改情况,所以,即时在备份过程中数据文件被修改
过了,恢复时仍然能够通过解析 xtrabackup_logfile 保持数据的一致。
xtrabackup 备份原理
xtraBackup 基于 InnoDB 的 crash-recovery 功能。它会复制 innodb 的 data file,由于不锁
表,复制出来的数据是不一致的,在恢复的时候使用 crash-recovery,使得数据恢复一致。
InnoDB 维护了一个 redo log,又称为 transaction log,事务日志,它包含了 innodb 数据
评论4