经过几个月的紧张筹备,GreatSQL宣布正式开源。
GreatSQL是源于Percona Server的分支版本。GreatSQL在Percona Server已有的稳定可靠、高效、管理更方便等优势基础上,进一步提升了MGR(MySQL Group Replication)的性能及可靠性,新增金融级应用场景需求特性并修复数个影响可靠性的严重bug。
GreatSQL可以作为MySQL或Percona Server的可选替代方案,用于线上生产环境。
GreatSQL完全免费并兼容MySQL或Percona Server。
GreatSQL由万里数据库发起、主导、维护,也欢迎广大MySQL使用者、爱好者下载使用,或者提交代码、issue等。
万里数据库核心研发团队深入研究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架构。
在金融级应用场景中,对数据的可靠性和架构的容错性要求都更高,对多数据中心甚至多活都有较高需求。此外,业务系统中经常会有定期跑批计算任务,而MySQL在这方面存在明显的性能瓶颈,很难满足大数据量跑批需求。为此,GreatSQL未来会在以下几方面着重发力。
MySQL社区版:耗时约29秒才完全恢复。
GreatSQL版本:耗时约3秒即完全恢复,时效提升约90%。 – 节点异常状态判断更完善,比MySQL社区版本能更快发现、判断节点异常状态,有效减少切主和异常节点的等待耗时。下面两个图体现了GreatSQL针对节点状态异常做出更快速准确的判断。
MySQL社区版:5秒发现问题,22秒后将其踢出。
GreatSQL版本:2秒发现问题,9秒后将其踢出,时效提升约60%。
合并了由华为鲲鹏计算团队贡献的两个Patch,分别针对OLTP和OLAP两种业务场景。 – 优化InnoDB事务锁机制,将原来的红黑树改为无锁哈希结构,在高并发场景中有效提升事务并发性能至少10%以上。
未来我们还计划将一部分企业级特性也开放出来,包括且不仅限于国产化硬件适配、等保合规、安全加密、Oracle兼容等众多特性。
特性 | GreatSQL | MySQL社区版 |
---|---|---|
地理标签 | ||
全新流控算法 | ||
InnoDB并行查询优化 | ||
InnoDB事务锁优化 | ||
网络分区异常应对 | ||
大事务处理 | ||
节点异常退出处理 | ||
一致性读性能 | ||
提升MGR吞吐量 | ||
多写模式下可能丢数据 | / | |
单主模式下切主丢数据 | / | |
MGR集群启动效率 | / | |
集群节点磁盘满处理 | / | |
TCP self-connect问 题 | / |
GreatSQL代码已上传到gitee上,项目地址 https://gitee.com/GreatSQL/GreatSQL,欢迎围观、加星,也欢迎来“找茬”,提patch。
Enjoy GreatSQL :)