1、环境说明html
操做系统:Windows Server2008 R2mysql
数据库版本:MySql 8.0.19 数据库中数据量很小,处于测试环境,风险较低sql
2、升级缘由升级是由于测评漏洞,在进行国家三级等级保护测评过程当中,漏扫发现多个MySql漏洞。数据库
一共包含3个高危漏洞以及约50个高危漏洞,通过总体整改建议查看,须要升级到8.0.20版本后能够解决相关漏洞,所以评估对版本进行升级,发现最新版本的为8.0.22版本,直接一步到位,升级到最新版。windows
3、升级方法测试
查了相关资料,MySql升级从8.0.16是一个分水岭,在该版本先后的升级方法有所不一样,8.0.16版本以后升级方法大大简化。刚好我这里是8.0.16版本后的,暗自庆幸一下。操作系统
网上大部分资料都是介绍8.0.16以前的版本升级,8.0.16后的版本升级资料很少,我这里是直接按照官方文档进行的升级操做,简单的大概分为三步便可【停服务】—>【文件覆盖】—>【启服务】(像不像把大象放进冰箱里面的操做,只要三步,打开冰箱—>放进大象—>关上冰箱(* ̄︶ ̄))。htm
下面来介绍一下具体的操做:blog
官方升级文档参考:ip
https://dev.mysql.com/doc/refman/8.0/en/windows-upgrading.html#windows-upgrading-zip-distribution
大概总结以下(官方步骤中有一个操做可能能够经过多种方式实现):
一、下载最新的安装包,我这里使用的是解压包的方式,因此下载的为ZIP格式文件(使用exe升级的方式大同小异,能够一样参考官方文档进行操做);
下载地址:https://dev.mysql.com/downloads/mysql/
二、查看已安装Mysql的版本
能够经过 SELECT VERSION(); 语句查看;
SELECT VERSION();
或者经过CMD命令中执行命令查看
MYSQL -V
三、中止服务前肯定数据库的引擎类型以及服务重启方式。
查看数据库默认引擎类型
show variables like '%storage_engine%';
查看提供的存储引擎
show engines;
也能够经过表查看某一个表的了类型,在表的建立语句中找到ENGINE名称,通常是InnoDB。
show create table 表名;
设置服务关闭方式,
show variables like '%innodb_fast_shutdown%';
设置为0:会作清除脏页和插入缓冲区的合并操做,也会将脏页所有刷新到磁盘上面去,可是这个时候关闭的速度也是最慢的;
设置为1:关闭MySQL的时候不会作清除脏页和插入缓冲区的合并操做,也不会将脏页刷新到磁盘;
设置为2:不会作清除脏页和插入缓冲区的合并操做,也不会将脏页刷新到磁盘,可是会刷新到redo log里面,再下次启动mysql的时候恢复;
默认设置为1,能够经过 set global innodb_fast_shutdown=0 语句进行设置,建议设置为0或者1。
三、操做前备份
mysqldump -u root -p db-mcms-open > D:\backup20210106.sql
在cmd中经过语句输入密码进行数据库备份。
数据备份后,对原始的Mysql安装包也进行备份,以防万一。
四、中止服务
右键中止服务便可。
五、文件替换
将下载的最新安装包解压,并覆盖已安装版本,选择文件夹合并以及文件覆盖(新的包里面没有data文件夹以及my.ini配置文件)。
六、同第四步操做,启动服务便可
七、经过第二步语句进行版本验证以及数据库登陆、应用等验证工做。
至此,整个升级完毕,我的升级比较顺利,过程当中并未遇到什么问题,并且升级后进行了应用等验证,均无问题。