MySQL版本升级
在网上学习到Mysql的升级方式分为两种:原地升级和逻辑升级。这两种升级方式,本质没有什么区别的。
只是在对数据文件的处理上有些区别而已。原地升级是直接将数据文件进行拷贝,而逻辑升级对数据文件的处理方式是通过逻辑导出导入,需要用到mysqldump
。
逻辑升级这种方式在数据量比较大的情况下花费时间比较长。所以今天尝试一下原地升级。
原地升级
一.将现有的mysql关闭。使用cmd窗口,进入到mysql目录下面,将mysql服务移除。
C:\Users\Administrator\mysql5.6\bin>mysqld --remove mysql56 Service successfully removed.
二.下载最新的mysql5.7压缩包。
下载地址:https://dev.mysql.com/downloads/mysql/
最新的mysql5.7的压缩包解压开你会发现,没有data目录和my.ini文件。
(
data目录中是存的数据库文件,不建议将之前版本的data目录复制进来,经测试 这样做后期数据库服务无法启动
后面会提到当 mysql服务无法启动 服务没有报告任何错误 解决方法
)
三.手动创建配置文件,文件名为:my.ini,添加内容如下:
可复制文本如下:
[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\\tools\mysql-5.7.25-winx64 # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错 datadir=D:\\tools\mysql-5.7.25-winx64\data # 允许最大连接数 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:\tools\mysql-5.7.25-winx64\bin>mysqld --install mysqld Service successfully removed.
install 后面写的服务名看 bin目录下的mysql的应用程序是什么 我的是mysqld
2.启动mysql服务
D:\tools\mysql-5.7.25-winx64\bin>net start mysqld
mysqld 服务正在启动 ..
mysqld 服务已经启动成功。
五.升级mysql:mysql_upgrade -uroot -p
D:\tools\mysql-5.7.25-winx64\bin>mysql_upgrade -uroot -p
.......自己升级..........
六.升级成功后,再次重启mysql5.7服务
D:\tools\mysql-5.7.25-winx64>net stop mysqld mysqld 服务正在停止. mysqld 服务已成功停止。
D:\tools\mysql-5.7.25-winx64\bin>net start mysqld mysqld 服务正在启动 .. mysqld 服务已经启动成功。
至此安装升级完成。
另外:mysql启动失败,mysql服务无法启动 服务没有报告任何错误 该怎么办
尝试以下步骤,最终解决问题:
1 查看host文件(C:\Windows\System32\drivers\etc\hosts)
看是否修改过本地域名,如果将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命令启动服务,发现启动成功!