MySql版本升级(8.0.19升级到8.0.22)

时间:2021-01-06 18:43:00 来源:互联网 作者: 神秘的大神 字体:

一、环境说明

操作系统:Windows Server2008 R2

数据库版本:MySql 8.0.19  数据库中数据量很小,处于测试环境,风险较低

二、升级原因

升级是因为测评漏洞,在进行国家三级等级保护测评过程中,漏扫发现多个MySql漏洞。

<img width="695" height="61" title="image" style="display: inline; background-image: none" alt="image" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184308388-1758226793.png" border="0" class="img-responsive">

<img width="695" height="503" title="image" style="display: inline; background-image: none" alt="image" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184313340-665031350.png" border="0" class="img-responsive">

一共包含3个高危漏洞以及约50个高危漏洞,经过整体整改建议查看,需要升级到8.0.20版本后可以解决相关漏洞,因此评估对版本进行升级,发现最新版本的为8.0.22版本,直接一步到位,升级到最新版。

三、升级方法

查了相关资料,MySql升级从8.0.16是一个分水岭,在该版本前后的升级方法有所不同,8.0.16版本之后升级方法大大简化。恰好我这里是8.0.16版本后的,暗自庆幸一下。

网上大部分资料都是介绍8.0.16之前的版本升级,8.0.16后的版本升级资料不多,我这里是直接按照官方文档进行的升级操作,简单的大概分为三步即可【停服务】—>【文件覆盖】—>【启服务】(像不像把大象放进冰箱里面的操作,只要三步,打开冰箱—>放进大象—>关上冰箱(* ̄︶ ̄))。

下面来介绍一下具体的操作:

官方升级文档参考:

https://dev.mysql.com/doc/refman/8.0/en/windows-upgrading.html#windows-upgrading-zip-distribution

<img width="678" height="534" title="image" style="display: inline; background-image: none" alt="image" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184316624-769657879.png" border="0" class="img-responsive">

<img width="678" height="151" title="image" style="display: inline; background-image: none" alt="image" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184318680-31166642.png" border="0" class="img-responsive">

大概总结如下(官方步骤中有一个操作可能可以通过多种方式实现):

1、下载最新的安装包,我这里使用的是解压包的方式,所以下载的为ZIP格式文件(使用exe升级的方式大同小异,可以同样参考官方文档进行操作);

下载地址:https://dev.mysql.com/downloads/mysql/

<img width="498" height="425" title="image" style="margin: 0; display: inline; background-image: none" alt="image" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184320756-1922849582.png" border="0" class="img-responsive">

2、查看已安装Mysql的版本

可以通过  SELECT VERSION(); 语句查看;

SELECT VERSION();

<img width="509" height="158" title="QQ截图20210106094732" style="display: inline; background-image: none" alt="QQ截图20210106094732" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184321295-1013708526.png" border="0" class="img-responsive">

或者通过CMD命令中执行命令查看

MYSQL -V

<img width="559" height="39" title="QQ截图20210106094952" style="display: inline; background-image: none" alt="QQ截图20210106094952" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184321802-1381394281.png" border="0" class="img-responsive">

3、停止服务前确定数据库的引擎类型以及服务重启方式。

查看数据库默认引擎类型

show variables like '%storage_engine%';

<img width="517" height="212" title="QQ截图20210106095144" style="display: inline; background-image: none" alt="QQ截图20210106095144" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184322497-1803408488.png" border="0" class="img-responsive">

查看提供的存储引擎

show engines;

<img width="551" height="276" title="QQ截图20210106095157" style="display: inline; background-image: none" alt="QQ截图20210106095157" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184323393-1846816129.png" border="0" class="img-responsive">

也可以通过表查看某一个表的了类型,在表的创建语句中找到ENGINE名称,一般是InnoDB

show create table 表名;

<img width="508" height="159" title="QQ截图20210106095730" style="display: inline; background-image: none" alt="QQ截图20210106095730" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184324007-423725652.png" border="0" class="img-responsive">

设置服务关闭方式,

show variables like '%innodb_fast_shutdown%';

设置为0:会做清除脏页和插入缓冲区的合并操作,也会将脏页全部刷新到磁盘上面去,但是这个时候关闭的速度也是最慢的;

设置为1:关闭MySQL的时候不会做清除脏页和插入缓冲区的合并操作,也不会将脏页刷新到磁盘;

设置为2:不会做清除脏页和插入缓冲区的合并操作,也不会将脏页刷新到磁盘,但是会刷新到redo log里面,再下次启动mysql的时候恢复;

默认设置为1,可以通过 set  global innodb_fast_shutdown=0 语句进行设置,建议设置为0或者1。

3、操作前备份

mysqldump -u root -p db-mcms-open > D:\backup20210106.sql

在cmd中通过语句输入密码进行数据库备份。

<img width="669" height="129" title="QQ截图20210106105217" style="display: inline; background-image: none" alt="QQ截图20210106105217" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184324852-314999026.png" border="0" class="img-responsive">

数据备份后,对原始的Mysql安装包也进行备份,以防万一。

4、停止服务

<img width="653" height="234" title="QQ截图20210106105352" style="display: inline; background-image: none" alt="QQ截图20210106105352" src="https://img2020.cnblogs.com/blog/315861/202101/315861-20210106184325890-1980873752.png" border="0" class="img-responsive">

右键停止服务即可。

5、文件替换

将下载的最新安装包解压,并覆盖已安装版本,选择文件夹合并以及文件覆盖(新的包里面没有data文件夹以及my.ini配置文件)。

6、同第四步操作,启动服务即可

7、通过第二步语句进行版本验证以及数据库登录、应用等验证工作。

至此,整个升级完毕,个人升级比较顺利,过程中并未遇到什么问题,而且升级后进行了应用等验证,均无问题。