mysqlpump的性能测试(r12笔记第89天)

  在MySQL 5.7中做逻辑备份恢复有了一个新的工具mysqlpump,如果你掌握了mysqldump,那么使用mysqlpump就是分分钟的事情,因为很多参数都是很相似的,可以理解它是mysqldump的加强版,一个亮点就是有了并行的选项,使得数据备份的性能更加强大。

  有一点值得说明的是,为了保证数据一致性,我们一般备份都会使用--single-transaction的选项,在5.7.11以前,mysqlpump和并行参数是有冲突的,在这个版本之后做了修复。

  但是mysqlpump到底怎么样呢,我在5.7.17的版本中做了一些简单的测试,可以看出一些性能的差异。

   为了尽可能保证导出的数据备份能够占用少的磁盘空间,我们经常会使用gzip来压缩,我们就分了几个场景来对比压缩,不压缩,开启并行后的数据备份的性能差异。

   我选取的数据集大小在30G左右。含有5个数据库,单表数据量在200万以上,单库的表数量在10个以上。

   得到的一个基本测试结果如下,后续的测试结果会一并补上。

option

real

idle%

dump_size(byte)

compress=false

6m52.232s

85.92

26199028017

compress=false|gzip

43m12.574s

90.72

12571701197

compress=true

19m24.541s

80.48

26199028017

compress=true   |gzip

43m12.515s

84.94

12571200219

parallelism=4 

5m30.005s

76.43

26199028017

parallelism=4   |gzip

42m41.433s

90.51

12575331504

parallelism=8

4m44.177s

66.73

26199028017

可以看到默认来说,导出一个30G左右的dump需要近7分钟,而启用了并行之后,并行度为4的时候,导出时间是5分半,提升了1.5分钟(20%),并行度为8之后提升了2分钟左右(30%)。而在系统层面做了压缩的时候,压缩率达到了近48%。还是相当不错的。在compress=true只是在服务端客户端交互中使用数据包压缩,最后的备份集大小是没有任何改变的。后续会测试使用不同的压缩算法,备份的性能差异。

个人微信公众号,欢迎扫码关注。

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

RMAN备份恢复

1介绍RMAN是RecoveryManager的缩写,为Oracle的恢复管理器,是Oracle数据库推荐提供的一种恢复和备份数据库的工具,也是数据库管理员管理数据库常用的工具之一。它是物理备份,而EXP是逻辑备份它可以实现一致性备份,非一致性备份,增量备份,而exp且做不到很多第三方的工具也是调用rman的脚本来实现备份功能,如赛门铁克,NBU

基于mysqldump聊一聊MySQL的备份和恢复

前言Hi,大家好,我是麦洛,今天我们聊聊MySQL的备份和恢复,在下面文章中,你会了解到MySQL常见的备份类型,以及基于mysqldump命令在日常开发中如何做

MySQL运维之

1、mysqldump备份一个数据库mysqldump命令备份一个数据库的基本语法:mysqldumpuuserppwddbnameBackup.sql我们来讲解一下备份的文件都包含了什么?\MySQLdump10.13Distrib5.5.20,forWin32(x86)\

MySQL备份与恢复(3)mysqldump备份多个库

一、mysqldump的工作原理、    利用mysqldump命令备份数据的过程,实际上就是把数据从mysql库以逻辑的sql语句的形式直接输出或生成备份的文件的过程    利用这个备份文件恢复的时候的原理?就是把备份的sql命令再执行一遍。二、备份多个库mysqlshowdatabases;

mysql的全量备份与增量备份

mysql的全量备份与增量备份全量备份:可以使用mysqldump直接备份整个库或者是备份其中某一个库或者一个库中的某个表。备份所有数据库:\root@my~\mysqldumpurootp123456alldatabases/opt/all.sqlmysqldump:\Warning\Usinga

Java备份MySQL

1概述使用java备份mysql数据库,主要是使用mysqldump与Runtime().getRuntime().exec().2创建备份路径如果没有备份的存储路径首先创建路径.PathpathPaths.get(xxxx);try{Files.createDi