MySQL Backup--Xtrabackup备份限速问题
在innobackupex 2.4版本中,有两个参数用来限制备份速度:
--throttle=#
This option specifies a number of I/O operations (pairs
of read+write) per second. It accepts an integer
argument. It is passed directly to xtrabackup's
--throttle option. --parallel=#
On backup, this option specifies the number of threads
the xtrabackup child process should use to back up files
concurrently. The option accepts an integer argument. It
is passed directly to xtrabackup's --parallel option. See
the xtrabackup documentation for details.
在percoan官方网站上对throttle参数有如下解释:
Although xtrabackup does not block your database’s operation,
any backup can add load to the system being backed up. On systems
that do not have much spare I/O capacity, it might be helpful to
throttle the rate at which xtrabackup reads and writes data.
You can do this with the xtrabackup --throttle option. This option
limits the number of chunks copied per second. The chunk size is 10 MB.
https://www.percona.com/doc/percona-xtrabackup/2.4/advanced/throttling_backups.html
如果想将备份速度控制在50MB/s以下的话,那么throttle参数需要设置为5,使用该参数备份开始后IO使用情况为:

备份进程一直在写xtrabackup_logfile文件,如果备份实例的数据操作较多时,会导致备份进程一直处于该状态无法继续后面操作。
PS: 备份目录下xtrabackup_logfile文件的增长速度和参数throttle密切相关。
在备份实例停止全部操作情况,使用throttle=5进行备份,备份进行执行10分钟还在处理xtrabackup_logfile文件,备份效率无法保证。
调整为throttle=10后,备份过程中期IO使用情况为:

10*10MB/S=100MB/S=102400KB/S,证明throttle=10的确有效。
参数parallel使用多个进程来备份数据文件,在磁盘速度够快情况下,parallel能有效提升备份效率,但无法进行限速操作。
======================================================================================
由于参数throttle设置较低会导致无法正常备份,而设置较高又无法起到限速目的,因此考虑使用pv方式来限速。
PV 由Andrew Wood 开发,是 Pipe Viewer 的简称,经过管道显现数据处理进展的信息,控制管道数据的流入流出速度,就到控制备份的速度。
为验证pv限速和对比stream备份和普通备份的差距,设计下面三种测试方案:
方案1:使用stream=tar流时备份+使用tar -x解压到本地+使用PV限制速度200M(下图红色框标识)
方案2:不使用stream流式备份+备份本地+不限制速度(下图绿色框标识)
方案3:使用stream=tar流时备份+使用tar -x解压到本地+不限制速度(下图黄色框标识)
测试脚本为:
## 使用stream=tar流时备份
## 使用tar -x解压到本地
## 使用PV限制速度200M
innobackupex \
--defaults-file="/export/servers/mysql/etc/my.cnf" \
--host="localhost" \
--port=3358 \
--user='root' \
--password='root_password' \
--stream=tar \
"/export/bak/tmp/" |pv -q -L200m | tar -x ## 不使用stream流式备份
## 不限制速度
innobackupex \
--defaults-file="/export/servers/mysql/etc/my.cnf" \
--host="localhost" \
--port=3358 \
--user='root' \
--password='root_password' \
"/export/bak/full/" ## 使用stream=tar流时备份
## 使用tar -x解压到本地
## 不限制速度
innobackupex \
--defaults-file="/export/servers/mysql/etc/my.cnf" \
--host="localhost" \
--port=3358 \
--user='root' \
--password='root_password' \
--stream=tar \
"/export/bak/tmp/" | tar -x
备份对CPU的影响:

备份对IO读写次数的影响:

备份对IO读写速度的影响:

