windows如何同时安装两个不同版本的Mysql(Mysql8.0+Mysql5.7) & 解决多实例可能发生的冲突问题

1.问题

由于公司要求使用mysql版本为Mysql5.7,而我之前的项目均是使用Mysql8.0,为了避免卸载重新安装Mysql5.7可能导致的问题,便寻找了可以同时在Windows上安装两个不同版本Mysql的方法

2.解决

参考:windows如何同时安装两个不同版本的Mysql(Mysql8.0+Mysql5.7)

2.1 进入你下载解压后的Mysql安装目录,我这里是 D:\mysql-5.7.24-winx64, 并且创建空文件夹data 和 配置文件 my.ini

2.2 配置my.ini

这里可以将之前你上一个版本的Mysql的该文件复制过来,也可以重新写一个
但一定要注意!!! 由于之前版本的Mysql版本使用的是3306端口,这里我改为使用了 3307 端口

[mysql]
 
# 设置mysql客户端默认字符集
default-character-set=utf8 
 
[mysqld]
 
#设置3307端口
port = 3307
 
# 设置mysql的安装目录
basedir=D:\mysql-5.7.24-winx64
 
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql-5.7.24-winx64\data
 
# 允许最大连接数
max_connections=200
 
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
 
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

2.3 设置环境变量

2.4 关闭原来的mysql服务

2.5 以管理员身份打开黑窗口(CMD),切换到mysql5安装目录的bin目录下执行

2.6 使用mysqld进行初始化操作(这里的路径改为自己的)

mysqld --defaults-file=D:\mysql-5.7.24-winx64\my.ini --initialize --console
注意要记录这里生成的随机初始密码!!!!
这里显示为'[Note] A temporary password is generated for root@localhost: n3fsco#ZdR7T'

2.7 注册服务(服务名可以自由选择),修改注册表

mysqld --install MYSQL5
成功会显示Service successfully installed

win+r,输入regedit,进入注册表页面,输入计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MYSQL5
选择其中的ImagePath项进行修改 "D:\mysql-5.7.24-winx64\bin\mysqld.exe" --defaults-file=D:\mysql-5.7.24-winx64\my.ini MySQL5
以上项根据自己的mysqld.exe和my.ini和服务名进行修改

2.8 启动Mysql5服务

net start Mysql5 若是有错误可以尝试在服务中寻找Mysql5项相关配置或者重启

2.9 通过DOS连接Mysql

遇到了一个小问题,没有指明端口号造成的:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
mysql -uroot -P3307 -pn3fsco#ZdR7T 这里不是默认3306端口号(之前配置中改为了3307),必须要在这指明,不能省略

2.10 设置兼容

set global show_compatibility_56=on;
show_compatibility_56 是 MySQL 中的一个全局系统变量,用于控制是否启用与 MySQL 5.6 版本兼容的特性。当这个变量被设置为 ON 时,MySQL 会尽可能地启用与 MySQL 5.6 版本兼容的行为,这样可以确保更容易迁移或使用那些依赖于 MySQL 5.6 版本行为的应用程序。

2.11 修改密码

set password for root@localhost = password('xxxxx');
直接设置即可

2.12 尝试使用数据库工具连接

注意这里也要指明端口号为3307!!!

3. 补充 (本地计算机上的 mysql57 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。)

3.1 遇到如上问题时,我在网上找了下解决思路,最常见的是备份data文件,然后将data删除,整个数据库重新初始化

参考:mysql数据库启动时报服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止

3.2 但是我们并不想如此操作,并且希望找到真正的错误原因,首先进入到data目录,找到PC.err报错日志

3.3 发现错误信息

2023-08-29T04:00:33.043848Z 1 [ERROR] [MY-012611] [InnoDB] Operating system error number 32 in a file operation.
2023-08-29T04:00:33.051735Z 1 [ERROR] [MY-012615] [InnoDB] The error means that another program is using InnoDB's files. This might be a backup or antivirus software or another instance of MySQL. Please close it to get rid of this error.

翻译下就是其他进程正在使用 MySQL 的数据文件。这可能是因为你的 MySQL 服务器已经在运行,或者其他程序正在访问 MySQL 的数据文件。
应该是之前开的那个Mysql实例未完全正确关闭

3.4 首先检查另一个Mysql实例是否关闭


这里确定服务已经关闭,但是问题出在哪呢?

3.5 进一步查询错误原因

mysqld --defaults-file="G:\tools\MySql\mysql-8.0.32-winx64\my.ini" --standalone --console

2024-03-21T13:46:40.669485Z 1 [ERROR] [MY-012526] [InnoDB] Upgrade is not supported after a crash or shutdown with innodb_fast_shutdown = 2. This redo log was created with MySQL 5.7.24, and it appears logically non empty. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
2024-03-21T13:46:40.671576Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
2024-03-21T13:46:40.703531Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2024-03-21T13:46:40.704919Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2024-03-21T13:46:40.708145Z 0 [ERROR] [MY-010119] [Server] Aborting

关键问题出现:Upgrade is not supported after a crash or shutdown with innodb_fast_shutdown = 2. This redo log was created with MySQL 5.7.24, and it appears logically non empty. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html

解释一下就是:MySQL 使用了 innodb_fast_shutdown = 2 设置进行了快速关闭后再次启动时,出现了不能支持升级的情况。此时,InnoDB 检测到 redo 日志(重做日志)不为空,可能是由于 MySQL 5.7.24 版本的 redo 日志无法直接用于 MySQL 8.0 版本的启动,导致了后面一系列的错误。

3.6 解决问题

参考:MYSQL:崩溃或 innodb_fast_shutdown = 2 关闭后不支持升级

在Mysql的安装目录下,找到 ib_logfile0ib_logfile1, 两个文件,备份删除

成功启动!

posted @ 2024-02-24 13:17  DawnTraveler  阅读(5105)  评论(0编辑  收藏  举报