在网上学习到Mysql的升级方式分为两种:原地升级逻辑升级。这两种升级方式,本质没有什么区别的。

只是在对数据文件的处理上有些区别而已。原地升级是直接将数据文件进行拷贝,而逻辑升级对数据文件的处理方式是通过逻辑导出导入,需要用到mysqldump。 
逻辑升级这种方式在数据量比较大的情况下花费时间比较长。所以今天尝试一下原地升级

原地升级

一.将现有的mysql关闭。使用cmd窗口,进入到mysql目录下面,将mysql服务移除。

C:UsersAdministratormysql5.6in>mysqld --remove mysql56
Service successfully removed.

二.下载最新的mysql5.7压缩包。

下载地址:https://dev.mysql.com/downloads/mysql/ 
最新的mysql5.7的压缩包解压开你会发现,没有data目录和my.ini文件。

MySQL版本升级-风君雪科技博客

data目录中是存的数据库文件,不建议将之前版本的data目录复制进来,经测试 这样做后期数据库服务无法启动

后面会提到当 mysql服务无法启动 服务没有报告任何错误 解决方法

 三.手动创建配置文件,文件名为:my.ini,添加内容如下:

MySQL版本升级-风君雪科技博客

 可复制文本如下:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\toolsmysql-5.7.25-winx64
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
datadir=D:\toolsmysql-5.7.25-winx64data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

四.将要升级的数据库的服务添加到win的服务队列中 并启动服务

1.将mysql5.7的服务添加到win的服务队列中

D:	oolsmysql-5.7.25-winx64in>mysqld --install mysqld 
Service successfully removed.
install 后面写的服务名看 bin目录下的mysql的应用程序是什么 我的是mysqld

MySQL版本升级-风君雪科技博客

2.启动mysql服务

D:	oolsmysql-5.7.25-winx64in>net start mysqld
mysqld 服务正在启动 ..
mysqld 服务已经启动成功。

五.升级mysql:mysql_upgrade -uroot -p

D:	oolsmysql-5.7.25-winx64in>mysql_upgrade -uroot -p
.......自己升级..........

六.升级成功后,再次重启mysql5.7服务

D:	oolsmysql-5.7.25-winx64>net stop mysqld
mysqld 服务正在停止. 
mysqld 服务已成功停止。
D:	oolsmysql-5.7.25-winx64in>net start mysqld 
mysqld 服务正在启动 .. 
mysqld 服务已经启动成功。

至此安装升级完成。

另外:mysql启动失败,mysql服务无法启动 服务没有报告任何错误 该怎么办

MySQL版本升级-风君雪科技博客

尝试以下步骤,最终解决问题:

1 查看host文件(C:WindowsSystem32driversetchosts)

看是否修改过本地域名,如果将localhost对应的地址修改过,有可能会导致连接mysql server失败。

解决方法:将localhost映射的地址注释掉

2 如果在mysql的安装路径中没有配置文件,则自己手动创建一个,

文件名为:my.ini,添加内容

注意:datadir属性后的data文件夹,一定不要自己手动创建,本人尝试手动创建会有问题,如果自己创建了可以删除掉,再执行后面的操作。

3 在mysql5.7以上版本中默认没有一个data目录,即没有初始化服务。

需要先初始化mysql才可以启动服务,否则会报 “服务没有报告任何错误”,启动失败。

解决方法:

a 进入mysql的bin目录;

b 执行mysqld  –initialize-insecure ,第一次执行的话,时间会久一些,执行结束后没有输出信息,查看bin的同级目录下会多出一个data文件夹,里面一堆文件。

4 再次执行net start mysql命令启动服务,发现启动成功!