概叙
科普文:软件架构数据库系列之【MySQL前世今生及其体系结构概叙】-CSDN博客
前面文章有对MySQL5.6、5.7、8.0、8.4、9.0的新特性做说明,有兴趣的可以自行查看。
为什么标题里面说2024年了,MySQL8.4这个版本是必选版本?在回答这个问题之前,我们先了解一下如下几个问题。
如何选择第三方依赖软件?
选择第三方依赖软件时,应考虑多个因素,包括查看第三方开源库的版本发布说明(含bug修复情况、新特性)、服务支持、社区支持、漏洞修复速度、收费情况、开源等等。
作为一个java开发,我们以springboot项目选择第三方依赖为例、尽可能使用与Spring Boot推荐的第三方开源库、参考Maven中心仓库的安全警告信息等。
-
查看第三方开源库的版本发布说明:通过查看第三方开源库的版本发布说明,可以了解每个版本的更新内容和修复的问题,从而决定是否升级到最新版本或保持当前版本。例如,如果MyBatis的某个版本修复了与SpringBoot 2.7.18的兼容性问题,那么选择该版本可以确保兼容性和稳定性。
-
尽可能使用Spring Boot推荐的第三方开源库:使用Spring Boot推荐的第三方开源库可以降低安全风险,因为Spring团队已经对这些依赖组进行了充分测试。这可以确保使用的库与Spring Boot和其他相关库的兼容性,减少潜在的问题。
-
参考Maven中心仓库的安全警告信息:Maven中心仓库提供了安全警告信息,这些信息可以帮助开发者了解哪些依赖包存在已知的安全问题,从而避免使用这些存在安全隐患的版本。
-
考虑开源项目的活跃度和社区支持:选择一个活跃的开源项目和有良好社区支持的项目可以确保在使用过程中遇到问题时能够得到及时的帮助和解决方案。这有助于减少因第三方依赖问题导致的开发延误和额外的维护成本。
-
考虑付费与免费选项的权衡:在选择第三方服务时,需要权衡付费与免费选项的优劣。虽然免费选项可以节省成本,但可能需要更多的时间和精力来解决问题。付费选项虽然成本较高,但通常能提供更好的技术支持和服务。
综上所述,选择第三方依赖软件时,应综合考虑库的兼容性、安全性、社区支持、成本等因素,以确保项目的顺利进行和长期维护。
说了这么多,为什么这么选择呢?很简单、当你在中午用餐时间去商场选择就餐时,是不是愿意选择用餐客户多的餐馆,而不会去门可罗雀的,或者淅淅沥沥几桌在用餐的餐馆。毕竟选择人多的,说明趟坑的人多,你选择后趟坑的成本低。
毕竟数据库不是maven依赖包,选择错了,更换的成本高。那么如何选择数据库这些关键性的中间件呢?
如何选择数据库?
选择数据库时,需要综合考虑多个因素,包括数据类型、数据量、并发性能、数据安全性、成本等。
以下是一些具体的指导原则:
-
确定需求和应用场景:首先需要明确自己的需求和应用场景,包括需要处理的数据类型(结构化或非结构化)、数据量大小、数据访问频率等。这有助于缩小选择范围,例如,如果处理的是结构化数据,如订单和客户信息,关系型数据库可能是更好的选择;如果需要处理大量非结构化数据,如图片和视频,非关系型数据库或NoSQL数据库可能更合适12。
-
了解各种数据库类型:目前主流的数据库类型包括关系型数据库、非关系型数据库、列式数据库等。不同类型的数据库有不同的优缺点,需要根据具体需求进行选择。例如,关系型数据库适合处理结构化数据,而非关系型数据库则更适合处理大量非结构化数据12。
-
比较不同数据库的性能:数据库性能包括读写速度、并发处理能力等。需要根据自己的需求选择适合的数据库,不能只看价格或者知名度2。
-
考虑数据安全性:数据安全是企业或个人使用数据库的一项重要考虑因素。需要考虑数据库的安全性能、数据备份与恢复机制等2。
-
考虑成本:选择数据库时不仅要考虑购买成本,还需要考虑后续维护和升级的成本2。
-
参考实际应用案例和用户反馈:查看不同数据库在实际应用中的表现,以及用户的使用反馈,可以帮助更好地了解各数据库的优缺点1。
综上所述,选择数据库是关系型数据库RMDB、还是NoSQL数据库?确定是关系型数据库,那么在Oracle、MySQL、PostgreSQL如何选择?同时考虑信创或者国产化的时候,你又要如何抉择?所以这是一个综合考虑多种因素的过程,需要根据自身的具体需求和条件来做出最佳选择。
什么是LTS?
长期支持 (Long-term support,LTS):是一种软件的产品生命周期政策,特别是开源软件,它增加了软件开发过程及软件版本周期的可靠度。长期支持延长了软件维护的周期;它也改变了软件更新(补丁)的类型及频率以降低风险、费用及软件部署的中断时间,同时提升了软件的可靠性。但这并不必然包含技术支持。
它指的是某个软件、操作系统或技术的长期支持版本。在服务器领域,LTS通常用来指代那些经过长时间测试和验证,并且会持续获得安全补丁和更新支持的操作系统版本。LTS版本在服务器环境中非常重要,因为它们提供了长期的稳定性和可靠性保证。相比于其他非LTS版本,LTS版本更加注重稳定性而不是引入新功能,这使得企业可以放心地使用LTS版本,因为它们不会频繁更新或更改已有的功能。LTS版本通常会持续支持多年,这意味着企业可以在购买服务器时选择LTS版本,然后在未来几年内获得持续的安全升级和技术支持。这种长期支持为企业提供了更大的灵活性和稳定性,可以避免频繁升级和可能导致系统不稳定的问题。
此外,LTS版本的软件不一定涉及功能更新,除非有一个更新的LTS版本。
但是,你会在LTS版本的更新中得到必要的错误修复和安全修复。LTS版本被推荐给生产级的消费者、企业和商家,因为你可以获得多年的软件支持,而且软件更新不会破坏系统。LTS版本的优点包括软件更新与安全和维护修复的时间很长,广泛的测试,以及软件更新不会带来破坏系统的变化。
很显然,在选择MySQL版本的问题上,我们要选择LTS版本。
科普文:【方向盘】OpenJDK生态圈_jdk8u211-CSDN博客
科普文:Oracle JDK收费后的常见openJDK版本梳理-CSDN博客
在前面JDK版本的文章中,我们可知目前国产JDK支持的版本都是对标oracle官方jdk,主要是jdk8,jdk11,jdk17这三个版本。
MySQL的LTS版本有哪些?
根据官方资料介绍,MySQL 5.7 生命周期于 2023 年 10 月份到期,2015 发布至今 8 个年头,长达 8 年的长期支持就到此结束。
MySQL 8.0 是 2018 年发布,还能坚挺半年,标准支持延长到 2025 年 4 月,去年显示应该是到今年 4 月份到期,应该是做了调整,在之前的基础上延长了两年,延伸支持的期限没有改变,仍然是 2026 年 4 月。
对于 MySQL 8.x 系列,8.4.x 将作为 LTS 长期支持版本,而从 9.x 开始,9.7.x 将作为 LTS 长期支持版本。
MySQL版本发布模式
MySQL 8.0的版本发行方式为持续发布模式,在该模式下MySQL能够频繁地向用户发布新特性,而不是像之前的5.6、5.7每隔几年才发布一次。但这种方法可能会给只需要关键补丁、不需要频繁更改的项目和应用程序带来挑战。因此,MySQL采用了一个新的版本发布方式,用户可以在创新(Innovation)和长期支持(LTS)版本之间进行选择。
MySQL从8.0.34和8.1.0开始,启用了新的版本发行方式。 这两种版本的MySQL都可以直接应用在生产系统上,如果用户希望获得最新的功能和改进,并喜欢追求新技术,推荐使用MySQL创新版。创新版本非常适合在快节奏开发环境中工作的开发人员和DBA,这些开发环境具有高水平的自动化测试和持续集成技术,可以加快升级周期。另一方面,如果用户的环境需要自己搭建,那么长期支持版就是最佳选择。长期支持版只包含必要的修复,减少了数据库软件变化带来的风险。
MySQL数据库版本8.1.0是第一个创新版本,8.0.34+过渡到只修复错误,直到8.0的生命终止(EOL)计划于2026年4月。8.0.34发布大约一年后,MySQL版本8.x将成为新的长期支持版。在这个过渡时期,如果用户想要使用MySQL数据库的最新特性、改进和所有错误修复,请使用创新版(例如:8.1.x,8.2.x,8.3.x,等等)。如果用户只需要修复MySQL数据库的错误,请使用8.0.x版本(例如,8.0.35, 8.0.36, 8.0.37等)。
MySQL创新版
创新版本类似于MySQL 8.0的持续开发模式(< 8.0.34),包括错误修复、安全补丁和新功能。错误修复和安全补丁通常会包含在下一个创新或LTS版本中。在使用创新版本时,用户有必要定期升级到最新的创新版,以跟上最新的错误修复和安全补丁。除此之外,创新版本还包括新的弃用、删除功能,及行为改变。为了降低升级的风险和复杂性,将在发布时包含如何实施的最佳实践内容。
MySQL长期支持版
大约每两年,一个小版本将被指定为长期支持版本。这个版本将有5年的标准支持和3年的扩展支持。这类似于MySQL 5.7和以前的版本。 长期支持版将是主版本的最后一个版本号。下一个创新版本将增加它的主版本号。例如,如果MySQL 8.4.0的主版本号是8。那么MySQL 9.0将是下一个创新版本。
为什么2024年了MySQL8.4必选版?
综上可知,2024年到未来2032年这8年期间,MySQL 8.4.*是官方长期支持的版本,当然未来的事情谁能一定说得准,甲骨文有调整谁也不知道。具体怎么选择还是以各自实际情况为准再做选择,这里只做情况说明,仅供参考。
MySQL升级与降级
长期支持版中的升级与降级
在长期支持版本中,由于功能保持不变,数据格式不变。可以进行原地升级和降级。InnoDB的克隆功能在长期支持版中得到支持,用于升级和降级。
从一个长期支持版升级/降级到另一个长期支持版
从一个长期支持版本可以迁移到下一个长期支持版本,不需要执行升级创新版本的几个中间步骤。升级将通过原地升级,MySQL Shell Dump & Load和MySQL异步复制实现。
降级可以通过MySQL Shell Dump & Load和MySQL异步复制来实现,其唯一目的是回滚正在进行的升级。
创新版之间的升级与降级
支持从一个创新或长期支持版本到未来的创新版本的原地升级(到下一个长期支持版为止)。通过MySQL Shell Dump & Load和MySQL异步复制来实现。
降级将需要MySQL Shell Dump & Load。类似于MySQL 8.0.x(< 8.0.34)。
使用异步复制升级/降级
关键业务环境的升级通常使用MySQL异步复制完成,新版本环境设置为当前版本的副本。
用户可以从长期支持版或创新版复制到相邻的长期支持版本或下一个长期支持版本出现之前的任何创新版本(例如,可以从LTS 8.4 到 LTS 9.7, 但不可以从LTS 8.4 到 LTS 10.7)
如果使用新版本后出现问题,支持回滚至以前的版本非常重要。MySQL异步复制将能够复制回滚以前的版本。注意,这种支持将仅用于回滚目的,并且用户还没有使用新功能。不能将该操作视为常规连续生产部署的一部分。
升级
原地 | 克隆 | 异步复制 | 转储/加载 | |
---|---|---|---|---|
LTS 8.4 → LTS 9.7 | ✓ | ✗ | ✓ | ✓ |
LTS 8.4.11 → LTS 8.4.20 | ✓ | ✓ | ✓ | ✓ |
Innovation 8.1 → 8.2 | ✓ | ✗ | ✓ | ✓ |
Innovation 8.1 → 8.3 | ✓ | ✗ | ✓ | ✓ |
Innovation 9.1 → LTS 9.7 | ✓ | ✗ | ✓ | ✓ |
LTS 8.4 → LTS 10.7 | ✗ | ✗ | ✗ | ✗ |
对于标准版主从来说,如果是MySQL 5.5,5.6版本,需要先过渡到MySQL 5.7,完成兼容性测试之后,观察一段时间之后,再次升级到MySQL 8.0;如果是MySQL 5.7版本,则可以直接升级到MySQL 8.0。
备注:线上MySQL5.7及其之前的版本升级风险,切记先写好方案,充分验证和测试后在升级;对于开发而言,唯一的区别就是MySQL的jdbc驱动。
降级
原地 | 克隆 | 异步复制 | 转储/加载 | |
---|---|---|---|---|
LTS 8.4.20 → 8.4.11 | ✓ | ✓ | ✓ | ✓ |
LTS 9.7 → LTS 8.4 | ✗ | ✗ | ✓✮ | ✓✮ |
LTS 9.7 → Innovation 9.6 | ✗ | ✗ | ✓✮ | ✓✮ |
LTS 9.7 → Innovation 9.5 | ✗ | ✗ | ✓✮ | ✓✮ |
✮表示仅用于回滚目的