恒丰银行 I MySQL MGR与Galera性能测试买家秀

作者介绍:

赵守斌,十年银行业数据库管理经验,熟悉各种Oracle数据库系统方案,对MySQL开源数据库也有涉猎。目前牵头负责恒丰银行数据库管理和各类数据库服务化平台建设。

背景

Background

很多关注数据库技术的IT人士可能记不住去年双十二都剁手买了什么东西,但是一定会有人对当时一篇“Galera将死——MySQL Group Replication正式发布”的文章还有印象。

长期以来MySQL官方都缺少原生的MySQL集群多活方案,所以也给第三方公司提供了发展的机会。Galera就是其中的一个典型,两种基于Galera的方案MariaDB Galera Cluster 和Percona XtraDB Cluster发展已有几年的历史,而且已经有不少业界使用经验,比如去哪儿网就使用了较多的Percona XtraDB Cluster(PXC)

2016年12月12日ORACLE发布了MySQL Group Replication的首个GA版本,并且提供了自家对比Galera的性能测试,当然是各方面秒杀Galera。

原文链接:

http://mysqlhighavailability.com/performance-evaluation-mysql-5-7-group-replication/?spm=5176.100239.blogcont66550.17.T4N8cZ

简单来说OLTP场景下,MGR大概性能是Galera的两倍。也就是这篇激动人心的原生的、性能更先进的MySQL集群产品的发布才有了去年双十二期间“Galera将死——MySQL Group Replication正式发布”的火爆。

作为发展历史更悠久的Galera当然也不会坐以待毙,时隔四个月之后,2017年4月份Percona发布了Percona XtraDB Cluster 5.7.17-29.20版本,性能得到极大提高,并且Percona公司也发布了自家对比MGR的性能对比测试。

原文地址:

https://www.percona.com/blog/2017/04/19/performance-improvements-percona-xtradb-cluster-5-7-17/

原文较长,简单来说在提高wsrep_slave_threads并发复制线程数等综合优化之后,PXC的性能像开挂一般提升,Percona自己对比5.7.17和上一个版本5.7.16之间的性能,OLTP综合场景下大概提升有3倍多,可见的确称得上大杀器:

测试

Test

以上两家公司各自测试,都宣称自己的产品性能优于对方,那么作为客户应该相信哪一家呢?

我们使用同样的硬件环境,独立测试了两家产品。

测试方案

版本

测试环境

MySQL异步复制

5.7.19

二路X86服务器,256G内存,SSD硬盘,万兆网

MySQL半同步复制

5.7.19

MySQL Group Replication

5.7.19

Percona XtraDB Cluster

5.7.18-29.20

测试过程使用标准的sysbench 0.5版本的OLTP场景,数据库准备了100张400w的表,压测并发线程120,MySQL的公共参数基本参考Percona的测试(他们家公布了所有案例和参数文件,可供用户自行测试)压测命令参考如下:

经过多轮30分钟的长时间压测,取sysbench自动统计的压测结果

对比结果:

(1) 相同测试环境下,MySQL Group Replication与Percona XtraDB Cluster性能基本差不多,相当于单机性能的60%。

方案

TPS

平均响应时间

TPS同比单机

响应时间同比单机

MySQL单主库

10260

11.69

MySQL异步复制

10385

11.55

101.22%

98.80%

MySQL半同步复制

8741

13.73

85.19%

117.45%

MySQL MGR

6066

19.78

59.12%

169.20%

percona PXC

5884

20.39

57.35%

174.42%

(2)增加网络0.6ms的延迟对半同步复制影响较大(TPS下降约一半,平均交易响应时间翻倍),对MySQL Group Replication与PerconaXtraDB Cluster基本没有影响(TPS和平均交易响应时间均变化不大),意味着如果同城两个数据中心网络条件好,那么具备同城跨机房部署集群的条件。

(3)PXC的稳定性要好于MGR,TPS比较稳定,不像MGR毛刺比较严重:

(4)测试发现性能瓶颈点

对于PXC来说,测试发现wsrep_slave_threads对TPS影响较大(详见下表),官方也建议可以适当调大此参数,但是要注意对CPU使用率的影响。综合本场景最终选择设置为20进行压测。

压测机器

wsrep_slave_threads

tps

平均响应时间

机器1

48

5990

20

32

6003

19.99

16

4858

24.69

8

2959

40

1

616

194

机器2

48

5900

20

20

5821

20

16

5174

23

对于MGR来说,发现flow_control对TPS影响较大。默认值25000测试TPS只有1125,调大十倍到250000后TPS能达到近6000。

(4)功能性对比

