本文共 1968 字,大约阅读时间需要 6 分钟。
mysqlpump
在MySQL 5.7中做逻辑备份恢复有了一个新的工具mysqlpump,如果你掌握了mysqldump,那么使用mysqlpump就是分分钟的事情,因为很多参数都是很相似的,可以理解它是mysqldump的加强版,一个亮点就是有了并行的选项,使得数据备份的性能更加强大。
有一点值得说明的是,为了保证数据一致性,我们一般备份都会使用--single-transaction的选项,在5.7.11以前,mysqlpump和并行参数是有冲突的,在这个版本之后做了修复。
但是mysqlpump到底怎么样呢,我在5.7.17的版本中做了一些简单的测试,可以看出一些性能的差异。
而mysqldump是大家最耳熟能详的工具了,如果没用过,都不好意思说自己会MySQL,这样一个工具和Oracle里的exp工具一般,经典而且功能丰富。
测试环境说明
为了尽可能保证导出的数据备份能够占用少的磁盘空间,我们经常会使用gzip来压缩,我们就分了几个场景来对比压缩,不压缩,开启并行后的数据备份的性能差异。
我选取的数据集大小在30G左右。含有5个数据库,单表数据量在200万以上,单库的表数量在10个以上。
数据备份的测试结果
数据备份的测试场景自己做得多一些,当然备份层面的压缩暂时还没有测完整,其它的场景
option | real | idle% | dump_size(byte) | |
mysqlpump | 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 | |
parallelism=8 |gzip | 42m50.417s | 90.38 | 12574079375 | |
parallelism=16 | 5m19.060s | 90.38 | 26199028017 | |
parallelism=16 |gzip | 42m50.939s | 89.65 | 12577618359 | |
parallelism=32 | 5m10.220s | 89.23 | 26199028017 | |
parallelism=32 |gzip | 45m47.022s | 89.7 | 12577618359 | |
mysqldump | compress=false | 9m19.785s | 87.33 | 26176062499 |
compress=false |gzip | 43m23.036s | 90.97 | 12524413896 | |
compress=true | 37m42.052s | 90.1 | 26176062499 | |
compress=true |gzip | 43m17.755s | 85.89 | 12524413896 | |
compress=true | 38m55.968s | 90.22 | 26176062499 | |
compress=true |gzip | 43m1.672s | 85.77 | 12524413896 |
可以看到默认来说,导出一个30G左右的dump需要近7分钟,而启用了并行之后,并行度为4的时候,导出时间是5分半,提升了1.5分钟(20%),并行度为8之后提升了2分钟左右(30%)。而在系统层面做了压缩的时候,压缩率达到了近48%,而并行度在更大的时候,备份速度就差别不大了,一来也和CPU的情况有关,整体来说并行的效果还是不错的。在compress=true只是在服务端客户端交互中使用数据包压缩,最后的备份集大小是没有任何改变的。后续会测试使用不同的压缩算法,备份的性能差异。
系统层面压缩备份的情况
如果备份不通过gzip管道来压缩,而是直接生成备份压缩,效率如果呢。一个26G左右的备份,gzip压缩的时间大概是43m18.974s,其实还真不短,比预想的长多了。
数据导入效率
数据的导入,我就简单测试了两个场景,mysqlpump并行备份导出,导入,mysqldump备份导出导入
mysqlpump | export parallelism=4 | 7m |
import | 85m4.574s | |
mysqldump | export | 9m8.420s |
import | 97m9.760s |
转载地址:http://petyx.baihongyu.com/