XtraBackup实践
概述
关于XtraBackup
XtraBackup是由Percona公司开发的一款基于InnoDB的MySQL数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对InnoDB和XtraDB数据库进行热备的工具。其有如下特点:
- 备份过程快速、可靠;
- 备份过程不会打断正在执行的事务;
- 能够基于压缩等功能节约磁盘空间和流量;
- 自动实现备份检验;
- 还原速度快;
XtraBackup功能
- 热备份
- 增量备份
- 备份到另一台MySQL服务器
- 在MySQL服务器之间在线迁移表
- 轻松创建新的从服务器
- 备份时,不占用服务器资源
XtraBackup工作原理
XtraBackup是基于InnoDB的crash恢复功能。复制InnoDB数据文件,但是数据是不一致的,然后使用crash恢复让数据文件一致。当InnoDB启动时会去检查数据文件和日志文件,然后重做已提交事务,执行未提交事务。
XtraBackup记下LSN(Log Sequence Number),然后启动,复制数据文件。同时XtraBackup启动一个后台进程用来监控日志文件,然后复制修改,这个进程在备份期间一直是运行的,因为日志文件时回绕的,避免数据被覆盖无法恢复。直到备份完成。
第二阶段就是预备阶段,XtraBackup通过执行crash恢复,应用日志文件到数据文件上。等待复制InnoDB结束,然后执行FLUSH TABLES WITH READ LOCK,停止对mysql数据的修改。复制非innodb引擎表,直到复制完成,然后释放锁。
这样在prepare阶段后,InnoDB和非InnoDB相互保持了一致性。InnoDB会一直redo,直到备份完成。这个时间刚刚好和FLUSH TABLES WITH READ LOCK时间一直,所以InnoDB和非InnoDB是保持同步的。