Percona XtraBackup 的工作原理

Percona XtraBackup 基于InnoDB引擎的故障恢复功能。它拷贝InnoDB的数据文件,但是数据文件内存的数据并不是一致的;但是通过 XtraBackup 执行故障恢复确保了数据的一致性。

Percona XtraBackup 保证数据一致性 是通过InnoDB的redo log(也叫事务日志 transaction log)。redo log记录了InnoDB 数据的每次改变。当InnoDB(MySQL)启动,它检查数据文件和事务日志(redo / transaction log),然后执行如下两步:
● 应用已经提交的事务
● 回滚已经修改但是没有提交的事务

Percona XtraBackup 备份过程如下:
<1>备份InnoDB引擎:

  • 当 Percona XtraBackup 开始工作,它记录所有 LSN ( log sequence number ),然后拷贝所有数据文件。
  • 拷贝数据文件的同时, Percona XtraBackup 的一个后台进程监测 事务日志(redo / transaction log),然后从事务日志中拷贝改变的部分。
  • 由于事务日志(log/transaction log)写日志采取round-robin方式,短时间事务日志就能够被重用,所以Percona XtraBackup 必须一致保持监测事务日志并拷贝改变部分。
  • Percona XtraBackup 从执行开始,就必须记录每一条事务日志,不然无法保证一致性和完整性。

<2>备份其他存储引擎(如MyISAM):
Percona XtraBackup 备份 InnoDB/XtraDB 数据文件和事务日志完毕后。使用 FLUSH TABLES WITH READ LOCK 锁,阻止对MyISAM的DML操作,(从MySQL 5.6开始),然后备份拷贝MyISAM等non-InnoDB的相关文件,如.frm, .MRG, .MYD, .MYI,.TRG, .TRN, .ARM, .ARZ, .CSM, .CSV, .par, 和 .opt 文件。

注意,备份MyISAM时,执行FLUSH TABLES WITH READ LOCK ,并不会影响InnoDB。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注