当前位置:首页 > 数码 > MySQL升级经验谈-快来踏上8.0升级之旅-倒计时5.7停服 (mysql升级版本方法)

MySQL升级经验谈-快来踏上8.0升级之旅-倒计时5.7停服 (mysql升级版本方法)

admin7个月前 (04-28)数码48

作者简介

杨建荣,竞技世界数据库专家、dbaplus 社群联合发起人,腾讯云 TVP,Oracle ACE,《OracleDBA 工作笔记》和《DBA 工作笔记》作者。现就职于竞技世界,擅长数据管理、数据迁移、性能优化,目前专注于开源技术、运维自动化和性能优化,坚持写技术博客,已坚持 2400 多天。

数据库版本升级的意义

数据库是基础资源的重要组成部分,随着业务的发展,数据库版本升级的话题自然会摆上桌面。关于数据库版本升级,一直都是热议话题,对于升级的缘由各家也有所不同,有业务驱动的,有 DBA 自发驱动的,有规划导向也有方向指引的……抛开各种原因,当升级这个决定落下来的时候,对于 DBA 手头的几百几千套数据库来说,就好比是一场动物大迁徙,满满的画面感。

从 Oracle 发布的版本生命周期规划可以看到,MySQL 5.7 已经走到了生命周期的终点,意味着后续将不再为 MySQL 5.7 提供官方更新、错误修复或安全补丁。阿里云和 AWS 都在官方公布了版本支持计划,MySQL 5.7 版本已经开始了倒计时。而要想让这件事情获得研发同学的大力支持,就需要平滑升级或者最低成本的改动。

MySQL 版本升级之路

行业内的 MySQL 版本现状

在 2022 年底左右,作者调研了下行业内一些公司的 MySQL 数据库版本情况,列表如下:

mysql升级版本方法
公司规模 MySQL 5.5 MySQL 5.6 MySQL 5.7 MySQL 8.0
大型互联网公司 0% 0% 70% 30%
大型传统企业 0% 20% 60% 20%
中小型互联网公司 0% 0% 80% 20%
中小型传统企业 0% 0% 90% 10%

可以看到大部分的公司还是在 MySQL 5.7 这个版本,而且从服务规模来看,越是规模大的公司,要想做整体升级这个事情的复杂度就会高出几个数量级。

我们的数据库版本升级理由

我们做这件事情是从规划导向来切入的,也有一部分 DBA 自驱的因素。说是规划导向,转义过来就是不打无准备之仗,MySQL 后续的整体架构是构建在基础存储之上的,如果基础存储存在瓶颈,对于后续的架构演进也存在明显短板,所以我们在 2019年底就开始调研并小范围在新业务中试点 MySQL 8.0 了。

如下是早期调研中对于 MySQL 8.0 和 MySQL 5.7 使用 sysbench 压测的一些信息供参考,可以看到 MySQL 8.0 是有明显性能提升的。

测试项目 MySQL 5.7 MySQL 8.0
TPS 10000 12000
延时 5ms 3ms

至于 MySQL 8.0 的版本,我们的考虑是和验证测试的 8.0.19 保持一致,在后期支持新版本的无缝升级。从功能上来说,开发特性更加丰富,SQL 优化效果和运维功能上都有明显的提升,在兼容性方面会更加严格(兼容性严格具有两面性)。

在经过了一个相对稳定的周期验证之后,无论从稳定性、性能和功能方面确实达到了预期的效果,有一些特性确实解决了当时的一些运维问题。

说是 DBA 自驱的理由,是因为我们盘点了一下近些年来的 MySQL 技术栈使用情况,发现实际的情况比我们预想的要差一些,比如 MySQL 5.5 我会定义为一个分支技术栈,以此类推,我们目前存在 7 个分支技术栈。

在这些因素的基础之上,我们以点带面展开分析,发现多分支技术栈散乱只是表象,还有一些潜在问题和瓶颈问题:

  • MySQL 版本过旧,架构管理不一致,运维复杂度较高
  • 部分技术栈已闭源,服务异常时存在恢复风险
  • 数据库规范和审核机制难以支撑现有的业务需求
  • 人员稳定性和持续发展

所以这是一个综合的问题,涉及到对技术、业务和人的管理,而且是环环相扣。当然对于一件事的处理,我们还是会讲求一个成本收益比,而与收益相比,成本是更加可控的,所以我们的升级也是循序渐进的,对成本控制比较高的,主要体现在:

  • 零故障,平滑升级
  • 不影响业务
  • 成本可控

所谓零故障,平滑升级,就是指在整个升级过程中,不影响业务的正常运行,不出现任何数据丢失或损坏的情况。为了实现这一目标,我们做了以下准备:

  • 制定详细的升级计划,包括升级前的数据备份、环境准备、升级步骤、回退计划等。
  • 在非生产环境中进行充分的测试,验证升级的可靠性。
  • 选择合适的升级工具和方法。
  • 组建专门的升级团队,负责升级的实施和监控。

所謂不影響業務,就是指在升級過程中,業務仍然可以正常運作,不會出現任何中斷或延遲的情況。為了實現這一目標,我們做了以下準備:

  • 選擇合適的升級時機,避免在業務高峰期進行升級。
  • 提前通知相關人員,並做好業務備份。
  • 在升級過程中,密切監視業務運行情況,一旦出現任何異常,立即採取措施處理。

