我有一个在docker容器中运行的mysql服务器,尝试将数据库从8.0.29版本升级到8.0.30版本,但是启动时出现以下错误:
2022-09-06T13:13:39.928986Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.30) starting as process 1
2022-09-06T13:13:40.701091Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-09-06T13:13:40.954725Z 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 8.0.29, and it appears logically non empty. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
2022-09-06T13:13:40.954752Z 1 [ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error.
2022-09-06T13:13:41.328075Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2022-09-06T13:13:41.328265Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2022-09-06T13:13:41.328299Z 0 [ERROR] [MY-010119] [Server] Aborting
然后我尝试在 8.0.29 版本中重新启动,但仍然不起作用 - 错误消息是:
2022-09-06T13:31:18.544142Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.29) starting as process 1
2022-09-06T13:31:18.682671Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-09-06T13:31:24.588234Z 1 [ERROR] [MY-013171] [InnoDB] Cannot boot server version 80029 on data directory built by version 80030. Downgrade is not supported
mysqld: Can't open file: 'mysql.ibd' (errno: 0 - )
2022-09-06T13:31:25.243497Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2022-09-06T13:31:25.243720Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2022-09-06T13:31:25.243968Z 0 [ERROR] [MY-010119] [Server] Aborting
有什么想法可以解决该问题吗?
答案1
首先备份您的 mysql 数据目录。然后删除文件 ib_logfile*。当您启动 mysql 时,它将创建新的空日志文件。
此外,使用 运行innodb_fast_shutdown = 2
不是一个好主意。将其更改为 1。您仍然可以快速关闭,但 mysql 将尽可能减少操作以使您的文件处于一致、可升级的状态。正如您所发现的,这在运行 Docker 时很重要,因为 Docker 中的软件版本可以独立于数据。