mysql 版本升级 8.0.24升级到 8.0.34

news2025/1/12 20:44:39

mysql 版本升级 8.0.24升级到 8.0.34

  • 1、官方升级手册必看
    • 1.0、官方升级手册必看
    • 1.1、理解升级过程会做什么
    • 1.2、备份升级前的数据
    • 1.3、支持的升级路径(什么版本升级到什么版本)
      • 1.3.1、mysql所有版本归纳
      • 1.3.2、版本升级选择的原则
    • 1.4、5升级8.0需要注意 了解MySQL 8.0需要注意的变化
    • 1.5、mysql5升级8.0需要注意,了解MySQL 8.0的新特性,了解8.0相比于5.0的已弃用和已删除的特性。如果您使用这些特性中的任何一个,升级可能需要对它们进行更改
    • 1.6、mysql5升级8.0需要注意,了解在MySQL 8.0中添加,弃用或删除的服务器和状态变量和选项。如果使用已弃用或已删除的变量,则升级可能需要更改配置
    • 1.7、升级最佳实践
  • 2、 升级方式选择
    • 2.1、对于升级前版本是非windows平台上的mysql二进制包和mysql rpm包或deb包的安装:
    • 2.2、对于在redhat、centos、Fedora等系统上使用MySQL Yum Repository安装
    • 2.3、对于在debian、ubuntu、arch等系统上使用MySQL Apt Repository安装
    • 2.4、对于SLES系统使用MySQL SLES Repository的安装
    • 2.5、对于使用Docker执行的安装
    • 2.6、windows上安装的mysql升级
  • 3、8.0.24升级8.0.32升级前准备
    • 3.1、确定不存在以下问题
    • 3.2、必须不存在使用不支持本机分区的存储引擎的分区表
    • 3.3、任何表的外键约束名称都不能超过64个字符
  • 4、8.0.24升级8.0.32
    • 4.1、备份升级前的数据
    • 4.2、确认innodb_fast_shutdown的值不是2
    • 4.3、关闭mysql 8.0.24 的mysql服务
    • 4.4、安装mysql 8.0.34的rpm包
    • 4.5、启动mysql 8.0.34
    • 4.6、关闭并重新启动MySQL 8.0.34 服务,以确保对系统表所做的任何更改都生效

1、官方升级手册必看

1.0、官方升级手册必看

参考链接: https://dev.mysql.com/doc/refman/8.0/en/upgrading.html

1.1、理解升级过程会做什么

参考链接 https://dev.mysql.com/doc/refman/8.0/en/upgrading-what-is-upgraded.html
升级mysql版本会做的事情总体分为2大类
1、升级mysql 系统数据库(mysql安装完后默认存在的数据库)
2、升级mysql 用户数据库(mysql安装完后 用户自己创建的数据库)

具体来说,升级分两个步骤进行
步骤一:数据字典升级
涉及到:mysql库中的数据字典表、performance_schema库、information_schema库和ndbinfo。

步骤二:服务端升级
涉及到:mysql库中的系统表(剩余的非数据字典表)、sys库、用户自己创建的库。

对于步骤一和步骤二,只需要知道升级涉及升级哪些库,具体的升级操作交给mysql升级程序。

1.2、备份升级前的数据

使用mysqldump备份数据
参考链接: https://dev.mysql.com/doc/refman/8.0/en/using-mysqldump.html

1.3、支持的升级路径(什么版本升级到什么版本)

1.3.1、mysql所有版本归纳

