如何让xtrabackup恢复速度提升20倍?

本文介绍了Xtrabackup数据库热备份软件的恢复速度优化方法,包括日志解析优化、Page Flush的异步处理和解析回放并行,通过这些策略,实现了恢复速度的显著提升,尤其是在大实例中。
摘要由CSDN通过智能技术生成

简介

  Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎数据库进行非阻塞的备份,其具备以下一些优点:
  1)备份速度快,物理备份可靠
  2)备份过程不会打断正在执行的事务
  3)能够基于压缩等功能节约磁盘空间和流量
  4)自动备份校验
  5)还原速度快
  6)可以流传将备份传输到另外一台机器上
  7)在不增加服务器负载的情况备份数据
  Xtrabackup热备和恢复原理如下图所示:

  备份开始时首先会开启一个后台检测进程,实时检测mysql redo的变化,一旦发现redo中有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中。之后复制innodb的数据文件和系统表空间文件ibdata1,待复制结束后,执行flush tables with read lock操作,复制.frm,MYI,MYD,等文件,最后会发出unlock tables,停止xtrabackup_log。
  恢复阶段则启动xtrabackup内嵌的innodb实例,回放xtrabackup日志xtrabackup_log,将提交的事务信息变更应用到innodb数据/表空间,同时回滚未提交的事务(这一过程类似innodb的实例恢复)。如图所示:
  Xtrabackup的增量备份过程和全量类似,只针对增量备份过程中的”增量”进行处理,主要是相对innodb而言,对myisam和其他存储引擎而言,它仍然是全量备份。
  从备份恢复的流程上看,备份过程主要受拷贝文件和日志生成速度影响,即和磁盘IO、网络以及系统压力有关;恢复过程则主要和IO、并发控制相关,本文下面将主要讨论Xtrabackup恢复阶段的优化。

现状

  Xtrabackup的恢复过程实则是调用内嵌innodb的恢复逻辑来实现的(修改了一些参数的默认值,如恢复时buffer pool缓存页面数目),而innodb的恢复一直以来都不是那么的高效,社区也有很多innodb崩溃恢复流程的优化方案。
  在实际生产环境中,动辄上T的数据在使用Xtrabackup进行热备时通常要产生几十G甚至更大的日志文件,受限于备份恢复虚拟机的配置,这样的备份在恢复时往往需要数个小时,平均恢复速度仅为1-4M/s(热数据分布相关),这样的速度给现网实例的运维造成了很大的麻烦。

问题

  通常情况下,InnoDB的恢复过程中的内存分配类型为MEM_HEAP_BUFFER,即在buffer pool中开辟一段内存用于存放日志记录,当需要恢复的日志文件很大时,可能存在内存不足的情况,根据内存是否充足把日志的处理分为两种方式:
  1、开辟的内存足够所有保存日志记录  

</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值