所謂成本可控,就是指在升級過程中,不產生過高的額外費用。為了實現這一目標,我們做了以下準備:

  • 充分利用自身技術力量,盡量減少外包費用。
  • 選擇合適的授權方式,避免不必要的軟件 Lizenz費用。
  • 使用開源工具和技術,降低升級成本。

在充分的準備和周密的計劃下,我們的 MySQL 5.7 到 8.0 升級工作順利完成,沒有出現任何故障或影響業務的情況。通過這次升級,我們實現了以下目標:

  • 統一了 MySQL 技術棧,降低了運維複雜度。
  • 提升了數據庫性能,

是时候升级 MySQL Connector/J 到 8.0 了

原文地址:

description: MySQL JDBC url 可用参数概览 date: 2021.11.14 10:26 categories: - Database tags: [MySQL] keywords: Connector/J, MySQL, jdbcUrl, JDBC, properties

使用 JDBC 连接 MySQL 时,你是否也对 JDBC URL 连接串中的参数感到很神秘?

例如:

连接串的通用格式为:

那么可用的properties都有哪些?默认值和可用的值都有什么,又都是什么含义呢?

这就要从Connector/J说起了。

Connector/J是 Java 连接 MySQL 的连接器,或称驱动。 与 MySQL 现在有两个活跃版本( 5.7.x和8.0.x )一样, Connector/J目前也有两个主要版本: 5.1和8.0 。 但并不是只能用5.1版本的驱动连5.7.x版本的 MySQL,或8.0版本的驱动连接8.0.x版本的 MySQL,让我们先来看一下两个版本驱动的对比 :

可以看到,官方强烈推荐使用或升级到8.0的版本,并且5.1系列版本已到达生命周期的尾声,一年多没有更新过了(最新版本5.1.49是2020年4月发布的)。

几个主要的改进:

下面选择部分实用的属性进行说明。

完整的 Properties 参考文档可见:

强烈建议修改每个参数的默认值之前,仔细阅读官方文档中对此参数的描述!

mysql5.7和8.0兼容吗

大部分是兼容的,你只要没有触及不兼容的地方就可以直接升级的。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: MySQL

“MySQL升级经验谈-快来踏上8.0升级之旅-倒计时5.7停服 (mysql升级版本方法)” 的相关文章

实用性极强的-MySQL-查询优化策略 (实用性极强的app)

实用性极强的-MySQL-查询优化策略 (实用性极强的app)

在程序上线运行一段时间后,一旦数据量上去了,或多或少会感觉到系统出现延迟、卡顿等现象,出现这种问题,就需要程序员或架构师进行系统调优工作了。其中,大量的实践经验表明,调优的手段尽管有很多,但涉及到...

Java开发者的MySQL数据库版本管理策略-从规划到部署的全面指南 (java开发工程师)

Java开发者的MySQL数据库版本管理策略-从规划到部署的全面指南 (java开发工程师)

数据库是软件开发中常用的关系型数据库之一。版本管理是保障数据库稳定性和可靠性的重要方面。本文将介绍针对 Java 开发者的 MySQL 数据库版本管理策略,包括版本控制工具选择、数据库脚本管理、变...

MySQL-一探究竟-核心模块揭秘 (mysql-bin文件可以删除吗)

MySQL-一探究竟-核心模块揭秘 (mysql-bin文件可以删除吗)

Undo Segment Caching To improve the efficiency of undo segmentallocation, InnoDB caches some un...

优化数据统计的终极指南-MySQL-提升查询性能的秘诀 (优化数据统计工具)

优化数据统计的终极指南-MySQL-提升查询性能的秘诀 (优化数据统计工具)

在业务场景中,我们经常需要统计当前已有的业务数据,例如商品库内商品的数量、每天的用户订单数量等。此时,我们需要使用统计功能来实现。 count()实现方式 对于不同的数据库引擎,co...

实战-MySQL-数据库压力测试与性能评估方法-Java (实战篮球鞋排名)

实战-MySQL-数据库压力测试与性能评估方法-Java (实战篮球鞋排名)

压力测试的目的和重要性 压力测试是模拟真实环境中并发用户访问数据库的场景,通过增加负载来测试数据库系统的性能表现。压力测试的目的是发现数据库在高负载下的性能瓶颈、资源利用情况和响应时间等指...

主从复制原理简介-MySQL (主从复制原理mysql)

主从复制原理简介-MySQL (主从复制原理mysql)

主从复制(Master-SlaveReplication)是一种数据复制技术,用于在多个数据库主机之间的数据同步。在主从复制架构中,一个主机被设置为主主机(Master),充任数据源,其余主机被设...

如何在MySQL中成功数据的版本治理和回滚操作 (如何在mysql数据库中添加数据)

如何在MySQL中成功数据的版本治理和回滚操作 (如何在mysql数据库中添加数据)

成功数据的版本治理和回滚操作在中可以经过以下几种模式成功,包含经常使用事务、备份恢复、日志和版本控制工具等。上方将详细引见这些方法。 1.经常使用事务: MySQL允许事务操作,可以经...

使用-数据库并自动发送备份文件到指定邮箱-K8s-定期备份-MySQL (使用数据库的命令)

使用-数据库并自动发送备份文件到指定邮箱-K8s-定期备份-MySQL (使用数据库的命令)

简介 本文档描述了一个使用脚本来监控服务器高占用率进程并通过电子邮件发送警报的项目。本文还探讨了使用相同机制备份数据库的可能性。 技术 Python psuti...