参考链接: [https://dev.mysql.com/doc/refman/8.0/en/upgrade-paths.html]
(https://dev.mysql.com/doc/refman/8.0/en/upgrade-paths.html)

mysql版本相关知识:
mysql版本系列分为:mysql 5.0.x、mysql 5.1.x、mysql 5.5.x、mysql 5.6.x\、mysql 5.7.x、mysql 8.0.x,
其中的mysql 5.0、5.1、5.5、5.6、5.7 、8.0都是某个系列版本,在这个系列版本下分为很多小版本,比如mysql 5.7系列版本分为5.7.9、5.7.10等。
mysql 5.7系列的第一个GA版本是 5.7.9,
在mysql下载页面可以看到所有版本

mysql 5.0系列如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

mysql 5.1系列如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

mysql 5.5系列如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

mysql 5.6系列如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

mysql 5.7系列如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

mysql 8.0系列如下

在这里插入图片描述

在这里插入图片描述

8.0系列最新版本是8.0.36

1.3.2、版本升级选择的原则

1、升级前版本要求是GA版本,升级后版本要求是GA版本。
mysql 8.0.11 是mysql 8.0系列的第一个GA版本。

2、不支持直接的跨版本升级,比如从MySQL 5.6 升级到 mysql 8.0 是不支持的。

3、只能逐个版本升级:5.0 -> 5.1 ->5.5 -> 5.6 -> 5.7 ->8.0,最终达到跨版本升级的目的。

4、同系列版本内部:支持小版本跨版本升级。
比如从 MySQL 8.0.x to 8.0.(x+1) 是支持的,MySQL 8.0.x to 8.0.(x+n)也是支持的。

5、跨版本升级时,建议先升级到升级前版本系列的最新GA版本,再做跨版本升级。
比如从mysql 5.7.9升级到mysql 8.0.34,需要先从mysql 5.7.9升级到 5.7.45,然后mysql 5.7.45升级到 mysql 8.0.34。

常见升级场景:支持从Mysql 5.7 升级到 mysql 8.0 并且原版本和新版本都要是GA版本,GA版本就是正式发布版。比如从mysql 5.7.9升级到mysql 8.0.34,需要先从mysql 5.7.9升级到 5.7.45,然后mysql 5.7.45升级到 mysql 8.0.34。

1.4、5升级8.0需要注意 了解MySQL 8.0需要注意的变化

在升级到MySQL 8.0之前,请查看本节中描述的更改,以确定哪些更改适用于当前的MySQL安装和应用程序。执行任何推荐的操作。
参考链接: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html

1.5、mysql5升级8.0需要注意,了解MySQL 8.0的新特性,了解8.0相比于5.0的已弃用和已删除的特性。如果您使用这些特性中的任何一个,升级可能需要对它们进行更改

参考链接: https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

1.6、mysql5升级8.0需要注意,了解在MySQL 8.0中添加,弃用或删除的服务器和状态变量和选项。如果使用已弃用或已删除的变量,则升级可能需要更改配置

参考链接: https://dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.html

1.7、升级最佳实践

参考链接: https://dev.mysql.com/doc/refman/8.0/en/upgrade-best-practices.html#upgrade-best-practices-version

2、 升级方式选择

升级过程因平台和初始安装的执行方式而异。使用适用于当前MySQL安装的方式

2.1、对于升级前版本是非windows平台上的mysql二进制包和mysql rpm包或deb包的安装:

参考连接:https://dev.mysql.com/doc/refman/8.0/en/upgrade-binary-package.html

2.2、对于在redhat、centos、Fedora等系统上使用MySQL Yum Repository安装

参考连接:链接: https://dev.mysql.com/doc/refman/8.0/en/updating-yum-repo.html

2.3、对于在debian、ubuntu、arch等系统上使用MySQL Apt Repository安装

参考链接: https://dev.mysql.com/doc/refman/8.0/en/updating-apt-repo.html

2.4、对于SLES系统使用MySQL SLES Repository的安装

参考链接:https://dev.mysql.com/doc/refman/8.0/en/updating-sles-repo.html

2.5、对于使用Docker执行的安装

参考链接:https://dev.mysql.com/doc/refman/8.0/en/upgrade-docker-mysql.html

2.6、windows上安装的mysql升级

参考链接:https://dev.mysql.com/doc/refman/8.0/en/windows-upgrading.html

3、8.0.24升级8.0.32升级前准备

3.1、确定不存在以下问题

1、必须没有使用过时的数据类型或函数的表
2、不能有孤立的.frm文件
3、触发器不能缺少或空定义器或无效的创建上下文(由SHOW Triggers或INFORMATION_SCHEMA Triggers表显示的character_set_client、collation_connection、Database Collation属性指示)。必须转储并恢复任何此类触发器以解决问题。

确定上述问题是否存在 执行下述命令

mysqlcheck -u root -p --all-databases --check-upgrade

返回的值都是ok 就说明没问题。否则就需要采取措施解决不ok的项。
在这里插入图片描述

3.2、必须不存在使用不支持本机分区的存储引擎的分区表

必须不存在使用不支持本机分区的存储引擎的分区表。要识别这样的表,请执行此查询:

SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE NOT IN ('innodb', 'ndbcluster')
AND CREATE_OPTIONS LIKE '%partitioned%';

期望的结果是查询为空。否则就需要采取措施解决。
在这里插入图片描述

3.3、任何表的外键约束名称都不能超过64个字符

任何表的外键约束名称都不能超过64个字符。使用这个查询来识别约束名称过长的表:

SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME IN
  (SELECT LEFT(SUBSTR(ID,INSTR(ID,'/')+1),
               INSTR(SUBSTR(ID,INSTR(ID,'/')+1),'_ibfk_')-1)
   FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN
   WHERE CHAR_LENGTH(SUBSTR(ID,INSTR(ID,'/')+1))>64);

返回如下信息说明不存在:任何表的外键约束名称都不能超过64个字符。

在这里插入图片描述

4、8.0.24升级8.0.32

本文是mysql 8.0.24升级mysql 8.0.34,并且mysql8.0.24是使用rpm安装包方式安装的,因此参考连接:https://dev.mysql.com/doc/refman/8.0/en/upgrade-binary-package.html

4.1、备份升级前的数据

使用mysqldump备份数据
参考链接: https://dev.mysql.com/doc/refman/8.0/en/using-mysqldump.html

mysqldump -R -uroot -p --host=127.0.0.1 --port=3306 --all-databases > /tmp/8.0.24AllDatabasesBackup.sql

在这里插入图片描述

4.2、确认innodb_fast_shutdown的值不是2

如果innodb_fast_shutdown的值是2,需要调整成1或0

show variables like '%innodb_fast_shutdown%';

在这里插入图片描述

4.3、关闭mysql 8.0.24 的mysql服务

mysqladmin -u root -p shutdown
netstat -antlp|grep 3306|grep LISTEN

在这里插入图片描述

再次确认mysql服务关闭了

systemctl status mysqld.service

在这里插入图片描述

4.4、安装mysql 8.0.34的rpm包

下载mysql 8.0.34的rpm包
链接: https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar

上传mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar到mysql服务器
安装8.0.34的rpm包之前,查看已经安装的8.0.24 rpm包

yum list installed |grep  mysql

在这里插入图片描述

cd /path/to/mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-8.0.24-1.el7.x86_64.rpm-bundle.tar -C /usr/local/src/
cd /usr/local/src/
rpm -ivh mysql-community-common-8.0.34-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-8.0.34-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-client-8.0.34-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-server-8.0.34-1.el7.x86_64.rpm --nodeps --force

安装完成

在这里插入图片描述

安装8.0.34的rpm包之后,查看已经安装的8.0.24 rpm包

yum list installed |grep  mysql

在这里插入图片描述
mysql 8.0.34 rpm包已经安装成功

查看mysql版本

 mysqld --version

mysql程序已经升级到了8.0.34版本
在这里插入图片描述

此时还没有启动Mysql服务

systemctl status mysqld.service

在这里插入图片描述

netstat -antlp|grep 3306|grep LISTEN

在这里插入图片描述

4.5、启动mysql 8.0.34

启动mysql 8.0.34命令(启动mysql 8.0.34会升级8.0.24到8.0.34 实际上就是升级8.0.34的命令)

mysqld --user=mysql --datadir=/var/lib/mysql &

在这里插入图片描述

–datadir=/var/lib/mysql是数据库配置文件中设置的数据库数据目录
查看/etc/my.cnf

在这里插入图片描述

这个启动命令做的事情:
当启动MySQL 8.0服务器时,它会自动检测数据字典表是否存在。如果没有,服务器将在数据目录中创建它们,用元数据填充它们,然后继续正常的启动顺序。在此过程中,服务器升级所有数据库对象的元数据,包括数据库、表空间、系统和用户表、视图和存储程序(存储过程和函数、触发器和Event Scheduler事件)。服务器还会删除以前用于元数据存储的文件。例如,从MySQL 5.7升级到MySQL 8.0后,您可能会注意到表不再具有. form文件。

查看MySQL服务是否启动

netstat -antlp|grep 3306|grep LISTEN

在这里插入图片描述

登录Mysql数据库

mysql -uroot -p

查看所有数据库 看看是不是和升级之前一样

show databases;

在这里插入图片描述

在这里插入图片描述

如果启动命令执行失败,服务器将恢复对数据目录的所有更改。在这种情况下,您应该删除所有重做日志文件,在相同的数据目录下启动MySQL 5.7服务器,并修复任何错误的原因。然后再慢速关闭5.7服务器,再启动MySQL 8.0服务器进行重试。

除了登录mysql查看数据可以确认启动命令执行成功之外。

还可以查看mysql日志确认是否有错误日志 如果没有错误日志 则说明升级成功。
注意到启动MySQ服务的进程号是25190

在这里插入图片描述

打开mysql日志文件

vi /var/log/mysqld.log

搜索25190 发现 25190上面是关闭mysql 8.0.24的日志,就是本文4.3节的关闭Mysql 8.0.24的操作记录。
然后25190这行向下就是本文4.5节 启动mysql 8.0.34后的日志记录,查看这些日志记录,如果没有报错的日志记录就说明升级8.0.34是成功的。

在这里插入图片描述

日志显示升级8.0.34成功了

在这里插入图片描述

4.6、关闭并重新启动MySQL 8.0.34 服务,以确保对系统表所做的任何更改都生效

关闭MySQL 8.0.34

mysqladmin -u root -p shutdown

在这里插入图片描述

确认是否关闭成功并查看日志确认

netstat -antlp|grep 3306|grep LISTEN

3306已经不在监听了

在这里插入图片描述

查看mysql日志再次确认已经关闭成功了

vi /var/log/mysqld.log

2024-04-27T15:44:06.157063Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.34) MySQL Community Server - GPL.

在这里插入图片描述

在这里插入图片描述

重新启动MySQL 8.0.34

systemctl start mysqld.service 

在这里插入图片描述
查看mysql日志再次确认已经重启成功了

vi /var/log/mysqld.log

在这里插入图片描述

至此mysql 8.0.24 升级 8.0.34 成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1635573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PotatoPie 4.0 实验教程(37) —— FPGA实现摄像头图像二值化闭运算效果

手机扫码 链接直达 https://item.taobao.com/item.htm?ftt&id776516984361 什么是图像闭运算,有什么作用? 图像闭运算是由膨胀操作和腐蚀操作组成的。其作用与图像开运算相反,主要用于填充物体内部的小洞或小孔,平滑物体边…

C语言——每日一题(移除链表元素)

一.前言 今天在leetcode刷到了一道关于单链表的题。想着和大家分享一下。废话不多说,让我们开始今天的知识分享吧。 二.正文 1.1题目要求 1.2思路剖析 我们可以创建一个新的单链表,然后通过对原单链表的遍历,将数据不等于val的节点移到新…

20.哈希表(哈希冲突,闭散列、线性探测,开散列、哈希桶)

1. unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log_2 N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是&#xff…

【RAG 博客】Haystack 中的 DiversityRanker 与 LostInMiddleRanker 用来增强 RAG pipelines

Blog:Enhancing RAG Pipelines in Haystack: Introducing DiversityRanker and LostInTheMiddleRanker ⭐⭐⭐⭐ 文章目录 Haystack 是什么1. DiversityRanker2. LostInTheMiddleRanker使用示例 这篇 blog 介绍了什么是 Haystack,以及如何在 Haystack 框…

设计模式 基本认识

文章目录 设计模式的作用设计模式三原则设计模式与类图设计模式的分类 设计模式的作用 设计模式是在软件设计过程中针对常见问题的解决方案的一种通用、可重用的解决方案。设计模式提供了一种经过验证的方法,可以帮助开发人员解决特定类型的问题,并在软…

代码审计之SAST自动化

前言: 很久没写文章了,有点忙,落个笔,分享一些捣鼓或说适配好的一些好玩的东西。 脚本工具不开源,给一些思路,希望能给大家带来一些收获。 笔者能力有限,如有错误,欢迎斧正。 正文&#xff1a…

环形链表题

1.环形链表1 看题:. - 力扣(LeetCode) 思路1:哈希表 遍历所有节点,每次遍历一个节点时,判断该节点是否被访问过。 可以使用哈希表来存储所有已经访问过的节点。每次到达一个节点,如果该节点已…

Qt 6 开源版(免费) -- 安装图解

Qt6起,两项重大改变(并非指技术): 必须在线安装,不再提供单独的安装包主推收费的商业版 当然的,为了培养市场,Qt6还提供了一个免费的:开源版。 开源版相对于收费的商业版&#xf…

《Fundamentals of Power Electronics》——Boost电路及仿真

Boost电路的拓扑结构如下所示: 下面是在simulink中搭建的一个Boost电路的仿真实验平台,其中直流输入电压为100V,电感值为1mH(模拟电阻为1毫欧),电容值为470uF,负载为50欧姆,占空比选择为0.5,开关…

【Qt】QtCreator忽然变得很卡

1. 问题 Qt Creator忽然变得很卡。电脑里两个版本的Qt Creator,老版本的开启就卡死,新版本好一点,但是相比于之前也非常卡,最明显的是在 ctrl鼠标滚轮 放大缩小的时候,要卡好几秒才反应。 2. 解决方案 2.1 方法1 关…

239 基于matlab的EKF(扩展卡尔曼滤波)_UKF(无迹卡尔曼滤波)_PF(粒子滤波)三种算法的估计结果比较

基于matlab的EKF(扩展卡尔曼滤波)_UKF(无迹卡尔曼滤波)_PF(粒子滤波)三种算法的估计结果比较,输出估计误差,并单独对粒子滤波进行估计及其置信区间可视化。程序已调通,可直接运行。 239 EKF(扩展卡尔曼滤波) - 小红书 …

牛客网刷题 | CC1 获取字符串长度

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 键盘输入一个字符串…

redis故障中出现的缓存击穿、缓存穿透、缓存雪崩?

一、背景: 在维护redis服务过程中,经常遇见一些redis的名词,例如缓存击穿、缓存穿透、缓存雪崩等,但是不是很理解这些,如下就来解析一下缓存击穿、缓存穿透、缓存雪崩名词。 二、缓存穿透问题: 常见的缓存使…

update_min_vruntime()流程图

linux kernel scheduler cfs的update_min_vruntime() 看起来还挺绕的。含义其实也简单,总一句话,将 cfs_rq->min_vruntime 设置为: max( cfs_rq->vruntime, min(leftmost_se->vruntime, cfs_rq->curr->vruntime) )。 画个流…

Laravel5.4 反序列化

文章目录 0x01 环境搭建0x02 POP 链0x03 exp0x04 总结 前言:CC 链复现的头晕,还是从简单的 Laravel 开始吧。 laravel 版本:5.4 0x01 环境搭建 laravel安装包下载地址 安装后配置验证页面。在 /routes/web.php 文件中添加一条路由&#xf…

Java核心技术.卷I-上-笔记

目录 面向对象程序设计 使用命令行工具简单的编译源码 数据类型 StringBuilder 数组 对象与类 理解方法调用 继承 代理 异常 断言 日志 面向对象程序设计 面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分从根本上…

在Primavera P6 中维护自定义活动栏

前言 自从 Henry Gantt 在 1910 年左右提出这个想法以来,以图形方式显示项目进度表并沿时间刻度显示条形图一直延续到当今最复杂和流行的项目进度系统中。在本文中,我们将仔细研究 Primavera P6 Professional 中的甘特图,并探索一些自定义其…

一天狂涨2000亿的谷歌,看到了AI商业化的曙光

“人工智能是有史以来最深刻的平台变革之一,谷歌依旧会成为第一。” -谷歌CEO桑达尔皮查伊 在2024年一季度财报发布后,谷歌盘后涨超10%,终于站稳加入了“2 万亿美元俱乐部”。 从财报数据来看,谷歌一季度总营收805.4…

新手开通抖音小店的时候,必须要注意的6点!建议收藏!

大家好,我是电商小V 今天咱们就来详细的说一下开通抖音小店的时候需要注意的事项,避免咱们在开店的时候踩坑导致店铺后期的正常运营, 第一点:是关于营业执照的问题 营业执照咱们都知道,分为个体和企业的,咱…

正态分布的参数及意义

正态分布,也称为高斯分布,是统计学中最重要的分布之一,具有许多重要的特性。正态分布的参数包括均值(μ)和标准差(σ),有时也使用方差(σ^2)来描述。下面是这…