本文主要目的是为了性能压测,但是在压测过程中也顺便体验了两种产品的功能,受限于使用经验不够丰富,简单总结如下:

MySQL MGR

percona PXC

安装

插件式安装,比较简单

提供打包的rpm包,安装略复杂

成熟度

发布仅一年,无客户使用

发布五年多,经历MySQL5.5/5.6/5.7三个版本;有较多客户使用,如国内去哪儿网

性能

实际测试性能相差不大只有3%;大多数同步的方式,性能短板不明显

实际测试性能相差不大只有3%;由于数据在所有节点强同步所以性能由最差节点决定

功能性对比

安装简单,但是使用较难,配套工具不够成熟(如集群扩展多节点需要用户自行备份恢复数据库)对大事物支持欠缺(如单笔交易插入100万条记录),集群容错性不够好(复制冲突时集群会分裂)

集群添加节点自动扩展,集成自家Xtrabackup工具,无需用户自行备份恢复数据,提供配套的监控工具,支持大事物(一次性插入1000万条记录),自身具备冲突检测解决方案

高可用特性

基于Paxos协议,数据在大多数节点同步;具备多主写入功能,但是不推荐使用

GaleraReplication是一种certiticationbased replication保证集群所有节点强同步;也具备多主写入功能,但是也需要注意减少冲突

结论

Conclusion

MySQL MGR作为官方力推的明星产品,的确具备了与市场老牌产品如PXC竞争的资格,但是现在就谈Galera将死还言之过早,在功能完善性方面还比不上成熟的PXC。期待两家产品继续PK竞争,从而推出更加稳定、高效的集群解决方案。

参考

Reference

公用的主要参数:

PXC的特殊参数:

测试过程中发现wsrep_slave_threads默认设置8严重限制TPS,所以调大到20

MGR的特殊参数:

测试过程中发现默认flow_control设置25000太小,严重限制了TPS,所以调大到250000

SET GLOBALgroup_replication_flow_control_certifier_threshold=250000; SET GLOBALgroup_replication_flow_control_applier_threshold=250000;

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-08-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jerry的SAP技术分享

CRM数据库表COM_TA_R3_ID的数据来源

这个表存放的内容是CRM产品同名settype COM_TA_R3_ID对应的业务数据。

2687
来自专栏邵靖的专栏

一个基于 Docker 的负载均衡实例

本文目地主要是给大家简单安利一下目前最火的容器产品 Docker 及其所涉及的相关技术,并通过一个实际例子演示一下容器技术的典型应用场景。

2.1K1
来自专栏趣谈编程

白话TCP流量控制

上篇(一个故事读懂TCP拥塞控制)讲的是拥塞控制,这篇讲流量控制。还是以运输粮食为场景。

1312
来自专栏杨建荣的学习笔记

和开发讨论的一个数据变更需求(r9笔记第8天)

最近在评估一个开发同事的需求时,发现随着需求的变化,DBA相关的评估工作也会随之变化,同时反射到开发同事那边,通过这个案例也可以看到很多的需求变化,可以从中看出...

3065
来自专栏企鹅号快讯

江湖秘笈:说烦了破解、渗透等,不如大家一起聊聊硬盘加密?

一天一点 Hello,看官们,恭喜你们艰苦的熬过了这周,并且在众多忙碌的工作中解放出来。 明天就是黄金周,紧随而来的是周一元旦佳节,虽然这个假期很短,整体时间只...

1816
来自专栏FreeBuf

SWIFT惊天银行大劫案全程分析

1.前言 最近,使用国际银行业合作SWIFT系统的银行频频发生被盗,是由于SWIFT系统真的存在严重安全问题,还是跟好莱坞大片那样直接撬开银行金库?本文将针对孟...

7349
来自专栏禹都一只猫博客

Zabbix:企业微信报警配置

2618

物联网,数据库系统和数据分发,第二部分

在这个由两部分组成的系列文章的第一部分中,我介绍了物联网中需要收集数据的位置:公共云或私有云中的边缘设备,网关和服务器。我还讨论了这些系统的特点以及选择合适的数...

3244
来自专栏谭伟华)的专栏

Amazon Aurora:云时代的数据库 ( 上)

文章是 Amazon 在 SIGMOD\'17 上最新发表的关于 Aurora 论文的翻译版本,详尽的介绍了Aurora 设计背后的驱动和思考,以及如何在云上实...

4990
来自专栏北京马哥教育

Linux 下的两种分层存储方案

在存储设备中,使用分层技术,将冷热数据自动分层存放在具有不用读写性能的存储介质上,已经是很普遍的做法,比如 IBM 的 DS8K 中使用的 Easy Tier。...

2596

扫码关注云+社区