对比发现:
1、使用pv命令可以有效限制备份读写速度,但不能精确限制读写速度(限速200MB/S,实际速度170MB/S)
2、使用stream压缩+解压进行备份时,CPU有轻微增长,但影响并不明显。
3、在不限速情况下,使用stream压缩+解压的备份效率远低于普通备份(上面测试环境下接近差一倍)
4、使用stream压缩+解压进行备份时,可以增减备份线程parallel来提高备份效率。
MySQL Backup--Xtrabackup备份限速问题的更多相关文章
- MySQL Backup mysqldump备份流程学习
我们都知道MySQL逻辑备份工具mysqldump可以保证备份数据的一致性,但是它是怎么保持一致性的? 本文不讨论mysqldump具体的选项和用法,一直对mysqldump的工作机制梳理的不太清楚, ...
- MySQL 基于xtrabackup备份—热备工具
xtrabackup(仅对InnoDB存储引擎支持热备) percona公司开发 改进的MySQL分支:percona-server 存储引擎改进:InnoDB —> XtraDB 使用本地的R ...
- Mysql使用xtrabackup备份失败处理
在生产环境中使用的是xtrabackup,对mysql进行备份,每天0点开始备份,周日是全量备份,其他时间是基于周日做的增量备份,通过脚本实现,每天备份完成后会发送短信,突然有一天,备份全部失败,手动 ...
- MySQL Backup myloader
之前的博文当中提到备份工具mydumper的使用,而软件包中还包含了与之对应的恢复工具myloader,本文就总结下myloader的用法.关于mydumper的安装与使用可以参考之前的博文:MySQ ...
- mysql数据库数据备份还原
1.直接在命令行里面执行 备份一个数据库:mysqldump -h server -u username -p password db_name > database-sqlbkp_`date ...
- 使用xtrabackup备份mysql数据库
数据在一个企业里非常重要,因此经常需要备份数据库,确保出线故障时,可以立刻恢复数据到最新状态,目前常见的备份工具有mysqldump和xtrabackup,数据量较少时可以使用mysqldump,但随 ...
- 使用 xtrabackup 进行MySQL数据库物理备份
0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...
- mysql innobackupex xtrabackup 大数据量 备份 还原
大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推荐xtrabackup,这个工具比mysqldump要快很多. 一.Xtrabackup介绍 1, ...
- 解析XtraBackup备份MySQL的原理和过程(转)
原文:http://ourlinux.blog.51cto.com/274624/844859 XtraBackup是percona公司提供的开源工具,以热备Innodb表著称而被广泛采用. Xtra ...
- xtrabackup备份mysql数据库的使用方法
xtrabackup是由percona提供的mysql备份工具,它是一款物理备份工具,通过连接数据库把数据库的数据备份出来.对于innodb存储引擎其支持全量备份和增量备份.对于myisam存储引擎只 ...
随机推荐
- thinkphp3.2源码(错误和异常处理)
写在前面:tp3.2中每次载入入口文件时都会进行错误和异常的捕获,解读这一部分代码可以对以后的优化很有好处. 处理概览: 错误捕获与处理: 致命错误捕获: 我们尝试在 Home/ ...
- [转]详解Linux(centos7)下安装OpenSSL安装图文方法
OpenSSL是一个开源的ssl技术,由于我需要使用php相关功能,需要获取https的文件所以必须安装这个东西了,下面我整理了两种关于OpenSSL安装配置方法. 安装环境: 操作系统:CentO ...
- 某表中字段值存在多个Gid逗号分开 取值拆分每个gid SQL多个逗号隔开的取值
存在值信息 表值函数实现: --实现split功能 的函数 拆分 逗号分开的多个值 ),)) )) as begin declare @i int set @SourceSql=rtrim(ltrim ...
- iOS UILabel文字自适应高度自适应
第一步:创建UILabel对象,并设置一些基本设置 UILabel *label = [[UILabel alloc] init]; label.text = @"8月29日,在雅加达亚运会 ...
- 基于Emit的C#下DataTable转实体类方法,一直报错.
xxxx ;WITH Tab AS ( SELECT CAST(ROW_NUMBER()OVER(ORDER BY CC.CreateTime DESC) AS INT) AS Sequency, ) ...
- win10 解决Failed installing 'Tomcat8' service
今天将tomcat安装成服务执行service.bat install时遇到 Installing the service 'Tomcat8' ... Using CATALINA_HOME: &qu ...
- 分布式唯一ID生成常用方案
1. 使用JAVA的UUID生成 算法的核心思想是结合机器的网卡.当地时间.一个随记数来生成UUID. 优点:本地生成,生成简单,性能好,没有高可用风险 缺点:长度过长,字母和数字组合,存储冗余,且无 ...
- 【VS开发】MFC多显示器适配显示设置
由于工程需要在多个显示器上显示不同类容,故查找了一些资料来满足这个功能.在VC中分为三步来操作:检测显示器个数:读取屏幕分辨率和其他参数:设置程序的显示坐标. 第一步:检测屏幕个数 网上查找到的通用方 ...
- DHCP、DHCP Snooping及DHCP relay工作原理入门及实践(转)
原文https://blog.51cto.com/5167020/2312718 序:DHCP服务相对简单,写本文的目的是为了讲一些DHCP安全方面的技术. 1.DHCP基础 DHCP 全称动态主机配 ...
- IDEA 获取类的相对路径和绝对路径
1.相对路径: 结果:action.HelloAction 2.绝对路径 结果:E:\javaProject\JavaEEProject\day08_Struts2_test01\src\action ...