我刚刚尝试将运行 MySQL 5.7.30(在 Docker 中)的 MySQL 实例升级到 MySQL 8.4.3(在 Docker 中),但现在该实例无法启动,并抱怨缺少mysql.ibd
文件。
我检查了 MySQL 数据文件夹,该文件不存在(mysql 文件夹存在,其中包含所有表文件),但我检查了仍在使用 MySQL 5.7.x 的其他系统,该文件不存在。我认为 MySQL 8.x 升级也许应该创建它,因为据我了解,mysql 系统数据库在 v8.x 之前是 MyISAM?
我搜索过,没有找到关于相同问题的任何报告。有人知道为什么会发生这种情况以及如何解决此问题并启动和运行新实例吗?
这是在实时系统上尝试之前的一次测试就地升级,因此我想了解在进行实际升级时如何避免这种情况。
2025-03-07 19:50:44+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.4.3-1.el9 started.
'/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
2025-03-07T19:50:45.450364Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2025-03-07T19:50:45.794562Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.4.3) starting as process 1
2025-03-07T19:50:45.870761Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2025-03-07T19:50:51.814984Z 1 [ERROR] [MY-012592] [InnoDB] Operating system error number 2 in a file operation.
2025-03-07T19:50:51.815073Z 1 [ERROR] [MY-012593] [InnoDB] The error means the system cannot find the path specified.
2025-03-07T19:50:51.815110Z 1 [ERROR] [MY-012216] [InnoDB] Cannot open datafile for read-only: 'mysql.ibd' OS error: 71
mysqld: Can't open file: 'mysql.ibd' (errno: 0 - )
2025-03-07T19:50:52.210315Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2025-03-07T19:50:52.210893Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2025-03-07T19:50:52.210968Z 0 [ERROR] [MY-010119] [Server] Aborting
2025-03-07T19:50:52.214916Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.4.3) MySQL Community Server - GPL.
2025-03-07T19:50:52.214957Z 0 [System] [MY-015016] [Server] MySQL Server - end.
我终于找到了解决问题的方法。您必须先从 MySQL 5.7.x 升级到 8.0.x,然后再升级到 8.4.x。
请参阅https://dev.mysql.com/doc/refman/8.4/en/upgrade-paths.html