mysql 版本升级 8.0.24升级到 8.0.34

打印 上一主题 下一主题

主题 548|帖子 548|积分 1644

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属性指示)。必须转储并恢复任何此类触发器以解决问题。
确定上述问题是否存在 执行下述命令
  1. mysqlcheck -u root -p --all-databases --check-upgrade
复制代码
返回的值都是ok 就说明没问题。否则就需要接纳措施解决不ok的项。

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

必须不存在利用不支持本机分区的存储引擎的分区表。要识别这样的表,请执行此查询:
  1. SELECT TABLE_SCHEMA, TABLE_NAME
  2. FROM INFORMATION_SCHEMA.TABLES
  3. WHERE ENGINE NOT IN ('innodb', 'ndbcluster')
  4. AND CREATE_OPTIONS LIKE '%partitioned%';
复制代码
期望的效果是查询为空。否则就需要接纳措施解决。

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

任何表的外键约束名称都不能超过64个字符。利用这个查询来识别约束名称过长的表:
  1. SELECT TABLE_SCHEMA, TABLE_NAME
  2. FROM INFORMATION_SCHEMA.TABLES
  3. WHERE TABLE_NAME IN
  4.   (SELECT LEFT(SUBSTR(ID,INSTR(ID,'/')+1),
  5.                INSTR(SUBSTR(ID,INSTR(ID,'/')+1),'_ibfk_')-1)
  6.    FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN
  7.    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
  1. 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
  1. show variables like '%innodb_fast_shutdown%';
复制代码

4.3、关闭mysql 8.0.24 的mysql服务

  1. mysqladmin -u root -p shutdown
复制代码
  1. netstat -antlp|grep 3306|grep LISTEN
复制代码

再次确认mysql服务关闭了
  1. 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包
  1. yum list installed |grep  mysql
复制代码

  1. cd /path/to/mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar
  2. tar -xvf mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar -C /usr/local/src/
  3. cd /usr/local/src/
  4. rpm -ivh mysql-community-common-8.0.34-1.el7.x86_64.rpm --nodeps --force
  5. rpm -ivh mysql-community-libs-8.0.34-1.el7.x86_64.rpm --nodeps --force
  6. rpm -ivh mysql-community-client-8.0.34-1.el7.x86_64.rpm --nodeps --force
  7. rpm -ivh mysql-community-server-8.0.34-1.el7.x86_64.rpm --nodeps --force
复制代码
安装完成

安装8.0.34的rpm包之后,查看已经安装的8.0.24 rpm包
  1. yum list installed |grep  mysql
复制代码

mysql 8.0.34 rpm包已经安装乐成
查看mysql版本
  1. mysqld --version
复制代码
mysql程序已经升级到了8.0.34版本

此时还没有启动Mysql服务
  1. systemctl status mysqld.service
复制代码

  1. 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的命令)
  1. 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服务是否启动
  1. netstat -antlp|grep 3306|grep LISTEN
复制代码

登录Mysql数据库
  1. mysql -uroot -p
复制代码
查看所有数据库 看看是不是和升级之前一样
  1. show databases;
复制代码


如果启动命令执行失败,服务器将恢复对数据目录的所有更改。在这种环境下,您应该删除所有重做日志文件,在相同的数据目录下启动MySQL 5.7服务器,并修复任何错误的原因。然后再慢速关闭5.7服务器,再启动MySQL 8.0服务器进行重试。
除了登录mysql查看数据可以确认启动命令执行乐成之外。
还可以查看mysql日志确认是否有错误日志 如果没有错误日志 则说明升级乐成。
注意到启动MySQ服务的历程号是25190

打开mysql日志文件
  1. 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
  1. mysqladmin -u root -p shutdown
复制代码

确认是否关闭乐成并查看日志确认
  1. netstat -antlp|grep 3306|grep LISTEN
复制代码
3306已经不在监听了

查看mysql日志再次确认已经关闭乐成了
  1. 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
  1. systemctl start mysqld.service
复制代码

查看mysql日志再次确认已经重启乐成了
  1. vi /var/log/mysqld.log
复制代码

至此mysql 8.0.24 升级 8.0.34 乐成。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表