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

    文章

    738

    浏览量

    43466
  • MySQL
    +关注

    关注

    1

    文章

    775

    浏览量

    26006
  • BUG
    BUG
    +关注

    关注

    0

    文章

    154

    浏览量

    15581
收藏 人收藏

    评论

    相关推荐

    有人用过Protues 8.0吗?

    刚刚网上下了一个Protues 8.0版本,装好后不知道怎么用,有没有人有这个版本的使用教程呀?
    发表于 04-05 14:42

    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镜像的步骤

    ,tag为版本号例如:> docker pull mysql:5.6 #安装MySql 5.6版本镜像启动MySql容器> do
    发表于 10-19 14:55

    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 2689次阅读
    <b class='flag-5'>mysql8.0</b>中的无锁重做日志源码介绍

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

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

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

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

    MySQL 5.7与MySQL 8.0 性能对比

    背景 测试mysql5.7和mysql8.0分别在读写,选定,只写模式下不同并发时的性能(tps,qps) 最早 测试使用版本mysql5.7.22和
    的头像 发表于 11-03 09:26 1.4w次阅读
    <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 1059次阅读

    mysql8.0默认字符集是什么

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

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

    MySQL 5.7数据库迁移到MySQL 8.0可以使用NineData、MySQL Shell、Percona XtraBackup和Liquibase等工具。每个工具都有自己的优
    的头像 发表于 11-29 16:47 427次阅读
    <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 232次阅读
    GitHub底层数据库无缝升级到<b class='flag-5'>MySQL</b> <b class='flag-5'>8.0</b>的经验

    mysql8.0流程控制介绍

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