XtraBackup热备工具简介


XtraBackup简介

XtraBackup是一款专为MySQL设计的开源、免费、高性能物理热备工具。它能在数据库持续运行、不阻塞业务读写的情况下,完成对InnoDB数据表的一致性备份。相对于其它备份工具,XtraBackup的主要优势包括:

  • 在线热备且无阻塞:备份InnoDB表时无需加锁,完全不影响正在运行的事务;仅备份MyISAM等非事务引擎时,会短暂加全局读锁,通常耗时极短。
  • 支持增量与差异备份:全量备份后,可仅备份自上次备份以来变化的数据页,大幅节省时间与存储空间,非常适合大型(> 50G)数据库的日常备份。
  • 高效可靠:备份与恢复速度远高于mysqldump等逻辑备份,并且自动校验数据页完整性,备份文件可靠性高。
  • 功能丰富:内置压缩与加密功能,节省空间并保障安全。支持将备份流通过管道输出,可直接压缩或发送至远程服务器,无需本地暂存。

全量备份与全量恢复

全量备份(Full Backup)是对整个数据库进行一次完整的备份,包括数据库中的所有数据和结构。全量备份提供了数据库的一个完整快照,包含了所有的数据和对象。

XtraBackup全量备份的流程如下:

  • innobackupex开启xtrabackup_log监控线程,实时监测redolog文件的变化,将备份过程中新写入到事务日志中的日志拷贝至innobackup_log中。
  • 开启xtrabackup拷贝线程,物理拷贝innodb的数据文件和系统表空间文件idbdata1至备份目录。
  • 复制innodb文件结束后,执行命令:flush tables with read lock,全库锁表准备备份非InnoDB文件。
  • 物理复制.frm、.myd、.myi等非InnoDB引擎文件至备份目录。
  • 记录当前二进制日志文件及备份位置。
  • 执行命令:unlock tables,将表解锁。
  • 停止xtrabackup_log线程。

XtraBackup全量恢复的流程如下:

  • 对全量备份文件xtrabackup_log进行日志回放,并对已提交的事务重做,对未提交的事务回滚。
  • 将恢复的数据文件复制至mysql数据库的数据目录中。

增量备份与增量恢复

增量备份(Incremental Backup)是在全量备份的基础上,只备份自上次全量备份或增量备份以来发生改变的数据。

Xtrabackup增量备份与全量备份的过程类似,不同的是拷贝数据时只拷贝自上次innodb备份后变化的数据页,而不是所有数据。

XtraBackup增量恢复的流程如下:

  • 恢复全量备份。
  • 在全量备份的基础上顺序恢复所有的增量备份。
  • 将所有全量与增量备份数据进行apply:回滚未提交事务,丢弃不完整数据,应用未完成事务。
  • 将恢复的数据文件复制至mysql数据库的数据目录中。

发表评论

评论数量:0