络腮胡菲菲 发表于 2024-6-11 13:20:50

mysql 版本升级 8.0.24升级到 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)
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系列如下
https://img-blog.csdnimg.cn/direct/d710178a089d4faca081f3a179b4d9b0.png
https://img-blog.csdnimg.cn/direct/d2b187abd3b44efba2f78bafa06b7188.png
https://img-blog.csdnimg.cn/direct/b26f900e218a47e4b8c997c50cd217b8.png
mysql 5.1系列如下
https://img-blog.csdnimg.cn/direct/ba8abbfbe17a454593e7fa7bf85e9857.png
https://img-blog.csdnimg.cn/direct/b9279b58b04b40cbb5f79437eb5c2bff.png
https://img-blog.csdnimg.cn/direct/2b02edeeb99345c3b8ef90ce24a1cf96.png
mysql 5.5系列如下
https://img-blog.csdnimg.cn/direct/249f3839752c4158958f731c05029713.png
https://img-blog.csdnimg.cn/direct/7b6f8f22632f4179b607a20aa88011c9.png
https://img-blog.csdnimg.cn/direct/f8915450ce9c47eb91e66b7c97dcb1de.png
https://img-blog.csdnimg.cn/direct/65b9b2a18f9948e7ac29ff8749cbccbf.png
mysql 5.6系列如下
https://img-blog.csdnimg.cn/direct/467685477f054dbc88c409580893e3f0.png
https://img-blog.csdnimg.cn/direct/d1181f95f8034bd4a07cf92aaf27d0cf.png
https://img-blog.csdnimg.cn/direct/e00f3eb268fa45ae8d424266a7d87882.png
mysql 5.7系列如下
https://img-blog.csdnimg.cn/direct/be199f4ac21549adb617f5c6c31ce088.png
https://img-blog.csdnimg.cn/direct/a026fc9d5d2f429383c2349e8ab90809.png
https://img-blog.csdnimg.cn/direct/09ab5c96ea4a45679856b4917f3e975a.png
mysql 8.0系列如下
https://img-blog.csdnimg.cn/direct/b6af483a07f94e35b2b346fdc2a7bc19.png
https://img-blog.csdnimg.cn/direct/bef373e408d34e428c0c6e14d6c1b8d1.png
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的项。
https://img-blog.csdnimg.cn/direct/6582ee2b6bac411ab1cff7d3e97a37fb.png
3.2、必须不存在利用不支持本机分区的存储引擎的分区表

必须不存在利用不支持本机分区的存储引擎的分区表。要识别这样的表,请执行此查询:
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE ENGINE NOT IN ('innodb', 'ndbcluster')
AND CREATE_OPTIONS LIKE '%partitioned%';
期望的效果是查询为空。否则就需要接纳措施解决。
https://img-blog.csdnimg.cn/direct/60acbd959d7049cd987eb552decc8d78.png
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个字符。
https://img-blog.csdnimg.cn/direct/72c143c2d9a14a7b820345704fb48365.png
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
https://img-blog.csdnimg.cn/direct/3eec02e029fa4c89a10d716344357843.png
4.2、确认innodb_fast_shutdown的值不是2

如果innodb_fast_shutdown的值是2,需要调整成1或0
show variables like '%innodb_fast_shutdown%';
https://img-blog.csdnimg.cn/direct/83ebfcabecde4f19a503853238ce4e61.png
4.3、关闭mysql 8.0.24 的mysql服务

mysqladmin -u root -p shutdown

netstat -antlp|grep 3306|grep LISTEN



https://img-blog.csdnimg.cn/direct/cdc0fa4193a240c0966941f0a0d9143b.png
再次确认mysql服务关闭了
systemctl status mysqld.service

https://img-blog.csdnimg.cn/direct/6ebe03b11aea4260a046d7c95167cc65.png
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 |grepmysql

https://img-blog.csdnimg.cn/direct/d42c4ea94ccf43fd998095b2a8ce2cbf.png
cd /path/to/mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-8.0.34-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
安装完成
https://img-blog.csdnimg.cn/direct/21a6e74a9d854997888d3c09f7657e1e.png
安装8.0.34的rpm包之后,查看已经安装的8.0.24 rpm包
yum list installed |grepmysql

