MySQL 8.0 找不到数据字典版本号

Posted

技术标签:

【中文标题】MySQL 8.0 找不到数据字典版本号【英文标题】:MySQL 8.0 No data dictionary version number found 【发布时间】:2018-07-03 01:13:33 【问题描述】:

我已在我的测试服务器上将 mysql 8.0.3 更新为 8.0.4。但是,它不会启动服务。

LOG的附加信息:

2018-01-24T04:32:26.996977Z 0 [System] [MY-010116] /usr/sbin/mysqld (mysqld 8.0.4-rc-log) starting as process 12406 ...
2018-01-24T04:32:27.444234Z 1 [ERROR] [MY-011096] No data dictionary version number found.
2018-01-24T04:32:27.444725Z 0 [ERROR] [MY-010020] Data Dictionary initialization failed.
2018-01-24T04:32:27.444802Z 0 [ERROR] [MY-010119] Aborting
2018-01-24T04:32:28.806928Z 0 [System] [MY-010910] /usr/sbin/mysqld: Shutdown complete.

我也尝试运行 mysqld_safe,它会抛出以下内容:

2018-01-24T04: 25: 33.852181Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2018-01-24T04: 25: 33.857404Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file do not exists.

该目录不存在,所以我继续创建它:

sudo mkdir -p /var/run/mysqld
sudo chown mysql: mysql /var/run/mysqld
sudo mysqld_safe

他向控制台抛出以下内容:

2018-01-24T04: 27: 29.816902Z mysqld_safe 记录到“/var/log/mysql/error.log”。 2018-01-24T04: 27: 29.870025Z mysqld_safe 使用来自 /var/lib/mysql 的数据库启动 mysqld 守护进程 nohup/usr/sbin/mysqld--basedir=/usr--datadir=/var/lib/mysql--plugin-dir=/usr/lib/mysql/plugin--user=mysql--log-error=/var /log/mysql/error.log --pid-file = /var/run/mysqld/mysqld.pid --socket = /var/run/mysqld/mysqld.sock --port = 3309

我再次启动服务并扔给我:

Job for mysql.service failed because of the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

我搜索日志并出现以下内容:

2018-01-24T04: 30: 11.601843Z 0 [System] [MY-010116] /usr/sbin/mysqld (mysqld 8.0.4-rc-log) starting as process 9140 ...
2018-01-24T04: 30: 12.001705Z 1 [ERROR] [MY-011096] No data dictionary version number found.
2018-01-24T04: 30: 12.002121Z 0 [ERROR] [MY-010020] Data Dictionary initialization failed.
2018-01-24T04: 30: 12.002232Z 0 [ERROR] [MY-010119] Aborting

我可以做些什么来启动服务?我已经查看了 /var/lib/ mysql 目录并且有数据库。

【问题讨论】:

遇到了同样的问题:bugs.mysql.com/bug.php?id=89372。请注意,不支持升级(请参阅 8.0.4 的发行说明) 感谢您指出错误。那么从我看到的情况来看,这个问题是没有办法解决的。 显然不是。我确实尝试了一些技巧,但我现在继续使用新的 8.0.4。 同样的问题兄弟,我要回到 5.7.x :( 等待稳定的 v8 【参考方案1】:

降级到 8.0.3 没有用,因为 mysqld 拒绝启动:

2018-02-22T02:41:16.614370Z 1 [ERROR] InnoDB: Unsupported redo log format. The redo log was created with MySQL 8.0.4. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading-downgrading.html
2018-02-22T02:41:16.614425Z 1 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2018-02-22T02:41:17.215253Z 1 [ERROR] Failed to initialize DD Storage Engine
2018-02-22T02:41:17.216179Z 0 [ERROR] Data Dictionary initialization failed.
2018-02-22T02:41:17.216216Z 0 [ERROR] Aborting

我首先备份了/var/lib/mysql 数据目录(以防后续步骤破坏任何内容),然后在/etc/mysql/my.cnf[mysqld] 部分设置innodb_force_recovery = 6,从而设法取回我的数据(请参阅docs),启动 mysqld,然后使用mysqldump 进行备份。之后我建立了一个新的 mysql 服务器并在那里导入了转储。

【讨论】:

以上是关于MySQL 8.0 找不到数据字典版本号的主要内容,如果未能解决你的问题,请参考以下文章

InnoDB体系结构---物理存储结构

mysql字符串转换成字典

MySQL 8.0数据字典有什么变化

再见了,frm,MySQL 8.0全新字典缓存

MySQL 8.0新特性

MySQL 8.0新特性