当前位置: 首页 > 工具软件 > XtraBackup > 使用案例 >

xtrabackup 官方原理

陶弘业
2023-12-01

在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相关文件进行备份,最后释放锁。



 类似资料: