0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MySQL8.0版本选型的小技巧

jf_78858299 来源:基础技术研究 作者:田亮 2023-03-29 13:45 次阅读

前言:

MySQL 8.0 第一个GA(General Availability)版本(正式、可用于生产的版本)于2018/4/19发布至今已有3年。8.0是一个全新的版本,增加了数百项功能新特性,重构了SQL解析器,在性能和安全性上越来越向商业数据库靠拢。5.7版本优越的稳定性和性能已经广泛应用,如今性能、安全性和众多企业级特性提升让我们思考是否该使用8.0版本。本文从以下几个方面来了解一下。

01

官方补丁维护生命周期管理

图片

如上图所示,这是oracle官方对软件产品的生命周期管理,MySQL被收购后也适用于该管理方式。

正如表格中所示,5.6今年就将结束支持,5.7版本在2023年结束其扩展支持,官方将不再发布补丁维护,而8.0的支持将持续到2026年。

建议使用8.0,逐渐累积新版本经验为后续升级做准备。

02

MySQL8.0 GA 以来bug修复统计

图片

该表格是8.0版本发布可用于生产的正式版本以来所有bug的修复统计情况。

从表格中可以看出总bug修复数量逐渐收敛中。

我们最为关心的Innodb和复制相关的bug修复也是逐渐稳定下来。

但梳理8.0每个小版本可以发现,每个小版本都会推出许多新功能,这也可能造成小版本之间差异过大和带来新的稳定性问题。

例如,当时8.0.20发布时,修改了redo格式,导致常用的物理备份工具xtrabackup不支持,两个月后xtrabackup支持该redo格式,但是这种基础功能还是需要时间检验。

整个8.0主要是对group replication的不断完善,同时还推出了Innodb Cluster和ReplicaSet 高可用方案,所以如果需要使用MGR请优先选择8.0。

如果需要用到新特性来解决工作中的痛点:比如hash join、窗口函数以及在线迅速加字段的特性,还有在高并发下性能的提升也是选择8.0的重要原因。

03

各大金融企业如何选择8.0版本

图片

以上表格调研数据来源截止到2021/05/31

目前已经有不少金融机构在8.0上做出尝试,他们对于版本的选择是十分谨慎的,一般正式发布一年半之后才开始使用。

大多数版本选择都是从8.0.18开始,比如某五大行中两家机构选择8.0.18入坑,某些股份制银行则是选择8.0.18、8.0.20和8.0.21。

大多数的选择策略均为当时的最新版本,版本集中在8.0.18~8.0.21。

选择最新的版本会修复前面版本出现的重大bug。

比如,最近5月11日发布了新版本,距离上个版本不到一个月的时间,不太符合常规3个月一个小版本的规律,查看release notes紧急修复3个bug。

以前关于选择软件版本都有一个默认规矩,为了规避风险都会选择次新版本的方案,这也是有一定道理的。

毕竟次新版本出来几个月了,经过验证一般不会有重大问题。

但是这个经验在MySQL8.0 版本选择上也不是特别是适合,比如当前最新的版本是8.0.25,而选择次新的8.0.24刚好是有重大问题的。

有人会说使用最新版本新的功能可能会带来新的稳定性,但是我们常用的功能基本集中在Innodb、复制、分区表、优化器上,只要这些基础功能没有重大变化,那么这些基础功能早期发现的小问题在新的版本基本都会得到修复。

所以,不管是选择次新还是最新版本都可能遇到问题,关键还是关注每个版本的release notes所记录的修复问题,重大变化和新增功能,是否影响自己使用的功能。

其实我们也可以以公有云厂商采用基于社区版哪个版本来提供的RDS服务作为参考。

如阿里云RDS根据文档中版本信息是基于社区版8.0.22,华为云文档中显示内核基于8.0.20,腾讯云基于8.0.18内核做的优化。

根据市场占有率前三分析,我们选择的版本至少要大于等于8.0.22。

以下版本在选择的时候需要注意:

要注意8.0.19这个版本的安全漏洞问题,大家最好避免这个版本以免被安全软件扫到。

详情:

https://www.cnvd.org.cn/flaw/show/CNVD-2021-30889

8.0.23版本修复了FTWRL影响其他会话执行show table status,可能影响类似mysqldumper等备份工具,所以需要用到此功能最好大于等于8.0.23。

详情:

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html

基于以上例子,理论上我们应该选择最新的版本,至少概率上更加稳定,使用开源软件还是需要多测试多踩坑找到自己的使用边界。

04

总结

基于以上MySQL官方维护周期,8.0持续到2026年。

MySQL基础功能关于Innodb引擎和复制的bug修复是逐渐收敛,版本稳定性逐渐加强。

调研众多金融机构公司,8.0被逐渐使用,更具企业级的功能和安全性得到青睐。

综上所述,8.0使用没有问题,如果使用社区版请使用最新的,多关注每个版本的release notes,多做测试。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    759

    浏览量

    44060
  • MySQL
    +关注

    关注

    1

    文章

    801

    浏览量

    26433
  • BUG
    BUG
    +关注

    关注

    0

    文章

    155

    浏览量

    15649
