您的位置:首页 > 其它

innobackupex备份和恢复原理

2016-05-30 19:46 239 查看
innobackupex备份和恢复原理

备份原理:
1.找到redolog中最后一个checkpoint的lsn,从这个lsn开始记录所有新的redolog
2.cpinnodb数据
3.flush tables with read lock (加全局锁)
4.复制所有myisam表和所有表的表结构文件
5.锁定binlog文件
6.记录当前的binlogfile和pos

恢复原理:
innobackupex --apply-log --redo-only
innobackupex恢复和mysql系统崩溃的原理一样,通过比对页的lsn和日志中的lsn大小来完成的.

mysql崩溃后的数据恢复流程。
通过查找日志最后一次checkpoint的位置取出这个lsn之后的所有日志,然后比对lsn值与页面的lsn的大小,
如果页面的lsn小于当前的lsn就恢复该页面

innobackupex --apply-log --redo-only
innobackupex恢复:
在应用日志阶段(apply-log),会比对数据页面和日志中lsn值,如果lsn日志的值比数据页面的lsn大,
就应用该条日志。

redo-only:只前滚已提交的事务,忽略未提交的事务日志。

记得又一次做数据恢复的时候 ,使用innobackupex , 在最后一次备份合并的过程中使用redo-only参数,
导致mysql无法启动(有的时候可以启动)。

具体原因分析如下:
这时page的lsn大于redo日志中最大的lsn,也就是page的lsn在redo中找不到的lsn,所以他会提示日志丢失,或者日志文件被
损坏,实际上日志文件没有被损坏,。mysql需要这部分日志来回滚事务,但是这部分日志存在于xtracback_logfile中,
,xtracback_logfile mysql无法识别获取不到日志。

innobackupex的使用方法:
/article/7211883.html

本文出自 “SQLServer MySQL” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: