墨天轮访谈 | 叶金荣:GreatSQL 开源社区——做中国广受欢迎的开源数据库
分享嘉宾:叶金荣 万里数据库开源生态负责人
整理:墨天轮社区
导读大家好,我是来自万里数据库的叶金荣,GreatSQL 开源社区的愿景是做中国广受欢迎的开源数据库,这也是我今天分享的主题。
GreatSQL 社区
GreatSQL 开源社区于 2021 年初成立,自成立以来获得了众多开发者伙伴的积极响应,现已成长为国内活跃的 MySQL 开源社区。社区致力于通过开放的共享合作,构建国内自主 MySQL 版本及开源数据库技术,推动中国开源数据库及应用生态的繁荣发展。
2021 年 8 月,GreatSQL 开源数据库首个版本发布,并于同年获得“Gitee 最有价值开源项目”荣誉称号。
图 1 GreatSQL 社区发展历程
GreatSQL 优势特性
1、地理标签
首先为大家介绍 GreatSQL 地理标签的功能,这个新功能主要用于解决多机房数据同步的问题。
新增选项 group_replication_zone_id
,用于标记节点地理标签。该选项值支持范围 0 ~ 8,默认值为 0。当集群中各节点该选项值设置为不同的时候,就被认定为设置了不同的地理标签。在同城多机房部署方案中,同一个机房的节点可以设置相同的数值,另一个机房里的节点设置另一个不同的数值,这样在事务提交时会要求每组 group_replication_zone_id
中至少有个节点确认事务,然后才能继续处理下一个事务。这就可以确保每个机房的某个节点里,总有最新的事务,从而保证数据不会丢失。
图 2 GreatSQL 优势特性:地理标签
2、仲裁节点
在 GreatSQL 8.0.25-16 版本中,新增 MGR Arbitrator 节点(仲裁节点)角色。该节点只参与 MGR 投票仲裁,不存放实际数据,也无需执行 DML 操作,因此可以用一般配置级别的服务器,在保证 MGR 可靠性的同时还能降低服务器成本。
图 3 GreatSQL 优势特性:仲裁节点
3、快速单主
第三个优势特性是新增快速单主模式,在这个模式下,不再采用 MySQL MGR 原有的认证数据库方式。新增选项group_replication_single_primary_fast_mode
用于设置是否启用,以及具体采用哪种模式。快速单主模式特别适合在跨机房部署,压力测试以及内存要求不高等多种场景。这种模式弱于传统的异步复制,但强于半同步复制,且没有 MGR 默认的认证数据库可能消耗较大内存的问题。
图 4 GreatSQL 优势特性:快速单主
4、智能选主/自定义选主策略
智能选主、自定义选主策略是 GreatSQL 新版本的又一优势特性。原来的选主策略中没有判断各节点最新事务状态,可能会导致丢失部分事务数据。
在 GreatSQL 中,新增选项 group_replication_primary_election_mode 用于自定义选主策略,可选值有以下几个:
WEIGHT_ONLY,还是按照上述传统模式自动选主,这是默认值。
GTID_FIRST,优先判断各节点事务应用状态,自动选择拥有最新事务的节点作为新的主节点。
WEIGHT_FIRST,传统模式优先,如果没有合适的结果再判断各节点事务状态。推荐设置为该模式。
图 5 GreatSQL 优势特性:智能选主/自定义选主策略
5、并行查询
最后要给介绍的是并行查询,这也是我认为最重要的一个特性。
在并行查询中,对 B+树多个子树并行扫描后再聚合,大大提升查询效率。在 TPC-H 测试中,最高可提升 30 倍,平均提升 15 倍。并行查询的功能特别适合汇总报表之类的 SAP、财务统计等业务。
图 6 GreatSQL 优势特性:并行查询
下方 InnoDB 并行查询性能提升的效果展示,提升 3.491 倍-32.823 倍不等。
图 7 InnoDB 并行查询性能提升效果
关于 GreatSQL 的功能提升与故障恢复
1、功能提升
除了以上的五个特性以外,GreatSQL 8.0.25-16 的新版本中还有哪些新功能提升了性能呢?
优化了加⼊节点时可能导致性能剧烈抖动的问题
解决节点异常退出集群时导致性能抖动的问题
MySQL 中,paxos 通信机制较为粗糙,当节点异常退出时,会造成较⻓时间(约 20~30 秒)的性能抖动,最差时 TPS 可能有好⼏秒都降为 0
GreatSQL 中优化后只会产⽣约 1~3 秒的性能⼩抖动,最差时 TPS 可能只损失约 20% ~ 30%
解决磁盘空间爆满时导致 MGR 集群阻塞的问题
解决了⻓事务造成⽆法选主的问题
完善 MGR 中的外键约束机制,降低或避免从节点报错退出 MGR 的⻛险
解决多主模式下或切主时可能导致丢数据的问题
优化事务认证队列清理算法,规避每 60s 抖动问题
修复了 recover 过程中⻓时间等待的问题
修复了传输⼤数据可能导致逻辑判断死循环问题
节点异常状态判断更完善
2、故障恢复
修复了 InnoDB 并⾏查询 crash 的问题
修复了协程调度不合理可能会造成在⼤事务时系统错误判断为⽹络错误的问题
修复了新加⼊节点在追数据时,由于超时导致连接提前关闭的问题
修复了 recovering 节点被中途停⽌导致的数据异常问题
修复了将传统主从环境下产⽣的 binlog 导⼊MGR 可能引起死循环的问题
修复了多个可能导致 MGR 视图异常的问题
修复了多个可能导致 MGR 异常崩溃的问题
在这里,我将 GreatSQL 全新的 8.0.25-16 版本与 MySQL 8.0.25 的社区版本进行对比,为大家详细介绍新版本的特点以及优化升级的内容。此次 8.0.25-16 版本更新后,GreatSQL 的性能、稳定性都得到了大幅提升。
图 8 GreatSQL8.0.25-16 版本与 MySQL 8.0.25 社区版本对比
GreatSQL 未来展望
在未来,GreatSQL 开源数据库将打造更多企业级特性,探寻更适⽤于⾦融级的应⽤场景,持续优化 Paxos 机制,提升 MGR 可靠性及性能,提升大事务的并发性能及稳定性,以便应对更多的业务场景,为用户带来更流畅的使用体验。
图 9 GreatSQL 未来展望
GreatSQL 开源社区将在万里数据库的主导和推动下,持续关注开源技术演进革新,完善社区能力,共建可持续发展的、多方共赢的开源数据库产业生态,为重点行业赋能。
我今天的分享就到这里,谢谢大家!
更多精彩内容,欢迎大家观看现场视频回放与会议资料
查看【国产数据库沙龙】开源生态专场文章、视频回放资源:https://www.modb.pro/topic/412121
欲了解更多可以进入墨天轮社区,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。
关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯
版权声明: 本文为 InfoQ 作者【墨天轮】的原创文章。
原文链接:【http://xie.infoq.cn/article/0984471bad392b5c7ccc07416】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论