同时安装多版本MySQL数据库
以下是从安装 MySQL 8.4.10 到完成数据迁移的完整总流程,已整合所有前期遇到的问题及解决方案。
全程内网可操作,无需联网。
一、准备工作(外网下载,一次完成)
- 在可上网的电脑上访问 MySQL Community Downloads。
- 选择对应的版本,这里选择的是 8.4.10,下载 Windows (x86, 64-bit), ZIP Archive。
- 将压缩包拷贝到内网目标机器。
二、安装 MySQL 8.4.10 新实例
1. 解压并创建必要目录(内网操作)
- 解压到
D:\Program Files\MySQL\MySQL Server 8.4.10\ - 手动创建以下文件夹(不会自动生成):
D:\ProgramData\MySQL\MySQL Server 8.4.10\Data D:\ProgramData\MySQL\MySQL Server 8.4.10\logs D:\ProgramData\MySQL\MySQL Server 8.4.10\Uploads
2. 编写配置文件 my.ini
在 D:\Program Files\MySQL\MySQL Server 8.4.10\ 下新建 my.ini,内容如下(端口、路径、ID 均与旧实例不同):
[client]
port=3307
[mysql]
no-beep
[mysqld]
port=3307
basedir=D:/Program Files/MySQL/MySQL Server 8.4.10
datadir=D:/ProgramData/MySQL/MySQL Server 8.4.10/Data
server-id=2
character-set-server=utf8mb4
default-storage-engine=INNODB
sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
lower_case_table_names=1
log-error=D:/ProgramData/MySQL/MySQL Server 8.4.10/logs/mysql_error.log
general_log=0
general_log_file=D:/ProgramData/MySQL/MySQL Server 8.4.10/logs/general.log
slow_query_log=1
slow_query_log_file=D:/ProgramData/MySQL/MySQL Server 8.4.10/logs/slow.log
long_query_time=10
log-bin=D:/ProgramData/MySQL/MySQL Server 8.4.10/logs/binlog
secure-file-priv=D:/ProgramData/MySQL/MySQL Server 8.4.10/Uploads
max_connections=151
table_open_cache=4000
innodb_buffer_pool_size=128M
innodb_redo_log_capacity=100M
# 可复制旧实例其他性能参数
3. 初始化数据库实例
以管理员身份打开命令提示符:
cd /d "D:\Program Files\MySQL\MySQL Server 8.4.10\bin"
mysqld --defaults-file="D:\Program Files\MySQL\MySQL Server 8.4.10\my.ini" --initialize --console
屏幕最后一行会显示临时密码,务必立即记下,例如:
A temporary password is generated for root@localhost: o;wJq7<T1p
4. 安装 Windows 服务并启动(注意避免环境变量干扰)
必须使用绝对路径安装,否则可能调用了旧版 8.4.6 的 mysqld:
"D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysqld" --install MySQL84_10 --defaults-file="D:\Program Files\MySQL\MySQL Server 8.4.10\my.ini"
提示 Service successfully installed. 后启动:
net start MySQL84_10
如果启动失败,查看日志:D:\ProgramData\MySQL\MySQL Server 8.4.10\logs\mysql_error.log
5. 修改 root 密码
mysql -u root -P 3307 -p
输入临时密码,执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;
备用:若忘记临时密码,可使用跳过权限验证方式重置(见附录)。
三、从旧实例导出数据(MySQL 8.4.6)
1. 创建备份存放目录
mkdir D:\ProgramData\MySQL\backup
2. 使用 mysqldump 导出(强烈建议用绝对路径,并设置字符集参数)
进入旧实例的 bin 目录或直接使用绝对路径:
"D:\Program Files\MySQL\MySQL Server 8.4\bin\mysqldump" -u root -P 3306 -p --all-databases --triggers --routines --events --set-gtid-purged=OFF --default-character-set=utf8mb4 --hex-blob --skip-extended-insert --result-file=D:\ProgramData\MySQL\backup\fulldump.sql
参数说明:
--default-character-set=utf8mb4:避免乱码。--hex-blob:将二进制字段转成十六进制,防止特殊字符干扰。--skip-extended-insert:每条 INSERT 只插入一行,虽然文件变大,但能彻底避免导入时出现Unknown command '\"'等行首转义问题。如果数据量极大担心导入慢,可去掉此参数,但需承受可能出现的同类报错并手动修复。--result-file:直接写文件,避免重定向时目录不存在的问题。
输入旧实例 root 密码后,备份文件会生成在 D:\ProgramData\MySQL\backup\fulldump.sql。
四、向新实例导入数据(MySQL 8.4.10)
1. 导入 SQL 文件
"D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysql" -u root -P 3307 -p --default-character-set=utf8mb4 < D:\ProgramData\MySQL\backup\fulldump.sql
输入新实例的 root 密码,等待导入完成。
如果之前未使用
--skip-extended-insert,导入时若出现Unknown command '\...',需在 MySQL 内部用source命令,并可能需手动修复问题行。推荐直接用上述带--skip-extended-insert的参数重新导出一次,一劳永逸。
2. 验证数据完整性
登录新实例:
mysql -u root -P 3307 -p
执行:
SHOW DATABASES; -- 查看库是否全部存在
USE 某个库;
SELECT COUNT(*) FROM 某表; -- 抽样核对行数
五、收尾与日常管理
- 连接新实例:
mysql -u root -P 3307 -p - 连接旧实例:
mysql -u root -P 3306 -p - 停止新服务:
net stop MySQL84_10 - 卸载新服务(先停止):
"D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysqld" --remove MySQL84_10
附录:忘记临时密码的解决办法
- 停止服务:
net stop MySQL84_10 - 启动跳过权限模式(窗口挂起):
"D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysqld" --defaults-file="D:\Program Files\MySQL\MySQL Server 8.4.10\my.ini" --skip-grant-tables --skip-networking - 另开窗口无密码登录并改密码:
"D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysql" -u root -P 3307FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES; exit; - 按
Ctrl+C结束跳过权限的窗口,然后net start MySQL84_10。
总结:整个流程的关键在于用绝对路径调用正确版本的 mysqld、预先创建所有目录、导出时使用完善的字符集和转义参数,即可在内网顺利安装并迁移数据。

9157

被折叠的 条评论
为什么被折叠?



