出品
开源中国
文
白开水不加糖
GreatSQL社区宣布,在经过几个月的紧张筹备后,GreatSQL现已正式开源。
根据介绍,GreatSQL是源于PerconaServer的分支版本,除了PerconaServer已有的稳定可靠、高效、管理更方便等优势外,特别是进一步提升了MGR(MySQLGroupReplication)的性能及可靠性,以及众多bug修复。此外,GreatSQL还合并了由华为鲲鹏计算团队贡献的两个Patch,分别针对OLTP和OLAP两种业务场景,尤其是InnoDB并行查询特性,TPC-H测试中平均提升聚合分析型SQL性能15倍,最高提升40多倍,特别适用于周期性数据汇总报表之类的SAP、财务统计等业务。
GreatSQL可以作为MySQL或PerconaServer的可选替代方案,用于线上生产环境;完全免费并兼容MySQL或PerconaServer。GreatSQL由万里数据库发起、主导、维护,官方欢迎广大MySQL使用者、爱好者下载使用,或者提交代码、issue等。
1.使用MySQL社区版存在什么风险
万里数据库核心研发团队深入研究MGR架构,并在不断的BUG修复实践中总结出了一套完善、流畅的BUG修复流程,将MGR的缺陷分为BUG和性能两类,整理出共16大类共数几十个BUG及性能缺陷问题。
搜索MySQL官方bug站,可以看到MGR分类下未修复的bug数量还是比较多的:
当服务器配置高,网络环境好,业务量小的时候,这些MGR相关的bug可能不容易碰到。如果是网络环境稍微复杂一些,例如同城多数据中心环境,甚至跨交换机,都可能会遇到网络分区条件下的一些bug。或者当业务量较大,负载较高时,可能会产生丢数据、OOM,或事务频繁回滚、死锁等问题。
由于MGR自身的复杂性,以及复现BUG场景也更困难,所以MySQL社区版针对MGR的BUG修复工作通常比较缓慢,堆积较多。这也就造成了不少用户不太敢放心使用MySQL社区版的MGR,担心遇到各种不可控的BUG,甚至较严重的线程、事务hang住等问题,感觉还是不那么可靠。
而GreatSQL已经有效解决了绝大多数较严重的问题,可以更放心地在金融级应用场景使用MGR架构。
2.GreatSQL的优势及展望
在金融级应用场景中,对数据的可靠性和架构的容错性要求都更高,对多数据中心甚至多活都有较高需求。为此,GreatSQL未来会在以下几方面着重发力。
2.1增加更多金融级场景需求特性
增加地理标签功能。当在多机房部署MGR时,可以保证每个机房中至少有一个节点都参与事务认证,确保该节点总有最新事务,这可用于解决多机房数据同步的问题。
采用全新的流控机制,流控阈值计算更合理、细致,不会出现频繁性能抖动问题。
官方称,更多企业级新特性正在持续完善中,后续的版本会陆续放出。
2.2提升同城双机房和跨城架构部署的可靠性
支持AFTER模式下多数派写机制。发生网络分区时,只要多数派节点已经回放完毕,集群就可以继续处理新的事务,依然可以保障集群的高可用性。
解决磁盘空间爆满时导致MGR集群阻塞的问题。当发现某节点磁盘空间满了,就会让这个节点主动退出集群,避免像MySQL社区版那样整个集群被阻塞的问题。
解决多主模式下或切主时可能导致丢数据的问题。调整了事务认证处理流程,改成放到applierqueue里按照paxos顺序处理,这就解决了在多主模式下或切主时可能导致丢数据的问题。
解决节点异常退出集群时导致性能抖动的问题。优化paxos通信机制,发生异常时只会产生约1~3秒的性能小抖动,最差时TPS可能只损失约20%~30%。而MySQL社区版本可能会造成约20~30秒的性能抖动,最差时TPS可能有好几秒都降为0。下面两个图非常明显体现了GreatSQL针对这种情况所做的优化。
MySQL社区版:5秒发现问题,22秒后将其踢出。
GreatSQL版本:耗时约3秒即完全恢复,时效提升约90%。
节点异常状态判断更完善,比MySQL社区版本能更快发现、判断节点异常状态,有效减少切主和异常节点的等待耗时。下面两个图体现了GreatSQL针对节点状态异常做出更快速准确的判断。
MySQL社区版:5秒发现问题,22秒后将其踢出。
GreatSQL版本:2秒发现问题,9秒后将其踢出,时效提升约60%。
2.3MGR性能提升
优化事务认证队列清理算法。MySQL社区版本中,认证数据库采用类似全表扫描的方式,效率极低。优化后,采用基于类似索引机制,有效解决清理效率低、性能抖动大的问题。
提高MGR吞吐量。经过优化,有效提升MGR的吞吐量,并减少网络延迟对访问性能的影响。
提升一致性读性能,并降低从库只读延迟。
2.4InnoDB事务锁以及并行查询优化
合并了由华为鲲鹏计算团队贡献的两个Patch,分别针对OLTP和OLAP两种业务场景。
优化InnoDB事务锁机制,将原来的红黑树改为无锁哈希结构,在高并发场景中有效提升事务并发性能至少10%以上。
实现对InnoDB底层B+树多个子树的并行扫描机制,极大提升聚合查询效率,TPC-H测试中,最高可提升30倍,平均提升15倍。
特别适用于周期性数据汇总报表之类的SAP、财务统计等业务。
其他更多企业级特性展望
官方表示,在未来,他们还计划将一部分企业级特性也开放出来,包括且不仅限于国产化硬件适配、等保合规、安全加密、Oracle兼容等众多特性。
3.GreatSQLVSMySQL社区版
GreatSQL代码现已上传到Gitee。