怎样将MySQL 5.7的数据平滑迁移至8.0版本?

P粉602998670

P粉602998670

2026-08-05

635人浏览

原创

必须先运行util.checkforserverupgrade(),它是oracle官方唯一推荐的升级检查工具,能识别utf8mb3、保留字、password字段等语义级问题;mysqlcheck和mysqldump --all-databases均不可靠,易导致启动崩溃或权限丢失。

怎样将mysql 5.7的数据平滑迁移至8.0版本?

必须先跑 util.checkForServerUpgrade(),别信 mysqlcheck

直接用 mysqldump 导出再导入,90% 会失败——不是数据丢了,而是 utf8mb3 字符集、rank 这类保留字、password 字段名这些语义级问题,mysqlcheck 完全看不见。util.checkForServerUpgrade() 才是 Oracle 官方唯一推荐的检查入口,它跑在 MySQL Shell 8.0+ 里,能真实扫描到升级阻塞点。

执行前确认三件事:
- 用目标 8.0 版本对应的 mysqlsh(比如升到 8.0.42,就得用 mysql-shell-8.0.42
- 连的是正在运行的 5.7 实例,优先走 socket:./mysqlsh -uroot -p -S /tmp/mysql.sock -e "util.checkForServerUpgrade()"
- 报告里 overallStatus 必须是 "OK";出现 ERROR(如 Usage of utf8mb3 charset)必须修复,WARNING(如 caching_sha2_password plugin not supported by client)也得处理,否则驱动连不上

导出时只碰业务库,死守 --databases + 手动排除

mysqldump --all-databases 是高危操作——它会把 5.7 的 mysql 库一并导出,而 8.0 的 user 表字段已从 password 改成 authentication_string,引擎强制为 InnoDB,权限模型重构。一旦导入,轻则 mysqld 启动崩溃,重则连 root 都登不进去。

正确做法:
- 只导出明确的业务库:mysqldump --default-character-set=utf8mb4 -u root -p --databases myapp_db shop_db > business.sql
- 如果误导了含 mysql 的文件,必须手动删掉所有以 CREATE DATABASE mysqlUSE mysql 开头的段落,再删光所有 INSERT INTO mysql.
- 导入前确认目标 8.0 实例的 mysql 库是全新初始化的,不是从 5.7 恢复来的

启动 8.0 前必须清理 my.cnf 和系统表残留

替换二进制后 mysqld 卡在 “Starting MySQL” 或秒退,大概率是配置或数据字典不兼容,不是服务没起来,是校验阶段就被拒载了。

MySQL(Linux)
MySQL(Linux)

MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。

下载

要动手删/改这几处:
- 删除或注释掉 5.7 已废弃参数:query_cache_typeinnodb_file_formatexplicit_defaults_for_timestamp
- 显式设置认证插件:default_authentication_plugin=mysql_native_password(除非你已统一升级 JDBC/PyMySQL 驱动)
- 查 MyISAM 表:SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE = 'MyISAM',结果非空就得先 ALTER TABLE ... ENGINE=InnoDB
- 清理 mysql 库下的自定义表(比如叫 rolesrole_edges),它们会和 8.0 新系统表撞名,导致启动失败

导入后第一分钟必须验证这四条命令

进程起来了 ≠ 数据库就绪。漏掉任意一条,都可能埋下半夜告警的坑:

SELECT VERSION(), @@sql_mode; —— 确认是 8.0.x,且 ONLY_FULL_GROUP_BYsql_mode
SHOW VARIABLES LIKE 'default_authentication_plugin'; —— 如果返回 caching_sha2_password,但应用还在用旧驱动,立刻建兼容用户:CREATE USER 'app'@'%' IDENTIFIED WITH mysql_native_password BY 'xxx';
SELECT * FROM performance_schema.replication_applier_status_by_coordinator; —— 如果开了复制,这里必须显示 APPLYING 状态
SELECT COUNT(*) FROM mysql.user; —— 确保系统表已升级完成,不是空的或字段缺失

最容易被跳过的其实是最后一项:没人真去查 mysql.user 有没有数据,但一旦它为空或字段错位,权限就全丢了,连 SHOW GRANTS 都返回空。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

1140

6

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.21

755

5

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

472

5

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.19

1378

5

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.25

1929

4

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.08

618

3

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.11

2268

4

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

2023.08.14

1985

7

mysql事务隔离级别
mysql事务隔离级别

mysql规范中定义了四种事务隔离级别,不同的隔离级别对事务的处理有所不同。本专题为大家提供mysql事务隔离级别相关的文章内容,大家可以免费体验。

2023.08.16

2418

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 125人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 224人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习