XtraBackup备份MySQL
来源:互联网 发布:t型截面惯性矩的算法 编辑:程序博客网 时间:2024/05/22 04:04
出处:http://blog.itpub.net/29254281/viewspace-1082297/
XtraBackup是一款开源免费的MySQL热备份软件。
对于MyISAM,他使用锁机制进行全量备份。
对于InnoDB,他启用类似归档的方式,不仅可以进行全量备份,还可以进行增量备份。
全量备份大致过程如下,
首先,找到备份开始时检查点的LSN,复制此LSN之后的重做日志到xtrabackup_log。
然后,开始复制InnoDB的数据文件。
由于此时数据文件还在不断写入,而且重做日志文件可能被覆盖。所以XtraBackup有一个进程不断复制变化的重做日志到xtrabackup_log。这种方式参考Oracle归档模式的热备份。
但是还有一个问题,就是MySQL的数据块默认16K,而操作系统的块,windows默认为512字节,linux默认为1024字节。
很有可能在复制的过程中,MySQL块的若干操作系统块被更新,但是整个MySQL块却没有更新完成。这样会造成数据块的不一致。这种情况会影响重做日志的前滚恢复。
我猜测MySQL的处理方式是参考Oracle.如果一个MySQL块需要更新,则将这个块更新前的镜像同redo log一起写入重做日志文件。
数据恢复的时候,则使用重做日志文件中的数据块镜像apply redo log即可。
步骤3备份的是MyISAM表,采用了锁的机制。
在MyISAM表备份完成之后,解锁。此时,就是备份完成的时刻。
在MyISAM备份的过程中,InnoDB的redo log还是会不断的写入xtrabackup_log。
与Oracle不同的是,xtrabackup是先恢复再还原。
它的prepare过程,实际上就是Oracle对数据文件应用归档重做日志和联机重做日志的过程。
只不过xtrabackup将两种日志合并在了一个文件中(xtrabackup_log),并且他的归档日志仅仅包含从备份开始到MyISAM备份结束这一小段范围的重做日志。
在恢复的过程中,xtrabackup会启动内部的一个InnoDB实例(xtrabackup自带的),他根据备份的数据文件应用重做日志前滚数据,然后回滚未提交的数据。这个应该和Oracle是一样的。
回滚的过程
xtrabackup支持增量备份。
对于MyISAM来说,任何增量备份的操作都是一个全备.
而对于InnoDB,他会根据一个全量备份的LSN,拷贝数据文件中大于此LSN的数据块。
恢复增量备份时,先恢复全量备份,然后依次对增量备份进行恢复。
下面通过实验证明xtrabackup在拷贝文件的过程中会开启归档特性。
初始化实验表结构,并初始化4条数据.
create table test(a int primary key,b int,key(b)) engine=innodb;
- delimiter //
- Create Procedure insertrange(in s int,in e int)
- begin
- declare i int;
- set i = s;
- start transaction;
- while i<e do
- insert into test values(i,i);
- set i=i+1;
- end while;
- commit;
- end
- //
- delimiter ;
重做日志大小为5M
下面开启一个终端,使用insertrange过程插入100W条数据
同时启动另外一个终端,开始全量备份
备份过程会记录一个开始的检查点LSN
在备份的过程中,会不断将重做日志写入xtrabackup_log,类似归档日志的作用
备份非InnoDB数据
在非InnoDB数据备份之后,停止备份重做日志,备份结束.
1582081210应该就是备份结束的时间点,增量备份以这个LSN为基准。
值得注意的是备份的重做日志文件比MySQL设置的重做日志文件要大,证明了备份的过程如果发生了日志切换,会将归档的日志写入xtrabackup_log
xtrabackup的使用请参考:
http://blog.csdn.net/justdb/article/details/17054667
备份原理参考:
http://www.zrwm.com/?p=5844
http://www.baidu-ops.com/2013/05/26/xtrabackup/
- mysql xtrabackup增量备份
- XtraBackup备份MySQL
- MySQL备份之Xtrabackup
- xtrabackup备份mysql数据库
- mysql备份之xtrabackup
- xtrabackup增量备份mysql
- mysql xtrabackup备份恢复
- mysql备份之Xtrabackup
- MySQL XtraBackup备份脚本
- xtraBackup 备份mysql
- MySQL备份恢复--Xtrabackup
- Mysql的备份工具xtrabackup
- MySQL备份恢复之XtraBackup
- MySQL备份恢复之XtraBackup
- MySQL备份恢复之XtraBackup
- XtraBackup/innobackupex 远程备份MySQL
- Mysql备份和迁移xtrabackup
- MySQL备份之Xtrabackup实战
- liunx----putty--ssh--ppk---密文自动登陆
- C/C++野指针
- 源码安装GCC
- 日积月累:ScrollView嵌套ListView只显示一行
- hdu 4284 floyd+暴搜
- XtraBackup备份MySQL
- 解决Multiple annotations found at this line: - schema_reference.4: Failed to read schema document '
- 转android gralloc流程分析for msm8960
- POJ 2976 Dropping tests 01分数规划
- glibc改进
- 多功能数字收音机
- 写给静不下心来的朋友们
- POJ 2239 Selecting Courses EK!匈牙利!SAP?
- HBase写数据过程