暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

[译]备份/恢复性能测试结论:mysqldump vs MySQL Shell 组件 vs mydumper vs mysqlpump vs XtraBackup

原创 晨辉 2022-03-11
1644
原文地址:https://www.percona.com/blog/backup-restore-performance-conclusion-mysqldump-vs-mysql-shell-utilities-vs-mydumper-vs-mysqlpump-vs-xtrabackup/
原文作者:Vinicius Grippa
复制

不久前,我发布了一篇博文,比较了不同MySQL工具(如mysqldump,MySQL Shell备份功能,mysqlpump,mydumper,和 Percona XtraBackup)的备份性能,你可以看下如下第一份分析报告:
Backup Performance Comparison: mysqldump vs. MySQL Shell Utilities vs. mydumper vs. mysqlpump vs. XtraBackup
译者注:当然也可以直接看译文:[译]备份性能对比:mysqldump vs MySQL Shell组件 vs mydumper vs mysqlpump vs XtraBackup
然而,我们知道这个备份只是故事的第一部分,那么数据还原时间会怎样呢? 对于完整的操作(备份+还原)哪个工具的性能会更好
让我们看下这个结果和下面部分的结论。
image.png

Benchmark 结果

我在一个配置了128GB内存,32颗虚拟CPU,两块600GB的磁盘(一块用于备份,另一块用于存放MySQL数据,每块磁盘可提供5000 IOPS)的一套m5dn.8xlarge实例上运行的benchmark。MySQL的版本是8.0.26,配置了89GB的buffer pool,20GB的redo log,测试数据库数据大小为96GB(详细细节在下面)
当我们汇总备份时间和还原时间,我们获得了如下的图表结论:
image.png
下图是我们去掉了mysqldump来对比其他工具以让展现效果更好:
image.png
每个工具创建的备份集大小:
image.png
注意XtraBackup(不带压缩)的备份数据是不包含二进制日志的。接下来,我们看下备份时间:
image.png
还原时间:
image.png

分析结果

当我们汇总备份和还原时间后,我们发现最快的工具是Percona XtraBackup,XtraBackup的主要优势不仅在速度上而且还在于它能支持基于时间、点恢复的能力。当然,这个工具也支持压缩和加密。
我们还可以看到,mydumper/myloader和MySQL Shell组件在两个阶段都有很好的表现,同Xtrabackup 不同点在于这两个工具都是逻辑备份工具,这也就意味着这些工具需要连接到MySQL实例进行抽取数据到dump 文件。因为他们必须从MySQL实例进行数据抽取,所以这些工具对MySQL的配置和备份/还原参数很敏感。像MyDumper/MyLoader就有一些可以提升备份、还原性能的参数:–rows, --chunk-filesize, 以及 --innodb-optimize-keys参数。
注意 XtraBackup, MyDumper, 和 mysqldump 支持流还原(stream restore),这个可以备份和还原操作的整体时间。
备份和还原最不一致的工具是mysqlpump,它可以很快地备份,但在还原性能上很糟糕,因为它是采用单线程进行还原度,就像mysqldump一样。
基于测试,我们可以知道compression、TLS、socket、TCP/IP这些参数对整体操作时间影响不大。因为没有很大影响,那么这些工具可以执行压缩、使用TLS 像MySQL Shell,mydumper/myloader,而XtraBackup 有一个大的优势,因为它的备份是更安全的,也更省磁盘空间(更少磁盘空间=更少的开销)
在这些工具的特性与备份和恢复数据库所花费的时间之间权衡选择是所有DBA们都需要综合考量的。

问答

接下来回答下关于这个主题的一些问题/评论:
问:你看MySQL Shell和 mydumper之间的差异被解释为一个使用了安全加密传输(SSL)一个没有使用,但不幸的是,加密是有开销大。
答:是的,SSL是有开销。但是,我们考虑到SSL安全的好处以及考虑整个进程,那么这个开销是很小的(换句话说压缩也是一样的)。
Does XtraBackup support ZSTD?
问:XtraBackup 支持ZSTD么?
答:目前还不支持,但是,这是一个功能需求(你可以跟随JIRA指导获得更新):
https://jira.percona.com/browse/PXB-2669

问:有什么不同的压缩工具可以取代mysqldump gzip压缩方式么
答:使用gzip的管道或者直接发送未压缩的dump到磁盘这个差异是可以忽略不计的,mysqldump工具是最低效的,归于它原生的单线程,这个极其影响性能(译者注:指备份性能)。因为它原生的单线程,以至于不能最大化利用硬件资源(特别在IO上)。
问:当运行备份时对数据库的性能影响是怎样的?
答:真不幸,我没有测量这个。以我的经验,大部分情况下会使用一个独立的从数据库进行备份。如果MySQL社区对这个很感兴趣,我可以针对这个再写一个博文(在评论中留下你的观点)

在还原阶段挤出更多果汁是可行的,我们可以做一些操作比如 关闭二进制日志、异步写,你可以检查下面两篇博文的建议(正面或者反面):
https://www.percona.com/blog/2020/05/14/tuning-mysql-innodb-flushing-for-a-write-intensive-workload/
https://www.percona.com/blog/2014/05/23/improve-innodb-performance-write-bound-loads/
总之,这篇博文是为了给这些工具一个综合的观点。我试图坚持使用每个工具的默认选项(除了线程数),以保持测试尽可能公平。当然,时间也不是公司考虑选用备份方法的唯一因素(安全性、加密和数据保护都非常重要)。在我的日常工作中,我使用mydumper/myloader 和 XtraBackup 因为我对它们的命令更熟悉,我已经使用很长一段时间了。但是,我还是建议密切关注MySQL Shell组件,因为它正在成为一个执行许多任务的迷人工具(备份和还原都具有出色的表现)

硬件和软件规格

以下是基准测试的规格:
32 CPUs
128GB 内存
2x io1 disks 600 GB with 5000 IOPS each
Centos 7.9
MySQL 8.0.26
MySQL shell 8.0.26
mydumper 0.11.5 – gzip
mydumper 0.11.5 – zstd
Xtrabackup 8.0.26

最后修改时间:2022-03-14 11:19:51
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • Benchmark 结果
  • 分析结果
  • 问答
  • 硬件和软件规格