收藏 人收藏

    评论

    相关推荐

    Proteus8.0能仿真Proteus7.8版本的工程文件吗

    菜鸟路过,请问Proteus8.0能仿真Proteus7.8版本的工程文件吗?求指导
    发表于 06-07 20:07

    MySQL8.0 新特性:Partial Update of LOB Column

    摘要: MySQL8.0对json进行了比较完善的支持, 我们知道json具有比较特殊的存储格式,通常存在多个key value键值对,对于类似更新操作通常不会更新整个json列,而是某些键值
    发表于 06-11 20:23

    MySQL安装使用说明Windows版本

    MySQL安装使用说明Windows版本
    发表于 10-23 16:29 0次下载
    <b class='flag-5'>MySQL</b>安装使用说明Windows<b class='flag-5'>版本</b>

    mysql8.0中的无锁重做日志源码介绍

    的性能, 所以在InnoDB 8.0 改成了无锁实现这个是官方的介绍:https://mysqlserverteam.com/mysql-8-0-new-lock-free-scalable-wal-design
    的头像 发表于 02-17 10:52 2847次阅读
    <b class='flag-5'>mysql8.0</b>中的无锁重做日志源码介绍

    Synopsys推出带有Coverity 8.0版本的软件完整性平台

    的自动化静态分析解决方案的最新版本软件源代码中的安全漏洞和质量缺陷。 Coverity 8.0版本包括几个重要更新,包括对新编程语言的支持,增强的安全测试功能以及对许多开发工具和环境的额外集成支持。
    的头像 发表于 08-08 14:40 3938次阅读

    关于mysql存储引擎你知道多少

    Mysql中用的最多的两种存储引擎就是MyISAM和InnDB,其中MyISAM是5.1版本之前的默认存储引擎,InnoDB是5.1版本之后的默认存储引擎。
    发表于 08-23 10:52 842次阅读

    腾讯云打造MySQL 8.0全新引擎,进一步加速客户产业升级

    据介绍,腾讯云数据库 MySQL 8.0的内核可以百分百完全兼容主流MySQL分支。相比官方版本,无论是单机模式、异步模式还是同步模式下, MySQ
    的头像 发表于 07-09 14:54 2332次阅读

    四个有趣的关于Python 3.9版本新特性

    四个有趣的关于Python 3.9版本新特性
    的头像 发表于 10-08 14:47 3047次阅读
    四个有趣的<b class='flag-5'>关于</b>Python 3.9<b class='flag-5'>版本</b>新特性

    MySQL 5.7与MySQL 8.0 性能对比

    背景 测试mysql5.7和mysql8.0分别在读写,选定,只写模式下不同并发时的性能(tps,qps) 最早 测试使用版本mysql5.7.22和
    的头像 发表于 11-03 09:26 1.7w次阅读
    <b class='flag-5'>MySQL</b> 5.7与<b class='flag-5'>MySQL</b> <b class='flag-5'>8.0</b> 性能对比

    MySql环境一键安装应用程序免费下载

    本文档的主要内容详细介绍的是MySql环境一键安装应用程序免费下载。创建Mysql所需环境支持8.0以上版本,暂无测试过8.0以下
    发表于 02-26 15:01 7次下载

    请问mysql8.0不能在grant时创建用户是什么原因?

    用习惯了MySQL5.7,当在MySQL8.0里创建用户时,习惯性直接敲GRANT指令,结果报错了
    的头像 发表于 08-11 10:16 2131次阅读

    mysql8.0默认字符集是什么

    MySQL 8.0 默认字符集是 utf8mb4。 MySQL 8.0 是当前最新的开源关系型数据库管理系统,由Oracle公司开发和维护。MySQ
    的头像 发表于 11-16 14:48 1757次阅读

    MySQL5.7数据导入8.0版本,这3款工具值得收藏!

    MySQL 5.7数据库迁移到MySQL 8.0可以使用NineData、MySQL Shell、Percona XtraBackup和Liquibase等工具。每个工具都有自己的优
    的头像 发表于 11-29 16:47 2628次阅读
    <b class='flag-5'>MySQL</b>5.7数据导入<b class='flag-5'>8.0</b><b class='flag-5'>版本</b>,这3款工具值得收藏!

    GitHub底层数据库无缝升级到MySQL 8.0的经验

    GitHub 团队近日分享了他们将 GitHub.com 的底层数据库无缝升级到 MySQL 8.0 的经验。 据介绍,GitHub 使用 MySQL 来存储大量关系数据,因此在不影响网站服务级别
    的头像 发表于 12-13 10:21 486次阅读
    GitHub底层数据库无缝升级到<b class='flag-5'>MySQL</b> <b class='flag-5'>8.0</b>的经验

    mysql8.0流程控制介绍

    ,流程就分为三大类:   顺序结构:程序从上往下依次执行    分支结构:程序按条件进行选择执行,从两条或多条路径中选择一条执行    循环结构:程序满足一定条件下,重复执行一组语句针对于MySQL的流程控制语句主要有3类。注意:只能用于
    的头像 发表于 01-13 10:36 615次阅读