https://img-blog.csdnimg.cn/direct/255532d4bfa14d408f7226ecdf99a761.png
mysql 8.0.34 rpm包已经安装乐成
查看mysql版本
mysqld --version
mysql程序已经升级到了8.0.34版本
https://img-blog.csdnimg.cn/direct/707b53a325604375a21b2d05b7648958.png
此时还没有启动Mysql服务
systemctl status mysqld.service

https://img-blog.csdnimg.cn/direct/b00e48adf59c426a8d4f470494d5a309.png
netstat -antlp|grep 3306|grep LISTEN



https://img-blog.csdnimg.cn/direct/a15227071ed749f7814ae85a73c0d179.png
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 &
https://img-blog.csdnimg.cn/direct/81289a39e98f4c3fac23d63345870732.png
–datadir=/var/lib/mysql是数据库配置文件中设置的数据库数据目录
查看/etc/my.cnf
https://img-blog.csdnimg.cn/direct/ce06ac7cebb544bf99a4c1534d04d953.png
这个启动命令做的变乱:
当启动MySQL 8.0服务器时,它会自动检测数据字典表是否存在。如果没有,服务器将在数据目录中创建它们,用元数据填充它们,然后继承正常的启动顺序。在此过程中,服务器升级所有数据库对象的元数据,包括数据库、表空间、体系和用户表、视图和存储程序(存储过程和函数、触发器和Event Scheduler变乱)。服务器还会删除以前用于元数据存储的文件。例如,从MySQL 5.7升级到MySQL 8.0后,您可能会注意到表不再具有. form文件。
查看MySQL服务是否启动
netstat -antlp|grep 3306|grep LISTEN



https://img-blog.csdnimg.cn/direct/3784b2c7576e400bb75d85228c57468c.png
登录Mysql数据库
mysql -uroot -p
查看所有数据库 看看是不是和升级之前一样
show databases;
https://img-blog.csdnimg.cn/direct/072a24302bbf4507bcec33a7d80cf2e1.png
https://img-blog.csdnimg.cn/direct/4d5bfb3c9f464bfc94bed346d02f8d4a.png
如果启动命令执行失败,服务器将恢复对数据目录的所有更改。在这种环境下,您应该删除所有重做日志文件,在相同的数据目录下启动MySQL 5.7服务器,并修复任何错误的原因。然后再慢速关闭5.7服务器,再启动MySQL 8.0服务器进行重试。
除了登录mysql查看数据可以确认启动命令执行乐成之外。
还可以查看mysql日志确认是否有错误日志 如果没有错误日志 则说明升级乐成。
注意到启动MySQ服务的历程号是25190
https://img-blog.csdnimg.cn/direct/2db599f92f8047a88594adcb8edf9771.png
打开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是乐成的。
https://img-blog.csdnimg.cn/direct/7ae0c48edd4940a8841bf53e8cf8558b.png
日志表现升级8.0.34乐成了
https://img-blog.csdnimg.cn/direct/ed2ece3a535f406093f4b730c0e82c89.png
4.6、关闭并重新启动MySQL 8.0.34 服务,以确保对体系表所做的任何更改都生效

关闭MySQL 8.0.34
mysqladmin -u root -p shutdown

https://img-blog.csdnimg.cn/direct/d64dd5ffb01a48a790991f0d9f3f6db6.png
确认是否关闭乐成并查看日志确认
netstat -antlp|grep 3306|grep LISTEN



3306已经不在监听了
https://img-blog.csdnimg.cn/direct/56777c97727a412aac882b3e2d41b8ad.png
查看mysql日志再次确认已经关闭乐成了
vi /var/log/mysqld.log


2024-04-27T15:44:06.157063Z 0 /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.34) MySQL Community Server - GPL.
https://img-blog.csdnimg.cn/direct/ac10bd38dc3b4aa7ae3accd03640a1de.png
https://img-blog.csdnimg.cn/direct/a542dd8fe3334609af2c053d5108c66b.png
重新启动MySQL 8.0.34
systemctl start mysqld.service
https://img-blog.csdnimg.cn/direct/598bed5bf76a413bb2f02ecb8b278c74.png
查看mysql日志再次确认已经重启乐成了
vi /var/log/mysqld.log


https://img-blog.csdnimg.cn/direct/ea94e9b1ab0a4f5fb9f058365dd6694e.png
至此mysql 8.0.24 升级 8.0.34 乐成。

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