xtrabackup 官方原理

在InnoDB内部会维护一个redo日志文件,我们也可以叫做事务日志文件,事务日志文件会存储每一个InnoDB表数据的更改记录。当InnoDB启动时,InnoDB会检查数据文件和事务日志,并执行两个步骤:1.应用已经提交的事务日志到数据文件;2.将事务日志里还未提交的更改回滚。


xtrabackup在启动时会记住 log sequence number(LSN,每条事务记录的唯一编号),并且复制所有的数据文件,复制过程需要一段时间,所以这段时间数据库的更改就会使备份文件和实际数据不一致。xtrabackup解决此问题的方式是,xtrabackup会开启一个后台进程,用于监视事务日志,并将备份期间事务日志里的更改记录下来。


以上是xtrabackup备份的过程,回复的第一步是准备(prepare)过程。在此过程,xtrabackup根据所记录的 事务日志里的变化,模仿InnoDB启动时的动作对数据进行‘崩溃恢复’,执行完这个过程后,数据就可以用于还原数据库了。


但是以上机制只能备份和恢复Innodb引擎的表,对于myisam表,precona 将xtrabackup通过perl封装成innobackupex脚本,此脚本提供了对myisam表的备份支持。innobackupex脚本会在xtrabackup执行完InnoDB表的备份后,执行flush tables with read lock 来阻止对数据库的写入,并对myisam相关文件进行备份,最后释放锁。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值