GreatSQL 8.0.27 & 5.7.36背后的事

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 8核16GB
简介: 开个番外,在正式的change log之外,单开一篇介绍下GreatSQL 8.0.27-18(晚些时候发布,还在努力合并中)和5.7.36-39两个新版本的一些幕后故事吧。


老叶茶馆

老叶茶馆,泡壶茶,聊聊MySQL。 长期专注MySQL,Oracle MySQL ACE Director,鹅厂云最具价值专家


开个番外,在正式的change log之外,单开一篇介绍下GreatSQL 8.0.27-18(晚些时候发布,还在努力合并中)和5.7.36-39两个新版本的一些幕后故事吧。


1. 为什么要推出GreatSQL 5.7


GreatSQL主打的特性就是针对MGR做了众多提升和改进,另外就是8.0相对5.7其MGR的功能及可靠性也会好很多,因此本来是不想推出GreatSQL 5.7的


但考虑到目前5.7版本还有大量的用户,可能还不便于升级到8.0,为了让这些用户也能体验更好的MGR,才决定也新增5.7分支,主要是针对MGR的稳定性、可靠性及性能等方面做了些提升和优化,尤其是大事务的优化,但在8.0里的新特性都没有,因此还是强烈建议尽早升级到8.0版本,以体验更好更可靠的MGR


2. GreatSQL 5.7针对大事务场景做了什么优化


鉴于此,GreatSQL 5.7.36主要是提升MGR的可靠性、稳定性及性能,尤其是针对大事务场景下的可靠性。


在MySQL 5.7中,MGR事务没有进行分片处理,执行大事务很容易造成超时(并反复重发事务数据),最终导致节点报错并退出集群,甚至会造成mysqld进程被oom kill。

在GreatSQL 5.7中,针对该问题进行优化,并设置事务上限约为150MB,超过该上限事务会失败回滚,但节点不会再退出集群。虽然会对应用造成一定程度的不便,但总好过节点报错退出甚至crash吧。


3. 为什么要引入MGR网络开销超时记录功能


在MGR结构中,一个事务的开销包含网络层以及本地资源(例如CPU、磁盘I/O等)开销,GreatSQL针对MGR的网络层开销进行了多项优化工作,因此在网络层的开销通常不会成为瓶颈。


当事务响应较慢想要分析性能瓶颈时,可以先确定是网络层的开销还是本地性能瓶颈导致的。通过设置选项 group_replication_request_time_threshold 即可记录超过阈值的事件,便于进一步分析。


这个特性对于排查性能问题帮助较大,所以在5.7和8.0中都引入了。


4. 关于仲裁节点MGR很容易被"诟病"的地方是,一个MGR集群通常至少配置3个节点,相对于两节点主从架构来说,的确是增加了服务器成本。


引入仲裁节点功能后,这个苦恼几乎不复存在了,因为仲裁节点所需要的资源非常低,其主要功能是参与MGR投票仲裁,无需存储用户数据以及binlog,开销非常小,因此完全可以在一台服务器上跑多个实例作为仲裁节点,这就非常划算了。


此外,引入这个新功能后,官方的mysql shell很多功能都用不了,需要修改源码,加入对仲裁节点角色的支持。情急之下,仅凭我的三脚猫工夫,居然成功修改mysql shell源码,增加了对仲裁节点的支持。不过之后编译环境倒是折腾了好几天才解决,这些过程已在文章mysql-shell for GreatSQL 8.0.27编译安装及使用里分享了。


5. MySQL官方发版不太严谨


在ARM & CentOS 7环境下编译MySQL 5.7时遇到一个报错:

error:'prctl' was not declared in this scope


需要手动把 prctl.h 头文件copy到MySQL源码目录下,再修改 mysqld.cc 文件,加入include才行。这个问题可参考华为云官网上的这篇文章:error:'prctl' was not declared in this scope。


另外,在编译mysql shell 8.0.27时,发现 CMakeLists.txt 文件中少了一个宏定义,也需要自己手动修改加入才行。MySQL官方对待我报的bug(#106730)时,态度也略显傲慢。。。


有种个人感受,自从MySQL归入Oracle旗下后,虽然也增加了不少优秀的新特性,但引入的新问题也挺多的,官方基本不care来自社区的反馈声音,这其实挺符合Larry的人设的。。。


先扯这么多,在国内搞开源不易,肯定大家多使用GreatSQL和提建议、反馈问题,这就是对我们最大的支持了。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
消息中间件 安全 Kafka
2024年了,如何更好的搭建Kafka集群?
我们基于Kraft模式和Docker Compose同时采用最新版Kafka v3.6.1来搭建集群。
3698 2
2024年了,如何更好的搭建Kafka集群?
|
消息中间件 存储 负载均衡
RocketMQ 面试题及答案整理,最新面试题
RocketMQ 面试题及答案整理,最新面试题
2081 4
|
关系型数据库 MySQL 网络安全
KaliLinux常见问题与解决方案
KaliLinux常见问题与解决方案
1426 2
|
并行计算 异构计算
CUDA streamCUDA流的基本概念
CUDA streamCUDA流的基本概念
2692 0
CUDA streamCUDA流的基本概念
|
BI iOS开发
《SAP后勤模块实施攻略—SAP在生产、采购、销售、物流中的应用》——1.3 SAP ERP 概览
本节书摘来自华章计算机《SAP后勤模块实施攻略—SAP在生产、采购、销售、物流中的应用》一书中的第1章,第1.3节,作者 乐立骏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3681 0
|
存储 传感器 安全
|
8月前
|
弹性计算 负载均衡 网络协议
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
695 76
|
9月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
7827 23
|
存储 JSON 缓存
MessagePack - 简介及使用
MessagePack - 简介及使用
1553 1
MessagePack - 简介及使用
|
存储 安全 Java
如何实现Spring Boot应用程序的安全性
如何实现Spring Boot应用程序的安全性
402 0